Python 函数

一、函数的定义

#语法
def 函数名(参数1,参数2,参数3,...):  # ---》 def ____ (): 是语法,必须要有。 函数名 是一个变量名,指向 函数代码的内存地址,必须要有。参数可以省略
    '''注释'''  # ---》 默认None,可以没有
    函数体  # ---》 默认None,可以pass
    return 返回的值  # ---》 默认None,可以没有
 
#函数名要能反映其意义
 
 

一、函数的参数

1.形参(形式参数):相当于变量名;是定义函数阶段定义的参数。

a.位置形参

在函数定义阶段,按照从左到右的顺序依次定义的“变量名“,必须被传值,多一个不行,少一个也不行。

b. 默认形参

在函数定义阶段,已经被赋值的形参,在函数调用阶段可以不赋值。def func(x=3):

与位置形参混用是,默认形参要在位置形参的右边,  error: non_default argument follows default argument

虽然默认值可以被指定为任意数据类型,但是不推荐使用可变类型。

2.实参(实际参数):相当于变量值;是在调用函数阶段传入的值。

a.位置实参

在函数调用阶段,按照从左到右的顺序依次传入的值,与按照顺序与形参一一对应。

b.关键字实参

- 在函数调用阶段,按照key = value 的形式传入的值,知名道姓的给某个形参传值,完全不用考虑形参的顺序。

- 与位置实参混用的时候,位置实参必须放在关键字实参前。error :positional argument follows keyword argument.

- 不能给同一个形参重复传值

 

c.可变长度参数

- 可变长度参数指的是在调用函数时,传入的实参的个数是不固定的。

- 而实参是用来给形参赋值的,所以对应着,针对溢出的实参必须有对应的形参来接收

- 有一种形参格式*args 用来接收溢出的位置实参,

-- f(x,*args)---f(1,2,3,3) .多出来的(2,3,3)会被* 处理成元祖,传给变量args, args = (2,3,3) 

-- * 可以用在实参中,f(x,y,z) --- f(*[1,2,3]) = f(1,2,3).. * 会把列表中的元素变成 一个个位置实参,按顺序传给位置形参

--有一种形参格式**kwargs 用来接收溢出的关键字实参

-- f(x,**kwargs)--f(x=1,y=2,z=3) .多出来的(y=2,z=3)会被* 处理成字典{“y":2,”z":3},传给变量kwargs, kwargs = {“y":2,”z":3}

-- ** 可以用在实参中,f(x,y,z) --- f(* {'x':1,'y':2,”z":3}) = f(x=1,y=2,z=3).. 8* 会把字典中的元素变成 一个个关键字实参,传给对应的形参

4.函数调用时,将值的内存地址绑定到变量名上,函数调用结束,解除绑定。

a.这种绑定关系只能在函数体内使用

b.这种绑定关系在调用函数时生效,结束调用后解除

 

posted @ 2020-07-24 17:13  正在学Python  阅读(212)  评论(0编辑  收藏  举报