Python 函数



  • Python 函数

    函数是仅在调用时运行的代码块。您可以将数据(称为参数)传递给函数。函数可以返回数据。
  • 创建一个函数

    在Python中,使用 def 关键字定义函数:
    循环浏览“banana”一词中的字母:
    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")
    
    
  • 形参和实参

    术语形参实参都称为参数可用于同一事物:传递给函数的信息。
    从函数的角度来看:形参是函数定义中括号内列出的变量。实参是调用它时发送给函数的值。
  • 参数个数

    默认情况下,必须使用正确数量的参数调用函数。这意味着如果您的函数需要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参数

    您还可以使用key = value语法发送参数。 这样,参数的顺序无关紧要。
    def my_function(child3, child2, child1):
      print("The youngest child is " + child3)
    
    my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
    
    
    在Python文档中,“key参数”通常简称为kwargs。
  • 任意key参数,** kwargs

    如果您不知道将传递给您的函数多少个key参数,请在函数定义中的参数名称前添加两个星号**:。这样,函数将接收参数字典,并可以相应地访问各项:
    如果关键字参数的数量未知,请在参数名称前添加一个双星号**
    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作为参数发送,则到达函数时仍将是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))
    
    
  • pass声明

    函数定义不能为空,但是如果由于某种原因您有一个函数不包含任何内容的定义,请在语句中放入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)