Python-详解函数
今天的内容:(详解函数)
def func(a, b): #站在函数定义的角度上:位置参数:必须传的参数
print(a, b)
# 站在调用函数的角度上
func(1, 2) #按照关键字传参
func(b=1, a=2) #按照关键字传参
func(1, b=2) #混用:必须先按照位置传参,再按照关键字传参
# 站在定义函数的角度上-默认参数
def welcome(name, sex="male"): #sex默认参数
print('welome,%s,sex: %s' % (name, sex))
welcome("alex")
welcome("wusri")
welcome("小红", "female")
def age(age, my_age = 18):
if age > my_age:
return False
else:
return True
def age(a1, a2 = 18):
print(a1, a2)
a2 = 20
age(10)
小总结:
默认参数
是可以不传的参数
如果不传默认是设置的默认值,如果传就用传入的值
默认的值是在定义阶段就确定了
默认参数的陷阱:针对可变的数据类型
# 动态参数
def my_sum(a, b, c):
sum_ret = a+b+c
return sum_ret
print(my_sum(1, 2, 3))
def my_sum(*args):
count_sum = 0
for i in args:
count_sum +=1
return count_sum
print(my_sum(1, 2, 3, 4, 5))
l = [1, 2, 3, 4]
print(my_sum(*l))
动态参数
站在函数定义的角度上:*做聚合用,讲一个一个的参数组合成一个元祖
站在函数调用的角度上:*做打散用,讲一个列表或者元祖打散成多个参数
*只针对按位置传参
# **动态参数,接受按关键字传递过来的参数,组织成一个字典
def demo4(**kwargs):
print(kwargs)
demo4(a=1, b=2, c=3)
d = {'a': 1, 'b': 2, 'c': 3}
demo4(**d)
# 站在传参角度:按位置 按关键字
def demo5(*args,**kwargs):
print(args)
print(kwargs)
demo5(1, 2, 3, a=10, b=20) #必须按照
t = (1, 2, 3)
d = {'a': 10, 'b': 20}
demo5(*t, **d)
站在函数定义的角度:所有的参数都是形式参数
位置参数
默认参数
动态参数:*args , **kwargs
站在函数调用的角度上:所有的参数都是实际参数
按照位置传
按照关键字传
混用:按照位置必须在关键字传参之前
def func(位置参数1, 位置参数2,*args, 默认参数=10,**kwargs):
print(位置参数1,位置参数2)
print(默认参数)
print(args)
print(kwargs)
func(1, 2, 3, 4, 5, 默认参数="hahah", a=10, b=20)
func(1, 2, 3, 4, 5, a=10, b=20)
def f(*args,**kwargs):
#这里接收的参数个数不确定的时候
动态传参:*args,**kwargs组合在一起可以hold 100所有的参数
def func(位置参数1,位置参数2,默认参数 =10,*args, **kwargs):
print(位置参数1,位置参数2)
print(默认参数)
print(args)
print(kwargs)
# func(1,2,3,4,5,默认参数="hahah",a=10,b=20)
func(1,2,3,4,5,a=10,b=20)
#位置传参
def func(x,y,z):
print(x,y,z)
def fun_inner(a,b,c):
print("func_inner", a,b,c)
fun_inner(x,y,z)
func(7,8,9)
以上是今天的内容

浙公网安备 33010602011771号