Python 函数
搞懂Python函数的定义与调用
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
函数定义
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
函数内容以冒号起始,并且缩进。
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
Python 定义函数使用 def 关键字,一般格式如下:
def 函数名(参数列表):
# 实现特定功能的多行代码
[return [返回值]]
其中,用 [] 括起来的为可选择部分,即可以使用,也可以省略。
不建议读者使用 a、b、c 这类简单的标识符作为函数名,函数名最好能够体现出该函数的功能。
形参列表:设置该函数可以接收多少个参数,多个参数之间用逗号( , )分隔。
[return [返回值] ]:整体作为函数的可选参参数,用于设置该函数的返回值。也就是说,一个函数,可以用返回值,也可以没有返回值。
注意:在创建函数时,即使函数不需要参数,也必须保留一对空的“()”。
下面是函数不带参数的实例:
def animal():
animal = ["cow","dog","cat"]
return animal
下面是函数带参数的实例:
def animal(param):
if (param == "cow"):
print("param is cow")
函数调用
定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。
def animal(param):
if (param == "cow"):
print("param is cow")
animal("cow");
执行结果:
参数
必需参数
关键字参数
默认参数
不定长参数
必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。调用函数,你必须传入一个参数,像上面调用animal()函数一样不然会出现语法错误:
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
def animal(param1,param2):
if (param1 == "cow"):
print("param1 is cow")
animal(param2="cat",param1="cow");
执行结果:
调用函数时,如果没有传递参数,则会使用默认参数。以下实例中如果没有传入 param1 参数,则使用默认值:
def animal(param="cow"):
if (param == "cow"):
print("param is cow")
animal();
执行结果:
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。基本语法如下:
def functionname([formal_args,] *var_args_tuple ):
function_suite
return ([expression])
def animal(arg1, *vartuple):
print(arg1)
print(vartuple)
animal("cow","cat","dog","lion");
执行结果:
cow
('cat', 'dog', 'lion')
还有一种就是参数带两个星号 **基本语法如下:
def functionname([formal_args,] **var_args_dict ):
function_suite
return ([expression])
加了两个星号 ** 的参数会以字典的形式导入。
def animal(arg1, **vardict):
print(arg1)
print(vardict)
animal("cow",a="cat",b="dog",c="lion");
执行结果:
cow
{'a': 'cat', 'b': 'dog', 'c': 'lion'}
注意:声明函数时,参数中星号 * 可以单独出现,单独出现星号 * 后的参数必须用关键字传入。
匿名函数
python 使用 lambda 来创建匿名函数。
所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。
lambda 只是一个表达式,函数体比 def 简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
lambda 函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
如下实例:
sum = lambda arg1, arg2: arg1 + arg2
print("相加后的值为 : ", sum( 20, 20 ))
print("相加后的值为 : ", sum( 10, 20 ))
执行结果:
return语句
return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,以下实例演示了 return 语句的用法:
如下实例:
def animal():
animal = ["cow","dog","cat"]
return animal
# 调用animal函数>
ret = animal()
print("函数 : ", animal())
执行结果:
函数 : ['cow', 'dog', 'cat']
递归调用
递归是指函数能够调用自身,递归是一种常见的数学和编程概念。
如下实例:
def recursion(k):
if (k > 0):
result = k + recursion(k-1)
print(result)
else:
result = 0
return result
recursion(6)
执行结果:
Python中的函数是什么?
在Python中,函数是一组执行特定任务的相关语句。
函数有助于将我们的程序分解为较小的模块化块。随着我们的计划越来越大,功能使其变得更加有组织和可管理。
此外,它避免了重复,并使代码可重复使用。
如何在python中调用函数?
定义函数后,我们可以从另一个函数,程序甚至Python提示符中调用它。要调用函数,我们只需键入带有适当参数的函数名称即可。