函数的参数
1 形参和实参
函数的参数:在定义函数时,可以再函数名后()中定义数量不等的形参,注意可以有也可以没有,可有一个也可有多个,多个形参之间用逗号隔开
形参(形式参数):定义形参就相当于在函数内部声明了变量,但是并不赋值
实参(实际参数):在函数定义时指定了形参,在调用的时候也必须传递实参,实参会赋值给对应的形参
# 定义函数时指定形参
def fn(a,b):
print("a=",a)
print("b=",b)
# 调用函数时,来传递实参
fn(10,20)
fn(666,333)
# 求任意两个数的和
def sum1(a,b):
print(a,"+",b,"=",a+b)
sum1(111,222)
总结:定义函数时叫形参,调用函数时叫实参
定义了多少个形参就必须传递多少个实参
2 参数的传递方式
2.1 默认值参数
def fn(a, b, c=10):
print("a=", a)
print("b=", b)
print("c=", c)
fn(1,2,3)
a= 1
b= 2
c= 3
def fn(a, b, c=10):
print("a=", a)
print("b=", b)
print("c=", c)
fn(1,2)
a= 1
b= 2
c= 10
2.2 位置参数和关键字参数
1.位置参数
def ms(年龄,姓名,手机号,qq号,微信号,国家,省份。。。。)
ms()
2.关键字参数
可以不按照形参定义的顺序来传递,而是直接根据参数名来传递参数
def fn(a, b, c):
print("a=", a)
print("b=", b)
print("c=", c)
fn(b=1,c=3,a=2)
a= 2
b= 1
c= 3
fn(1,2,c=20) #1,2是位置参数,c=20是关键字参数
注意:混合使用关键字和位置参数的时候,位置参数必须在关键字参数的前面
可以混着写,但是必须把位置参数写在关键字参数前面
3 实参的类型
def fn2(a):
print("a=",a)
a = 123
fn2(a) # 实参不一定非得传值,也可以传变量
实参可以传递任意类型,什么都行,啥都行
def fn(a, b, c):
print("a=", a)
print("b=", b)
print("c=", c)
# fn(b=1,c=3,a=2)
fn(1,2,c=20) #1,2是位置参数,c=20是关键字参数
def fn2(a):
print("a=",a)
# b= True
# b='hello'
# b = [1,2,3]
b = fn
fn2(b)
4 函数的可变参数
4.1 *args
可变参数也可以叫做不定长参数
*args是将所有的实参保存到一个元组中
def sum1(*a):
print(a) #()
print(type(a)) #<class 'tuple'>
sum1()
sum1(1,2,3,4,5) #(1, 2, 3, 4, 5)
*a能接收所有的实参,并且将实参保存到一个元组中,这个操作其实就叫做装包
# 任意个数的和
def sum1(*a):
result = 0
for i in a:
result+=i
print(result)
sum1(1)
sum1(1,2)
sum1(1,2,3,4,5,7,8,9,1,4,5,5)
1
3
54
1.带星号的形参只能有一个
2.带星号的参数可以和其他的参数配合使用,但是要写在最后面
def fn(a,b,*c):
print("a=",a)
print("b=",b)
print("c=",c)
fn(1,2,4,5,6,7,8,9,10)
a= 1
b= 2
c= (4, 5, 6, 7, 8, 9, 10)
def fn(*a,b,c):
print("a=",a)
print("b=",b)
print("c=",c)
fn(1,2,4,5,6,7,8,9,10,b=4,c=3)
a= (1, 2, 4, 5, 6, 7, 8, 9, 10)
b= 4
c= 3
命名潜规则是*args
4.2 **kwargs
带一星号的形参有一个弊端,就是只能接收位置参数
def fn(**args):
print("args=",args)
print(type(args))
fn(a=1,b=2,c=3)
args= {'a': 1, 'b': 2, 'c': 3}
<class 'dict'>
**kwargs
是将所有的实参保存到一个字典中
总结:
**形参可以接收任意的关键字参数,会将这些参数统一保存到一个字典中,字典的键就是参数的名字,字典的值就是参数的值
注意:
**形参,也是只能有一个,并且必须写在所有参数的最后,它必须得是最后一个,命名潜规则是**kwargs
标签:传参,12,形参,参数,def,print,实参,fn
From: https://blog.csdn.net/weixin_70987470/article/details/141059655