云计算百科
云计算领域专业知识百科平台

Python进阶:函数篇

目录

前言

一、函数的基本定义与调用

1. 函数定义

2. 函数调用

二、函数的参数

1. 位置参数(必选参数)

2. 关键字参数

3. 默认参数

4. 可变参数(*args)

5. 关键字可变参数(**kwargs)

三、函数的返回值

四、函数的文档字符串(Docstring)

五、函数的作用域

六、匿名函数(lambda)

七、高阶函数

八、函数的装饰器(Decorator)

总结


前言

函数是Python编程中组织代码的基本单元,将特定功能封装为可重复调用的模块。通过函数可以实现代码复用、逻辑抽象和问题分解,提升程序的可读性和可维护性。

一、函数的基本定义与调用

1. 函数定义

使用 def 关键字定义函数,基本语法:

def 函数名(参数列表):
"""函数文档字符串(可选)"""
函数体(执行的代码)
return 返回值(可选)

示例:

def greet(name):
"""向指定名称的人打招呼"""
return f"Hello, {name}!"

2. 函数调用

通过函数名加括号调用函数:

message = greet("Alice")
print(message) # 输出: Hello, Alice!

二、函数的参数

Python 函数的参数类型丰富,主要包括以下几种:

1. 位置参数(必选参数)

必须按照顺序传递的参数,数量和位置需与定义一致:

def add(a, b):
return a + b

print(add(3, 5)) # 输出: 8(3传给a,5传给b)

2. 关键字参数

调用时指定参数名,可忽略顺序:

print(add(b=5, a=3)) # 输出: 8(明确指定a=3, b=5)

3. 默认参数

定义时指定默认值,调用时可省略:

def greet(name, prefix="Hello"):
return f"{prefix}, {name}!"

print(greet("Bob")) # 输出: Hello, Bob!(使用默认prefix)
print(greet("Bob", "Hi")) # 输出: Hi, Bob!(覆盖默认值)

注意:默认参数必须放在位置参数之后。

4. 可变参数(*args)

接收任意数量的位置参数,以元组形式存储:

def sum_numbers(*args):
return sum(args)

print(sum_numbers(1, 2, 3)) # 输出: 6
print(sum_numbers(10, 20, 30, 40)) # 输出: 100

5. 关键字可变参数(**kwargs)

接收任意数量的关键字参数,以字典形式存储:

def print_info(** kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")

print_info(name="Alice", age=30, city="New York")
# 输出:
# name: Alice
# age: 30
# city: New York

三、函数的返回值

  • 函数通过 return 语句返回结果,执行到 return 后函数立即结束。
  • 若没有 return 或 return 后无值,默认返回 None。
  • 可返回多个值,实际以元组形式返回: def get_name_and_age():
    return "Alice", 30 # 等价于 return ("Alice", 30)

    name, age = get_name_and_age() # 自动解包
    print(name, age) # 输出: Alice 30

四、函数的文档字符串(Docstring)

用于解释函数功能,可通过 help() 函数或 .__doc__ 属性查看:

def area(radius):
"""计算圆的面积
参数:
radius: 圆的半径
返回:
圆的面积(π×r²)
"""
import math
return math.pi * radius **2

print(area.__doc__) # 打印文档字符串
help(area) # 更友好的格式显示帮助

五、函数的作用域

变量的作用域分为: 1.** 局部变量 :函数内部定义,仅在函数内有效。 2. 全局变量 **:函数外部定义,整个模块有效。若需在函数内修改全局变量,需用 global 声明:

count = 0 # 全局变量

def increment():
global count # 声明使用全局变量
count += 1

increment()
print(count) # 输出: 1

3.** 非局部变量(nonlocal)**:用于嵌套函数中,修改外层函数的变量:

def outer():
x = 10
def inner():
nonlocal x # 声明使用外层函数的x
x += 5
inner()
return x

print(outer()) # 输出: 15

六、匿名函数(lambda)

用 lambda 关键字定义的简短匿名函数,语法:lambda 参数: 表达式

add = lambda a, b: a + b
print(add(3, 5)) # 输出: 8

# 常用于高阶函数(如sorted、map等)
numbers = [(2, 5), (1, 3), (4, 1)]
sorted_numbers = sorted(numbers, key=lambda x: x[1]) # 按元组第二个元素排序
print(sorted_numbers) # 输出: [(4, 1), (1, 3), (2, 5)]

七、高阶函数

接受函数作为参数或返回函数的函数:

# 接受函数作为参数
def apply_func(func, x, y):
return func(x, y)

print(apply_func(add, 3, 5)) # 输出: 8(add是之前定义的函数)

# 返回函数
def make_multiplier(n):
def multiplier(x):
return x * n
return multiplier

double = make_multiplier(2)
print(double(5)) # 输出: 10

八、函数的装饰器(Decorator)

用于在不修改函数代码的前提下扩展函数功能,本质是高阶函数:

def log_decorator(func):
def wrapper(*args, **kwargs):
print(f"调用函数: {func.__name__}")
result = func(*args, **kwargs)
print(f"函数返回: {result}")
return result
return wrapper

@log_decorator # 等价于 greet = log_decorator(greet)
def greet(name):
return f"Hello, {name}!"

greet("Alice")
# 输出:
# 调用函数: greet
# 函数返回: Hello, Alice!


总结

函数是 Python 编程的基础,掌握其定义、参数、返回值、作用域及高级特性(如装饰器、高阶函数),能显著提升代码质量和开发效率。合理使用函数可以使程序结构更清晰,便于维护和扩展。

赞(0)
未经允许不得转载:网硕互联帮助中心 » Python进阶:函数篇
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!