Python 函数
函数是一段代码块,只有在被调用时才会运行。
您可以将数据(称为参数)传递给函数。
函数可以返回数据作为结果。
创建函数
在 Python 中,函数使用 def 关键字定义。
示例
def my_function()
print("Hello from a function")
调用函数
要调用函数,请使用函数名后跟括号。
参数
信息可以作为参数传递给函数。
参数在函数名后,括号内指定。您可以添加任意数量的参数,只需用逗号隔开。
以下示例具有一个带有一个参数 (fname) 的函数。当函数被调用时,我们传递一个姓氏,该姓氏在函数内部使用以打印全名。
示例
def my_function(fname)
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
自己试试 »
参数在 Python 文档中通常缩写为 args。
参数还是参数?
参数和 参数这两个术语可以用于指代同一事物:传递给函数的信息。
从函数的角度来看
参数是在函数定义中括号内列出的变量。
参数是在调用函数时发送给函数的值。
参数数量
默认情况下,函数必须使用正确数量的参数进行调用。这意味着如果您的函数需要 2 个参数,您必须使用 2 个参数调用函数,不能多也不能少。
示例
此函数需要 2 个参数,并获得 2 个参数。
def my_function(fname, lname)
print(fname + " " + lname)
my_function("Emil", "Refsnes")
自己试试 »
示例
该函数需要 2 个参数,但只接收了 1 个。
def my_function(fname, lname)
print(fname + " " + lname)
my_function("Emil")
自己试试 »
任意参数,*args
如果不知道将向函数传递多少参数,请在函数定义中的参数名前添加一个 *
。
这样,函数将接收一个元组参数,并且可以相应地访问这些项目。
示例
如果参数数量未知,请在参数名前添加一个 *
def my_function(*kids)
print("最小的孩子是 " + kids[2])
my_function("Emil", "Tobias", "Linus")
自己试试 »
任意参数在 Python 文档中通常缩写为*args。
关键字参数
您也可以使用键 = 值语法发送参数。
这样,参数的顺序就不重要了。
示例
def my_function(child3, child2, child1)
print("最小的孩子是 " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
自己试试 »
短语关键字参数在 Python 文档中通常缩写为kwargs。
任意关键字参数,**kwargs
如果不知道将向函数传递多少关键字参数,请在函数定义中的参数名前添加两个星号:**
。
这样,函数将接收一个字典参数,并且可以相应地访问这些项目。
示例
如果关键字参数的数量未知,请在参数名前添加两个 **
def my_function(**kid)
print("他的姓是 " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
自己试试 »
任意关键字参数在 Python 文档中通常缩写为**kwargs。
默认参数值
以下示例演示如何使用默认参数值。
如果我们不带参数调用函数,它将使用默认值。
示例
def my_function(country = "Norway")
print("我来自 " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
自己试试 »
传递列表作为参数
您可以将任何类型的数据作为参数发送给函数(字符串、数字、列表、字典等),它在函数内部将被视为相同的数据类型。
例如,如果将列表作为参数发送,它在到达函数时仍然是列表。
示例
def my_function(food)
for x in food
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
自己试试 »
返回值
要让函数返回一个值,请使用 return
语句。
示例
def my_function(x)
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
自己试试 »
pass 语句
function
定义不能为空,但如果出于某种原因,您的 function
定义没有内容,请放入 pass
语句以避免出现错误。
仅限位置参数
您可以指定函数只能具有位置参数,或只能具有关键字参数。
要指定函数只能具有位置参数,请在参数后添加 , /
如果没有 , /
,即使函数期望位置参数,您实际上也可以使用关键字参数。
但添加 , /
后,如果尝试发送关键字参数,则会收到错误。
仅限关键字参数
要指定函数只能具有关键字参数,请在参数之前添加 *,
如果没有 *,
,即使函数期望关键字参数,您也可以使用位置参数。
但添加 *, /
后,如果尝试发送位置参数,则会收到错误。
组合仅限位置和仅限关键字
您可以在同一个函数中组合两种参数类型。
任何位于 / ,
之前的参数都是仅限位置的,任何位于 *,
之后的参数都是仅限关键字的。
递归
Python 也接受函数递归,这意味着已定义的函数可以调用自身。
递归是常见的数学和编程概念。这意味着一个函数调用自身。这样做的优点是可以循环遍历数据以达到结果。
开发人员应非常小心递归,因为很容易不小心编写一个永不终止的函数,或者一个使用过量内存或处理器功率的函数。但是,如果编写正确,递归可以成为一种非常高效且数学上优雅的编程方法。
在本示例中,tri_recursion() 是我们定义的用于调用自身(“递归”)的函数。我们使用 k 变量作为数据,每次递归时都会递减(-1)。当条件不再大于 0 时,递归结束(即当它为 0 时)。
对于新开发人员来说,可能需要一些时间才能弄清楚这到底是如何工作的,最好的方法是通过测试和修改它来弄清楚。
示例
递归示例
def tri_recursion(k)
if(k > 0)
result = k + tri_recursion(k - 1)
print(result)
else
result = 0
return result
print("\n\n递归示例结果")
tri_recursion(6)
自己试试 »