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)