专栏名称: 果汁焗酱油
酱油君私人图书馆:定期更新果汁局公益讲座直播地址、课件及视频资源;不定期更新学习笔记,随心情发布酱油君的碎碎念。
目录
相关文章推荐
洞见  ·  为什么建议你买几十元的衣服? ·  2 天前  
高山流水的心语屋  ·  东拉西扯:第一名与最后一名同学的不同人生 ·  昨天  
高山流水的心语屋  ·  东拉西扯:第一名与最后一名同学的不同人生 ·  昨天  
青年文摘  ·  今天,武汉的鲜花都被抢光了 ·  3 天前  
51好读  ›  专栏  ›  果汁焗酱油

敲代码系列 | Python3的自定义函数

果汁焗酱油  · 公众号  ·  · 2020-12-08 06:30

正文

Python3相关的旧笔记都在上面👆这个专辑里

本期要点:

Python中如何自定义函数。



自定义函数的规则

自定义函数的规则包括:

  • 代码块以 def 开头,后接自定义函数名和圆括号“ ()

  • 参数和自变量应当放在圆括号内

  • 函数体以冒号起始,并且缩进

  • 函数体用 return+ 表达式结束,并返回一个值,return不带表达式相当于返回None

自定义函数定义后,就可以像内置函数一样进行调用。例如:

emmm...酱油君把Give写成了Five,莫非是想运行之前先来个Give me Five?



函数的参数类型

在调用函数时,使用的参数类型有4种,分别是 必需参数、关键字参数、默认参数、不定长参数


1. 必需参数

函数调用时的参数必需与声明时的参数一样。如果没有输入参数,或输入了多个数,都会在Shell或者File页面显示报错信息。


2. 关键字参数

调用函数时,允许函数调用时参数的顺序 与声明 时不一致,因为Python解释器能用 参数名匹配参 数值

例如,在第一次调用时,是按照参数声明顺序的,没有使用参数名;在第二次调用时,没有按照参数声明顺序,而是使用了参数名。两次调用输入的结果是一样的。第三次调用时,没有输入任何参数名或参数值,在Shell页面显示了报错信息。


3. 默认参数

在调用函数时,如果没有传递参数,就会使用默认的参数。需要注意的是,在圆括号中定义参数时, 默认参数必须放 在最后 ,否则Python会在File中报错。

例如,在第一次调用函数时,按照函数声明的参数名顺序直接给出了参数值;在第二次调用时,通过关键字给出了参数值;第三次调用时,没有给出性别和部门的参数值,于是程序输出了默认的性别为男、部门为研发部门的值。


4. 不定长参数

当函数需要处理比声明时更多的参数,就需要用到不定长参数。不定长参数在声明时不会命名。在必需参数之后, 加一 个星号* 的参数会以元组(tuple)的形式存放所有未命名的变量参数。 加两个星号** 的参数会以字典的形式存放所有未命名的变量参数。

例如,设置name为必需参数,以一个星号*声明tup1,以元组的形式存放可变参数。


函数的参数更改

函数中的变量是没有类型的,但是它对应的对象是有类型的。 例如,变量x可以被赋值为字符串(x='abcdefg'),也可以被赋值为一个列表(x=[a,b,c,d,e,f,g])。 变量x仅仅是一个指针,一个对象的引用。 变量x可以指向任何类型的对象。


1. 不可更改对象

在Python中, 字符串、元组和数 值型 是不可更改的对象 。即,在自定义函数进行更改并调用后,仍然维持原来的值。

例如,在下面的代码中,b的初始值是2,在自定义函数Change中会将b重新赋值为3。函数调用结束后,输入b的值,仍然是2。


2. 可更改对象

在Python中, 列表、字典是可以更改的对象 。即,在自定义函数进行更改并调用后,仍然维持原来的值。

例如,在下面的代码中,b的初始值是[200,300,600],在自定义函数Change中会利用append方法将b增加一个列表项1000。函数调用结束后,输入b的值,变成了[200,300,600,1000]。



匿名函数

匿名函数不需要使用def语句加函数名的形式来定义函数,而是使用 lambda 来创建匿名函数。lambda的主体是一个表达式,而不是代码块,因此只能封装比较简单的逻辑,且不能够访问自己参数列表之外或者全局命名空间里的参数。

lambda函数只包含一个语句,具体为: lambda arg1,arg2,...,argn:expression
例如,如下的lambda函数,同样实现了求正弦和余弦之和的平方:







请到「今天看啥」查看全文