python基础部分-2
1. 函数的定义
在 Python 中,函数是通过 def
关键字定义的。函数可以接受输入参数并返回输出结果。
基本语法
def function_name(parameters):
"""Docstring: 描述函数的功能"""
# 函数体
return value # 可选
示例
def greet(name):
"""打印问候信息"""
print(f"Hello, {name}!")
2. 函数的调用
定义函数后,可以通过函数名和括号来调用它,并传递必要的参数。
示例
greet("Alice") # 输出: Hello, Alice!
3. 参数
3.1 位置参数
位置参数是最常见的参数类型,调用时根据位置传递。
示例
def add(a, b):
return a + b
result = add(3, 5) # result = 8
3.2 关键字参数
可以在调用函数时使用关键字参数,指定参数名。
示例
def introduce(name, age):
"""介绍一个人"""
print(f"My name is {name} and I am {age} years old.")
introduce(age=30, name="Bob") # 输出: My name is Bob and I am 30 years old.
3.3 默认参数
可以为参数设置默认值,如果调用时未提供该参数,则使用默认值。
示例
def greet(name, greeting="Hello"):
"""打印问候信息,带有默认问候语"""
print(f"{greeting}, {name}!")
greet("Alice") # 输出: Hello, Alice!
greet("Bob", "Hi") # 输出: Hi, Bob!
3.4 可变参数
使用 *args
和 **kwargs
可以接收可变数量的位置参数和关键字参数。
*args
:接收任意数量的位置参数,作为元组。**kwargs
:接收任意数量的关键字参数,作为字典。
示例
def print_args(*args):
"""打印所有位置参数"""
for arg in args:
print(arg)
print_args(1, 2, 3) # 输出: 1 2 3
def print_kwargs(**kwargs):
"""打印所有关键字参数"""
for key, value in kwargs.items():
print(f"{key}: {value}")
print_kwargs(name="Alice", age=25) # 输出: name: Alice age: 25
4. 返回值
使用 return
语句返回函数的结果。如果没有 return
,函数将返回 None
。
示例
def multiply(a, b):
"""返回两个数的乘积"""
return a * b
result = multiply(4, 5) # result = 20
多个返回值
函数可以返回多个值,返回值会被打包成一个元组。
示例
def min_max(numbers):
"""返回列表中的最小值和最大值"""
return min(numbers), max(numbers)
min_val, max_val = min_max([1, 2, 3, 4, 5])
print(min_val, max_val) # 输出: 1 5
5. 作用域
5.1 局部变量
在函数内部定义的变量称为局部变量,只能在该函数内部访问。
示例
def my_function():
x = 10 # 局部变量
print(x)
my_function() # 输出: 10
# print(x) # 会引发错误: NameError: name 'x' is not defined
5.2 全局变量
在函数外部定义的变量称为全局变量,可以在函数内部访问。
示例
y = 20 # 全局变量
def my_function():
print(y)
my_function() # 输出: 20
5.3 使用 global
关键字
如果需要在函数内部修改全局变量,可以使用 global
关键字。
示例
z = 30
def my_function():
global z
z = 40 # 修改全局变量
my_function()
print(z) # 输出: 40
5.4 局部与全局变量的优先级
如果在函数内部定义了与全局变量同名的局部变量,函数内部将优先使用局部变量。
示例
a = 5
def my_function():
a = 10 # 局部变量
print(a)
my_function() # 输出: 10
print(a) # 输出: 5
6. 文档字符串 (Docstring)
可以为函数添加文档字符串,描述函数的功能、参数和返回值。文档字符串使用三重引号 """
。
示例
def add(a, b):
"""
返回两个数的和。
参数:
a -- 第一个数
b -- 第二个数
返回:
两个数的和
"""
return a + b
print(add.__doc__) # 输出函数的文档字符串
7. 高阶函数
高阶函数是指接受函数作为参数或返回函数的函数。
示例
def apply_function(func, value):
"""应用给定的函数到值上"""
return func(value)
def square(x):
"""返回平方"""
return x * x
result = apply_function(square, 5) # result = 25
8. 匿名函数 (Lambda 函数)
使用 lambda
关键字可以定义匿名函数,通常用于简单的操作。
示例
add = lambda x, y: x + y
result = add(3, 5) # result = 8
使用场景
匿名函数通常用于需要短小函数的地方,例如在 map()
, filter()
, 和 sorted()
等函数中。
示例
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x ** 2, numbers)) # 使用 lambda 函数平方每个元素
print(squared) # 输出: [1, 4, 9, 16, 25]
9. 函数的嵌套
函数可以在另一个函数内部定义,这称为嵌套函数。嵌套函数可以访问外部函数的变量。
示例
def outer_function(msg):
"""外部函数"""
def inner_function():
"""内部函数"""
print(msg)
inner_function()
outer_function("Hello from the inner function!") # 输出: Hello from the inner function!
10. 函数的装饰器
装饰器是一个函数,用于在不修改函数代码的情况下扩展函数的功能。装饰器通常用于日志记录、权限检查等。
示例
def decorator_function(original_function):
def wrapper_function():
print("Wrapper executed before {}".format(original_function.__name__))
return original_function()
return wrapper_function
@decorator_function
def display():
"""显示信息"""
print("Display function executed.")
display()
# 输出:
# Wrapper executed before display
# Display function executed.