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

 

posted @ 2019-04-25 20:25  呼吸决定丶  阅读(110)  评论(0)    收藏  举报