📜  Python中的函数(1)

📅  最后修改于: 2023-12-03 15:19:28.135000             🧑  作者: Mango

Python中的函数

函数是程序中一种最常用的代码组织方式,它允许程序员将一段可重用的代码封装起来,然后在程序的不同部分调用。Python中的函数与其他语言的函数有些不同,特点如下:

  • 函数名是一个变量。在Python中,函数名实际上是一个变量名,可以像处理其他变量一样来处理函数名,比如将函数名作为参数传递给其他函数。
  • 函数返回值是可选的。Python中的函数可以没有返回值,也可以返回多个值。
  • 函数的参数可以有默认值。在定义函数时,可以为参数设置默认值,使得函数的调用更加灵活方便。
  • 函数可以返回函数对象。在Python中,函数可以像其他对象一样被当作参数传递、赋值给变量甚至返回另一个函数对象。
定义函数

在Python中,使用def关键字定义函数,语法如下:

def function_name(parameter1, parameter2, ...):
    """Docstring"""
    statement1
    statement2
    ...
    [return value]
  • function_name是函数名,遵循变量名规则。
  • parameter是函数的参数列表,用逗号分隔。
  • Docstring是可选的文档字符串,用于描述函数的作用和参数等信息。
  • statement是函数的代码主体,可以包含多条语句。
  • return value是函数返回值,可以省略。

下面是一个简单的例子:

def add(x, y):
    """Return the sum of x and y"""
    return x + y
    
result = add(3, 4)
print(result)  # Output: 7
参数传递

在Python中,函数的参数传递有两种方式:位置参数传递关键字参数传递

位置参数传递

位置参数传递就是按照函数定义顺序传递参数,调用函数时,实参与形参的位置一一对应。

def func(a, b, c):
    print(a, b, c)
    
func(1, 2, 3)  # Output: 1 2 3
关键字参数传递

关键字参数传递就是显式指定形参的名称和对应的值,调用函数时,不需要按照形参的顺序传递参数。

def func(a, b, c):
    print(a, b, c)
    
func(a=1, c=3, b=2)  # Output: 1 2 3
默认参数值

在Python中,可以为函数的形参设置默认值,当调用函数时不传递该参数则使用默认值,否则使用传递的值。

下面是一个例子:

def func(a, b=10):
    print(a, b)
    
func(5)  # Output: 5 10
func(5, 20)  # Output: 5 20
不定长参数

在Python中,可以为函数定义不定长参数,有两种方式:可变位置参数可变关键字参数

可变位置参数

可变位置参数就是在函数定义时,在形参前面加上一个*,表示该参数可以接收任意个数的实参,这些实参都会被放入一个元组中。

def func(a, b, *args):
    print(a, b, args)
    
func(1, 2, 3, 4, 5)  # Output: 1 2 (3, 4, 5)
可变关键字参数

可变关键字参数就是在函数定义时,在形参前面加上两个*,表示该参数可以接收任意个数的关键字参数,这些参数会被放入一个字典中。

def func(a, b, **kwargs):
    print(a, b, kwargs)
    
func(1, 2, x=3, y=4, z=5)  # Output: 1 2 {'x': 3, 'y': 4, 'z': 5}
匿名函数

在Python中,使用lambda关键字可以定义匿名函数,也称为lambda函数。Lambda函数可以接收任意多个参数,但只能返回一个表达式的值,不能包含多个语句。

下面是一个例子,实现了一个简单的加法操作:

add = lambda x, y: x + y
result = add(3, 4)
print(result)  # Output: 7
变量作用域

在Python中,变量的作用域有4种,分别是内置作用域全局作用域局部作用域封闭作用域

内置作用域

内置作用域是Python解释器预定义的作用域,包含一些常用的内置函数和常量,比如printsumTrue等。

全局作用域

全局作用域包含全局对象,即在程序的任何地方都可以访问的变量和函数。在模块中定义的变量和函数默认具有全局作用域。

局部作用域

局部作用域是在函数中定义的变量和参数的作用域,在函数外部无法访问。函数内部可以使用global关键字将变量声明为全局变量。

封闭作用域

封闭作用域是Python独有的作用域,指的是函数中嵌套函数的作用域。内层函数可以访问外层函数中的变量,但是外层函数不能访问内层函数中的变量。

结语

Python中的函数是编程中最基本、最重要的概念之一,熟练掌握函数的定义、参数传递、变量作用域等知识对于编写高质量的Python程序至关重要。