Py学习  »  Python

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

果汁焗酱油 • 3 年前 • 252 次点击  
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函数,同样实现了求正弦和余弦之和的平方:


🚩🚩🚩
敲代码系列下期:Python3的面向对象概念

📂 Python3自学笔记

Python3的数值类型、变量与赋值

Python3的运算

Python3的IF语句和代码格式

Python3的循环语句

Python3的特征数据类型

Python3的数值函数和字符串函数

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/99979
 
252 次点击