Python/python functions
<languages />
Python函数
函数是仅在调用时运行的代码块。
您可以将数据(称为参数)传递给函数。
函数可以返回数据。
创建一个功能
在Python中,使用 def 关键词:
例
def my_function(): print("Hello from a function")
调用函数
要调用函数,请在函数名称后加上括号:
例
def my_function(): print("Hello from a function") my_function()
参数
信息可以作为参数传递给函数。
在函数名称后的括号内指定参数。您可以根据需要添加任意数量的参数,只需用逗号分隔即可。
以下示例具有一个带有一个参数(fname)的函数。调用函数时,我们传递一个名字,该名字在函数内部用于打印全名:
例
def my_function(fname): print(fname + " Refsnes") my_function("Emil") my_function("Tobias") my_function("Linus")
Arguments 通常缩短为 args 在Python文档中。
参数还是参数?
条款 parameter and argument 可以用于同一件事:传递给函数的信息。
从函数的角度来看:
参数是函数定义中括号内列出的变量。
参数是在调用时发送给函数的值。
参数数
默认情况下,必须使用正确数量的参数调用函数。这意味着,如果您的函数需要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
如果您不知道将传递给函数的参数个数,请添加一个
*
函数定义中参数名称之前。
这样,函数将收到一个 tuple 的参数,并可以相应地访问这些项目:
例
如果参数数量未知,请添加一个
*
参数名称之前:
def my_function(*kids): print("The youngest child is " + kids[2]) my_function("Emil", "Tobias", "Linus")
Arbitrary Arguments 通常缩短为 *args 在Python文档中。
关键字参数
您也可以使用 key = value 句法。
这样,参数的顺序无关紧要。
例
def my_function(child3, child2, child1): print("The youngest child is " + child3) my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
词组 Keyword Arguments 通常缩短为 kwargs 在Python文档中。
任意关键字参数,** kwargs
如果您不知道将要传递到函数中的关键字参数的数量,请添加两个星号:
**
函数定义中参数名称之前。
这样,函数将收到一个 dictionary 的参数,并可以相应地访问这些项目:
例
如果关键字参数的数量未知,请添加一个双精度
**
参数名称之前:
def my_function(**kid): print("His last name is " + kid["lname"]) my_function(fname = "Tobias", lname = "Refsnes")
Arbitrary Kword Arguments 通常缩短为 **kwargs 在Python文档中。
默认参数值
下面的示例显示如何使用默认参数值。
如果调用不带参数的函数,它将使用默认值:
例
def my_function(country = "Norway"): print("I am from " + country) my_function("Sweden") my_function("India") my_function() my_function("Brazil")
将列表作为参数传递
您可以将参数的任何数据类型发送到函数(字符串,数字,列表,字典等),它将在函数内部被视为相同的数据类型。
E.g.如果将列表作为参数发送,则在到达函数时仍将是列表:
例
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))
通过声明
function
定义不能为空,但是如果您出于某种原因有一个
function
没有内容的定义,放在
pass
语句,以避免出错。
例
def myfunction(): 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\nRecursion Example Results") tri_recursion(6)