函数:可以减少代码重用,保持一致性,可扩展性,
定义方法:def 函数名(形参):
'''功能注释'''
代码块
打印函数名时,会出现函数的内存地址。两个函数名相同时,最后一个会覆盖之前的所有函数。
过程:没有返回值的函数就是过程,默认返回None。
总结:
返回值数=0,返回None
返回值数=1,返回object
返回值数>1,返回tuple
函数一旦运行至return,则整个函数结束。函数参数必须一 一对应,否则报错。
def test(x,y,z): print(x) print(y) print(z) #位置参数,必须一 一对应 test(1,2,3) #关键字参数,无需一 一对应 test(y=2,x=1,z=3) #位置参数必须在关键字参数左侧,并且一 一对应 test(1,2,z=3) #参数可无,令其为None def handle(x,type=None): print(x) print(type) #默认参数,可以修改。 def handle(x,type="mysql"): print(x) print(type) handle('hello','sqlite')
参数组:** 字典 、 * 列表
#参数组,**代表 字典 *代表 列表 #列表形式传值 def test(x,*args) print(x) print(args) test(1,2,3,4,5) =====》1 (2,3,4,5) test(1,{'name','alex'}) =====》1 ({'name','alex'}) #加上*,会依次传给args,若是*后是字典,则会以列表形式遍历keys。 test(1,*['x','y','z']) =====》1 ('x','y','z') #字典形式传值 def test(x,**kwargs) print(x) print(kwargs) test(1,y=2,z=3) ====》1 {'y':2,"z":3}
*args不可放在**kwargs后面,但是可以放到**kwargs前面。
def test(x,*args,**kwargs): print(x) print(args,args[-1]) pirnt(kwargs,kwargs.get('y')) test(1,*[1,2,3],**{'y':1}) ====>1 (1,2,3) 3 {'y':1} 1