Python 函数:定义、调用与参数传递
一、函数定义
(一)基本语法
在 Python 里,函数定义的基本形式如下:
def function_name(parameters):
"""函数文档字符串"""
# 函数体
statement(s)
return [expression]
def:这是定义函数的关键字。function_name:即函数名,需遵循 Python 标识符的命名规则。parameters:是函数的参数,可没有参数,也能有多个参数,参数间用逗号分隔。"""函数文档字符串""":这是可选的文档字符串,用于对函数功能进行描述。statement(s):是函数体,包含了函数要执行的代码。return:是可选的,用于从函数返回值,若省略则函数默认返回None。
(二)示例
def greet(name):
"""该函数用于向传入的名字打招呼"""
print(f"Hello, {name}!")
return
二、函数调用
(一)调用方式
定义好函数后,可通过函数名加括号并传入必要参数的方式调用函数。
greet("Alice")
(二)返回值处理
若函数有返回值,可将其赋值给一个变量。
def add_numbers(a, b):
return a + b
result = add_numbers(3, 5)
print(result)
三、参数传递
(一)位置参数
位置参数是最常见的参数类型,调用函数时,实参需按照形参的顺序依次传递。
def power(base, exponent):
return base ** exponent
result = power(2, 3)
print(result)
(二)关键字参数
使用关键字参数调用函数时,可通过参数名指定传递的参数,这样就无需遵循参数的顺序。
result = power(exponent=3, base=2)
print(result)
(三)默认参数
在定义函数时,可为参数设定默认值,若调用函数时未提供该参数的值,则使用默认值。
def greet(name, greeting="Hello"):
print(f"{greeting}, {name}!")
greet("Bob")
greet("Charlie", "Hi")
(四)可变参数
*args*args用于接收任意数量的位置参数,这些参数会被封装成一个元组。
def sum_numbers(*args):
total = 0
for num in args:
total += num
return total
result = sum_numbers(1, 2, 3, 4)
print(result)
**kwargs**kwargs用于接收任意数量的关键字参数,这些参数会被封装成一个字典。
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=25, city="New York")
(五)参数组合
在函数定义中,可同时使用位置参数、默认参数、*args 和 **kwargs,但它们的顺序必须是:位置参数、默认参数、*args、**kwargs。
def example_function(a, b, c=3, *args, **kwargs):
print(f"a: {a}, b: {b}, c: {c}")
print(f"args: {args}")
print(f"kwargs: {kwargs}")
example_function(1, 2, 4, 5, 6, name="Bob", age=30)
四、函数文档字符串
(一)作用
函数文档字符串用于对函数的功能、参数、返回值等信息进行描述,方便其他开发者理解和使用函数。
(二)示例
def calculate_area(radius):
"""
此函数用于计算圆的面积。
参数:
radius (float): 圆的半径。
返回:
float: 圆的面积。
"""
import math
return math.pi * radius ** 2
可通过 __doc__ 属性访问函数的文档字符串。
print(calculate_area.__doc__)
五、函数作用域
(一)局部变量
在函数内部定义的变量属于局部变量,其作用域仅限于函数内部。
def test_function():
local_variable = 10
print(local_variable)
test_function()
# 下面这行代码会报错,因为 local_variable 是局部变量
# print(local_variable)
(二)全局变量
在函数外部定义的变量属于全局变量,在函数内部可以访问全局变量,但若要在函数内部修改全局变量的值,需使用 global 关键字。
global_variable = 20
def modify_global():
global global_variable
global_variable = 30
print(global_variable)
modify_global()
print(global_variable)
六、匿名函数(lambda 函数)
(一)基本语法
lambda arguments: expression
lambda 函数是一种小型的、匿名的函数,可接收任意数量的参数,但只能有一个表达式。
(二)示例
add = lambda a, b: a + b
result = add(4, 6)
print(result)
lambda 函数常用于需要一个简单函数的场合,比如作为 sorted()、map()、filter() 等函数的参数。
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers)