在本文中,您将了解函数、函数是什么、函数的语法、构成和类型。另外,您还将学习如何用Python创建函数。
在Python中,函数是一组执行特定任务的相关语句。
函数有助于将我们的程序分解为较小的模块。随着我们的项目越来越大,函数使其变得更加有组织和易于管理。
此外,它避免了重复写相同的代码,函数使代码可重复使用。
def function_name(parameters): """docstring""" statement(s)
上面显示的是由以下组件组成的函数定义。
def标记函数头开始的关键字。
用于唯一标识函数的函数名称。函数命名遵循在Python中编写标识符的相同规则。
通过其将值传递给函数的参数。它们是可选的。
冒号(:)标记函数头的结尾。
可选的文档字符串(docstring),用于描述函数的函数。
组成函数体的一个或多个有效python语句。语句必须具有相同的缩进级别(通常为4个空格)。
可选的return语句,用于从函数返回值。
def greet(name): """ 这是一个打招呼的函数, 通过name参数传递, 要打招呼的人名 """ print("Hello, " + name + ". Good morning!")
定义函数后,我们可以从另一个函数,程序甚至Python提示符中调用它。要调用函数,我们只需键入带有适当参数的函数名称即可。
>>> greet('Paul') Hello, Paul. Good morning!
注意:尝试在带有函数定义的Python程序中运行以上代码,以查看输出。
def greet(name): """ 这是一个打招呼的函数, 通过name参数传递, 要打招呼的人名 """ print("Hello, " + name + ". Good morning!") greet('Paul')
函数头之后的第一个字符串称为docstring,是文档字符串的缩写。简要说明了函数的作用。
尽管是可选的,但文档是一种良好的编程习惯。除非您记得去年今天的晚餐时间和晚餐吃什么,否则请务必记录注释您的代码。
在上面的示例中,我们在函数标头的正下方有一个文档字符串。我们通常使用三引号将文档字符串扩展为多行。该字符串可作为__doc__函数的属性供我们使用。
例如:
尝试将以下内容运行到Python shell中以查看输出。
>>> print(greet.__doc__) 这是一个打招呼的函数, 通过name参数传递, 要打招呼的人名
要了解有关Python中的文档字符串的更多信息,请访问Python Docstrings。
return语句用于退出函数并返回到调用函数的位置。
return [expression_list]
该语句可以包含一个表达式,该表达式将被求值并返回值。如果该语句中没有表达式,或者return语句本身不存在于函数中,则该函数将返回None对象。
例如:
>>> print(greet("May")) Hello, May. Good morning! None
None是返回值,因为greet()函数直接打印名称,并且没有使用return语句。
def absolute_value(num): """这个函数返回输入数字的绝对值""" if num >= 0: return num else: return -num print(absolute_value(2)) print(absolute_value(-4))
输出结果
2 4
变量的作用域是程序中可以识别该变量的部分。从函数外部看不到在函数内部定义的参数和变量。因此,它们具有本地作用域。
变量的生命周期是变量在内存中退出的时间。函数内部变量的生命周期与函数执行的时间一样长。
一旦我们从函数返回,它们就会被销毁。因此,函数无法记住其先前调用中的变量值。
这是一个示例,用于说明函数内部变量的生命周期。
def my_func(): x = 10 print("函数内部值:",x) x = 20 my_func() print("函数外部值:",x)
输出结果
函数内部值: 10 函数外部值: 20
在这里,我们可以看到x的初始值为20。即使函数my_func()将x的值更改为10,它也不会影响函数外部的值。
这是因为函数内部的变量x与函数外部的x变量不同。尽管它们具有相同的名称,但是它们是两个具有不同作用域的不同变量。
另一方面,从外部可以看到函数外部的变量。它们具有全局作用域,也就是函数内外部都可以使用该全局变量。
我们可以从函数内部读取这些值,但不能更改(写入)它们。如果要在函数外部修改变量的值,必须使用关键字global,将它们声明为全局变量。
基本上,我们可以将函数分为以下两种类型: