在Python中,函数是非常重要的一个概念,可以帮助程序员提高代码复用性和可读性。
函数是指完成特定任务的代码块,可以被多次调用,提高代码复用性。在 Python 中,函数是一种能够接受输入参数并返回输出值的可重用代码块。函数的定义以 def
关键字开头,后面紧跟着函数名和括号 ()
,函数名可以由字母、数字和下划线组成。括号内可以包含一些参数,多个参数之间用逗号 ,
分隔。其基本语法如下:
def function_name(param1, param2, ...):
statement(s)
return [expression]
其中,function_name是函数名,param1、param2是传递给函数的参数,用逗号隔开。statement(s)是要执行的语句,可以是一条或多条语句。return表达式是函数返回值。
下面是一个简单的例子,展示了如何定义和调用一个函数:
# 定义一个函数,接收两个参数
def greeting(name, message):
"""向用户问候"""
print(f"{name}, {message}")
# 调用函数,传入实参
greeting("Alice", "你好!")
输出结果:
Alice, 你好!
在Python中,函数的参数传递方式有以下两种:
1)位置参数是指按照参数顺序传递给函数的参数,这是最常见和最简单的参数传递方式。例如:
# 定义一个函数,接收两个参数
def greeting(name, message):
"""向用户问候"""
print(f"{name}, {message}")
# 调用函数,按位置参数方式传入实参
greeting("Alice", "你好!")
输出结果:
Alice, 你好!
2)关键字参数是指使用参数名来传递参数,这种方式可以不按照参数顺序传递参数。例如:
# 定义一个函数,接收两个参数
def greeting(name, message):
"""向用户问候"""
print(f"{name}, {message}")
# 调用函数,按关键字参数方式传入实参
greeting(message="你好!",name="Alice")
输出结果:
Alice, 你好!
函数可以有返回值,也可以没有返回值。如果没有明确说明返回值,则默认返回None。
下面是一个带有返回值的函数实例:
# 带有返回值的函数
def add(a, b):
return a + b
result = add(1, 2)
print(result)
输出结果:3
在Python中,变量有两种作用域:局部和全局。
1)局部变量是在函数内部定义的变量,只能在函数内部使用。例如:
# 函数内部定义的变量
def test():
x = 1
print(x)
test()
输出结果:1
2)全局变量是在函数外部定义的变量,可以在整个程序中使用。例如:
# 函数外部定义的变量
x = 1
def test():
print(x)
test()
输出结果:1
在Python中,函数的嵌套调用是指一个函数中调用了另一个函数。例如:
# 定义一个函数 greet,用于向指定的姓名打招呼
def greeting(name):
print("你好! " + name)
# 定义一个函数 introduce,用于获取用户输入的姓名并调用 greeting 函数向其打招呼
def introduce():
name = input("请输入姓名: ") # 获取用户输入的姓名
greeting(name) # 调用 greeting 函数向用户打招呼
# 调用 introduce 函数开始运行程序
introduce()
输出结果:
请输入姓名: Alice
你好! Alice
在 Python 中,函数允许接受可变数量的参数,即不确定参数个数的情况下,可以用 *args
和 **kwargs
来表示。其中,*args
表示接收任意数量的位置参数(即没有指定名称的参数),它们被视为一个元组(tuple);**kwargs
表示接收任意数量的关键字参数(即指定名称的参数),它们被视为一个字典(dictionary)。
# 定义一个接收可变数量参数的函数
def describe(*args, **kwargs):
"""描述事物"""
print(f"args = {args}")
print(f"kwargs = {kwargs}")
# 调用函数,传入位置参数和关键字参数
describe("apple", "banana", color="red", size="medium")
上面的代码定义了一个可变数量参数的函数 describe
,用于描述任意事物。该函数使用了 *args
和 **kwargs
来接收可变数量的参数,并打印它们的值。在函数体内可以对这些参数进行处理。 运行上面的代码,输出如下:
args = ('apple', 'banana')
kwargs = {'color': 'red', 'size': 'medium'}
上面的输出分别是传入的位置参数和关键字参数,被分别打包成了一个元组和一个字典。可以看出,不确定参数个数时,使用可变数量参数可以很方便地接收这些参数,并且能够自由处理。
在 Python 中,函数可以返回多个值,即多个表达式用逗号 ,
分隔。在函数调用后,可以将返回的多个值解包到多个变量中。
# 定义一个返回多个值的函数
def rectangle_area(x1, y1, x2, y2):
"""计算矩形面积和周长"""
width = abs(x1 - x2)
height = abs(y1 - y2)
area = width * height
perimeter = 2 * (width + height)
return area, perimeter
# 调用函数,解包多个返回值
a, p = rectangle_area(0, 0, 5, 3)
print(f"area = {a}, perimeter = {p}")
上面的代码定义了一个返回多个值的函数 rectangle_area
,用于计算矩形的面积和周长。该函数接收四个参数,是矩形两个对角线的坐标点。函数体内,使用绝对值函数 abs()
计算矩形的宽度和高度,进而求出面积和周长。 运行上面的代码,输出如下:
area = 15, perimeter = 16
上面的输出分别是矩形的面积和周长。可以看出,返回多个值时,函数将这些值打包成一个元组,在函数调用后可以将它们解包到多个变量中。