THE WORLD'S LARGEST WEB DEVELOPER SITE

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")
自己尝试»

在Python文档中,参数通常缩写为args



参数还是参数?

术语参数和自变量可用于同一事物:传递到函数中的信息。

从函数的角度来看:

参数是函数定义中括号内列出的变量。

参数是在调用时发送给函数的值。


参数数

默认情况下,必须使用正确数量的参数调用函数。这意味着,如果您的函数需要2个参数,则必须使用2个参数(不多也不少)来调用函数。

该函数需要2个参数,并获得2个参数:

def my_function(fname, lname):
  print(fname + " " + lname)

my_function("Emil", "Refsnes")
自己尝试»
如果尝试使用1或3个参数调用该函数,则会收到错误消息:

该函数需要2个参数,但只能得到1:

def my_function(fname, lname):
  print(fname + " " + lname)

my_function("Emil")
自己尝试»

任意参数,* args

如果您不知道将传递给您的函数多少个参数,请*在函数定义的参数名称之前添加一个

这样,函数将接收一个参数元组,并可以相应地访问各项:

如果参数个数未知,请*在参数名称前添加一个

def my_function(*kids):
  print("The youngest child is " + kids[2])

my_function("Emil", "Tobias", "Linus")
自己尝试»

在Python文档中,任意参数通常缩写为* args


关键字参数

您还可以使用key = value语法发送参数

这样,参数的顺序无关紧要。

def my_function(child3, child2, child1):
  print("The youngest child is " + child3)

my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
自己尝试»

在Python文档中,关键字自变量一词通常缩写为kwargs


任意关键字参数,** kwargs

如果您不知道将传递给您的函数多少个关键字参数,请**在函数定义的参数名称前添加两个星号:

这样,函数将接收参数字典,并可以相应地访问各项:

如果关键字参数的数量未知,请**在参数名称前添加一个双 精度:

def my_function(**kid):
  print("His last name is " + kid["lname"])

my_function(fname = "Tobias", lname = "Refsnes")
自己尝试»

在Python文档中,任意Kword参数通常缩短为** kwargs


默认参数值

下面的示例显示如何使用默认参数值。

如果调用不带参数的函数,它将使用默认值:

def my_function(country = "Norway"):
  print("I am from " + country)

my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
自己尝试»

将列表作为参数传递

您可以将参数的任何数据类型发送到函数(字符串,数字,列表,字典等),它将在函数内被视为相同的数据类型。

例如,如果您将List作为参数发送,则到达函数时仍将是List:

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)
自己尝试»