- 函数的定义与调用
def func(): # 使用关键字def定义一个函数 print('成功调用') func() #使用函数名加括号调用一个函数
- 函数的返回值
函数的返回值分为三种情况
1.无返回值
2.有一个返回值
3.有多个返回值
函数返回值可以起到结束函数的作用
def func(m): if m==1: print('成功调用,一个返回值') return 1 # 使用关键字return设置返回值 else: print('成功调用多个返回值') return 1,2,3,4 ret = func(1) # 接受返回值 print(ret) ret = func(2) # 使用一个变量接受多个返回值时,将多个返回值组成元祖 print(ret) ret1,ret2,ret3,ret4 = func(2) # 使用规定个数个变量接受返回值 print(ret1,ret2,ret3,ret4)
- 函数的形式参数、位置参数和函数的传参
函数的形式参数即在函数定义时设置的接受实际参数的参数
形式参数有四种
位置参数
动态位置参数 *args 可以接受任意多个位置参数并将他们组合为元祖
关键字参数
动态关键字参数 **kwargs 可以接受任意多个关键字参数,并将他们组合为字典、
形式参数的定义要按照位置参数,动态位置参数,关键字参数,动态关键字参数的顺序来
函数的实际参数是指在函数调用时实际传给函数的参数
实际参数分为位置参数和关键字参数
函数实际参数的传递要参照,函数形式参数的定义顺序
函数传参是指将实际参数传给位置参数
def func(a, b, *args, c='c', **kwargs): print(a, b, args, c, kwargs) func('a','b',1,2,3,4,5,c='6',dd='d',ee='e') #输出结果为a b (1, 2, 3, 4, 5) 6 {'ee': 'e', 'dd': 'd'}
- 在传参的时候可以使用*将原来的序列按顺序打散,并将序列的各个值传递给函数,或者使用**将字典打散按关键字传参
def func(a,b,c,d): print(a,b,c,d) dic = {'a':'aa','b':'bb','c':'cc','d':'dd'} func(**dic) # 使用**将字典打散,并向函数传递关键字参数 lis = ['aa', 'bb', 'cc', 'dd'] func(*lis) # 使用*将序列按顺序打散,并将序列的各个值传递给函数
如果函数参数的默认值是可变数据类型那么如果不传参数,那么就公用这个数据类型的资源
def func(l=[]): l.append(1) print(l) func() # 输出结果为[1] func() # 输出结果为[1, 1] func([]) # 输出结果为[1] func() # 输出结果为[1, 1, 1] func([]) # 输出结果为[1] func() # 输出结果为[1, 1, 1, 1]