不使用函数的情况下只能遵循面向过程的编程,即,根据业务逻辑从上到下实现功能,往往重复的功能,使得代码出现重复。
1 #最简单的函数调用 2 #由于python遵循从上到下读入内存的规律,所以函数要放到调用的前面 3 def s1(): 4 print('hello world') 5 s1()
#显示:hello world
#函数的参数传入 def s1(name): print('my name is %s'%name) s1('liguangxu') #显示:my name is liguangxu
#函数的多参数调用(实参与形参相对应) def s1(name,age,what): print('my name is %s,age is %s, is %s'%(name,age,what)) s1('liguangxu',23,'good man') #显示:my name is liguangxu,age is 23, is good man
#函数的不同位置实参的传入(需要给实参指定对应形参) def s1(name,age,what): print('my name is %s,age is %s, is %s'%(name,age,what)) s1(age=18,what='good man',name='liguangxu') #显示:my name is liguangxu,age is 18, is good man
#函数形参的默认值(含有默认值的形参必须放在最后) def s1(name,age,what='good man'): print('my name is %s,age is %s, is %s'%(name,age,what)) s1(age=18,name='liguangxu') #显示:my name is liguangxu,age is 18, is good man s1(age=18,what='bad man',name='liguangxu') #显示:s1(age=18,what='bad man',name='liguangxu')
#函数的动态参数,会将实参放入元组中 def test(*args): print(args,type(args)) test('123') #显示('123',) <class 'tuple'> #函数的动态参数,传入的实参为一组元素,将li整个列表放入元组中 def test(*args): print(args,type(args)) li=[11,22,33,45] test(li) #显示([11, 22, 33, 45],) <class 'tuple'> #传入带一个*的列表,将li列表中的每个元素放到元组中 def test(*args): print(args,type(args)) li=[11,22,33,45] test(*li) #显示:(11, 22, 33, 45) <class 'tuple'> test(*'alex') #显示:('a', 'l', 'e', 'x') <class 'tuple'> #总结:实参前加个‘*’相当于加了个for循环遍历实参的每个元素,并一一放入元组中
#动态参数形参含两个*,将键值对传入,并保存成字典的形式 def f2(**kwargs): print(kwargs) f2(n1='alex',n2=18) #显示:{'n1': 'alex', 'n2': 18} dic={'k1':'v1','k2':'v2'} f2(kk=dic)#{'kk': {'k1': 'v1', 'k2': 'v2'}} #显示{'kk': {'k1': 'v1', 'k2': 'v2'}} #万能参数 def f1(*args,**kwargs): print(args) print(kwargs) f1(11,22,33,44,55,k1='aa',k2='bb') #运行结果(11, 22, 33, 44, 55) {'k1': 'aa', 'k2': 'bb'}
#formate传参方式 #方式1 s1='i am {0},age{1}'.format('alex',18) print(s1) #显示:i am alex,age18 #方式2 s2='i am {0},age{1}'.format(*['alex',18])#传列表 print(s2) #显示i am alex,age18 #方式3 s1='i am {name}, age{age}'.format(name='alex',age=18)#字符串中name与age后面一定要加上name=‘’,age=进行指定 print(s1) #显示:i am alex, age18 #方式4 dic={'name':'alex','age':18} s2='i am {name},age{age}'.format(**dic)#传字典要加** print(s2) #显示:i am alex,age18
#传过来的形参可使用方法不能重新赋值 ,建议全局变量名需大写
#传的是引用 不是复制
def f5(a1): a1.append('123') li=[11,22,33,44] f5(li) #显示:[11, 22, 33, 44, '123']
1 #全局变量,所有的作用域,都可读,对全局变量进行【重新赋值】,需要加上global,特殊:列表,字典,可修改,不可重新赋值 2 def f1(): 3 global name#表示name为全局变量 4 name='123' 5 print(name) 6 7 name='456' 8 f1() 9 #显示:123