函数

函数

函数通过组合特定代码,实现可重复执行的特定功能。函数能提高应用的模块性,和代码的重复利用率。

函数的定义

定义语法

def  函数名():
       函数体… …

(无参函数定义)

def  函数名(参数列表):
       函数体… …

(含参函数定义)

函数代码块一def关键词开头,后接函数标识符名称和圆括号()。圆括号之间可以用于定义参数。函数内容以冒号起始,并且通过缩进控制函数体范围。return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return(或者没有return)相当于返回None。默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。(以下是定义一个计算阶乘的函数)

python 函数名 python 函数名 参数_赋值

函数的调用

调用语法

函数名()
(无参函数调用)

函数名(参数列表)
(含参方程调用)

定义一个函数只是给了函数一个名称,指定了函数里包含的参数和代码块结构而调用是通过传入实际参数使用函数得到返回值。(以调用上述阶乘函数为例)

python 函数名 python 函数名 参数_python_02


运行结果

python 函数名 python 函数名 参数_lambda表达式_03

可更改与不可更改对象

在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

(函数中的可更改与不可更改对象)

不可更改对象

在调用函数时,不可更改对象只是作为实参将值传入,并不影响对象本身。

python 函数名 python 函数名 参数_赋值_04


python 函数名 python 函数名 参数_赋值_05


可更改对象

调用函数时,会把本身传入,函数体的执行可能会改变原来的值。

python 函数名 python 函数名 参数_lambda表达式_06


python 函数名 python 函数名 参数_函数体_07

参数

必备参数

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

python 函数名 python 函数名 参数_赋值_08


python 函数名 python 函数名 参数_python_09


python 函数名 python 函数名 参数_lambda表达式_10


python 函数名 python 函数名 参数_python_11


关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

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

python 函数名 python 函数名 参数_python_12


python 函数名 python 函数名 参数_函数体_13


默认参数

调用函数时,默认参数的值如果没有传入,则被认为是默认值。

python 函数名 python 函数名 参数_lambda表达式_14


python 函数名 python 函数名 参数_python 函数名_15


不定长参数(变长参数)

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。

1)加了星号(*)的变量名会存放所有未命名的变量参数。

python 函数名 python 函数名 参数_lambda表达式_16


python 函数名 python 函数名 参数_python 函数名_17


2)加了双星号(**)不定长参数会自动转变为以参数名命名的字典。

python 函数名 python 函数名 参数_python_18


python 函数名 python 函数名 参数_python_19


lambda表达式

lambda表达式可以用来声明匿名函数,lambda函数是一种简单的,在同一行定义函数的方法,lambda函数实际生成了一个函数对象。

lambda表达式只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数的返回值。

lambda表达式的基本语法如下:

lambda arg1,arg2,arg3… : <表达式>

arg1/arg2/arg3为函数的参数,<表达式>相当于函数体,运算结果是:表达式的运算结果。

python 函数名 python 函数名 参数_赋值_20


python 函数名 python 函数名 参数_赋值_21