目录

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")
亲自试一试 »

实参通常被简写为args在 Python 文档中。



形参还是实参?

形参实参可以用于同一件事:传递到函数中的信息。

从函数的角度来看:

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

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


参数数量

默认情况下,必须使用正确数量的参数调用函数。这意味着,如果您的函数需要 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("The youngest child is " + kids[2])

my_function("Emil", "Tobias", "Linus")
亲自试一试 »

任意论点通常被缩短为*参数在 Python 文档中。


关键字参数

您还可以使用以下方式发送参数钥匙=语法。

这样参数的顺序并不重要。

示例

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

my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
亲自试一试 »

词组关键字参数通常被缩短为夸格斯在 Python 文档中。


任意关键字参数,**kwargs

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

这样该函数将收到一个字典参数,并可以相应地访问这些项目:

示例

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

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

my_function(fname = "Tobias", lname = "Refsnes")
亲自试一试 »

任意 Kword 参数通常被缩短为**夸格在 Python 文档中。


默认参数值

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

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

示例

def my_function( country = "Norway"):
  print("I am from " + 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))
亲自试一试 »

通过声明

function定义不能为空,但如果由于某种原因你有一个function没有内容的定义,放入pass声明以避免出现错误。

示例

def myfunction():
  pass
亲自试一试 »

递归

Python 还接受函数递归,这意味着定义的函数可以调用自身。

递归是常见的数学和编程概念。这意味着函数调用自身。这样做的好处是您可以循环数据以获得结果。

开发人员应该非常小心递归,因为很容易编写一个永远不会终止的函数,或者使用过量内存或处理器能力的函数。然而,如果正确编写,递归可以是一种非常高效且数学上优雅的编程方法。

在这个例子中,tri_recursion() 是我们定义的调用自身的函数 ("recurse")。我们使用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)
亲自试一试 »

通过练习测试一下

练习:

创建一个名为my_function

:
  print("Hello from a function")

开始练习