day11
函数的参数
1.实参与形参
实参:有实际意义的参数
形参:本身没有意义,有实参赋予形参值后,就具备意义。
注:1.行参就是对实参的值拷贝
2.形参与实参可重名,但代表两个不同的变量
2.实参
分为位置实参和关键字实参。
1)拿实际值进行传参
fn(10, 20) # 10 => a | 20 => b
2)拿位置实参进行传参:形参与实参进行位置一一对应,eg:一号位的实参一定传给一号位的形参
a = 100
b = 200
fn(a, b) # a:100 => a | b:200 => b
fn(b, a) # b:200 => a | a:100 => b
3)拿关键字实参进行传参:指名道姓进行传参 - 传参的过程过指名道姓形参
# 明确:形参名目前为a和b
fn(a=1000, b=2000) # a:1000 => a | b:2000 => b
fn(b=2000, a=1000) # b:2000 => b | a:1000 => a
a = 666
b = 888
# 前面的是形参名,后面的是传递的实参名
fn(a=a, b=b) # a:666 => a | b:888 => b
注:位置实参:一定按照位置,且个数要一一对应进行传参
关键字传参:指名道姓传参,个数一致位置可以改变进行传参
3.形参
六大分类:
1.无值位置形参(位置形参):可被位置与关键字实参进行传参,必须传值
2.有值位置形参(默认形参):可被位置与关键字实参进行传参,采用默认值
3.可变长位置形参:可以接受前两个没有接收完的位置实参
4.无值关键字形参:只能由关键字实参进行传参,必须传值
5.有值关键字形参:只能由关键字实参进行传参,必须传值
6.可变长关键字:接收前两个没有接收完的关键字实参
注:先位置实参,再关键字实参。位置形参和关键字形参,都按顺序传值
#1.args 和 kewags被人们定为可变长形参的变量名
2.位置形参可以由位置实参和关键字实参进行传值,遵循'无值在前,有值在后'
关键字形参只能由关键字实参进行传值,顺序可任意
3.无多余位置实参,args为空元组
没有多余的关键字实参,kwang为空字典
4.默认形参不会和可变长位置形参结合使用
4.函数的嵌套使用
在一个被调用的函数内部调用另一个函数,复用之前已定义好的函数功能,功能有重叠
def a():
b()
def b():
pass
#a的调用必须在b的声明之后
5.打散机制
def fn(*args, **kwargs):
print(args)
print(kwargs)
t = (1, 2, 3)
dic = {'a': 100, 'b': 200, 'c': 300}
# *单列容器 会打散单列容器
# **双列容器 会打散双列容器
fn(1, 2, 3, a=100, b=200, c=300) # (1, 2, 3) {'a': 100, 'b': 200, 'c': 300}
fn(*t, **dic) # (1, 2, 3) {'a': 100, 'b': 200, 'c': 300}
fn(*(1, 2, 3), **{'a': 100, 'b': 200, 'c': 300}) # (1, 2, 3) {'a': 100, 'b': 200, 'c': 300}
# 字符串也可以被打散
fn(*'abc') # ('a', 'b', 'c') {}
print(*'abc') # a b c

浙公网安备 33010602011771号