目录
在 Python 3 中,函数是一段可重复使用的代码块,它封装了一定的功能,并且可以接受输入参数、执行操作,并返回结果。函数是程序设计中的一个重要概念,使用函数可以使代码更加模块化、可读性和可维护性更强。
1. 定义函数
在 Python 中,使用 def
关键字来定义一个函数。
示例:
python
深色版本
1def greet(name):
2 """打印一条问候消息"""
3 print(f"Hello, {name}!")
4
5# 调用函数
6greet("Alice")
2. 参数传递
函数可以接受参数,参数是在函数调用时传递给函数的信息。
2.1 位置参数
位置参数是按照顺序传递给函数的参数。
示例:
python
深色版本
1def add(a, b):
2 return a + b
3
4result = add(3, 4)
5print(result) # 输出 7
2.2 默认参数
默认参数允许在定义函数时为参数设置默认值,这样在调用函数时不传入参数时,就会使用默认值。
示例:
python
深色版本
1def greet(name="Stranger"):
2 print(f"Hello, {name}!")
3
4greet() # 输出 Hello, Stranger!
5greet("Alice") # 输出 Hello, Alice!
2.3 可变参数
可变参数允许函数接收不确定数量的参数。
2.3.1 *args
:接收不定数量的位置参数
示例:
python
深色版本
1def sum_all(*args):
2 total = sum(args)
3 print(total)
4
5sum_all(1, 2, 3, 4) # 输出 10
2.3.2 **kwargs
:接收不定数量的关键字参数
示例:
python
深色版本
1def describe_pet(pet_name, animal_type='dog'):
2 print(f"I have a {animal_type} named {pet_name}.")
3
4describe_pet(animal_type='hamster', pet_name='Harry')
3. 返回值
函数可以使用 return
语句返回一个值。
示例:
python
深色版本
1def add(a, b):
2 return a + b
3
4result = add(3, 4)
5print(result) # 输出 7
4. 文档字符串(Docstrings)
文档字符串是放在函数定义的第一行的字符串,用于描述函数的作用。
示例:
python
深色版本
1def greet(name):
2 """打印一条问候消息"""
3 print(f"Hello, {name}!")
4
5help(greet) # 查看函数的帮助信息
5. 匿名函数(Lambda 函数)
Lambda 函数是一种简短定义的小函数,通常用于需要简单函数的地方。
示例:
python
深色版本
1multiply = lambda x, y: x * y
2print(multiply(5, 6)) # 输出 30
6. 递归函数
递归函数是指在函数的定义中调用自身的函数。
示例:
python
深色版本
1def factorial(n):
2 if n == 1:
3 return 1
4 else:
5 return n * factorial(n - 1)
6
7print(factorial(5)) # 输出 120
7. 作用域
在 Python 中,变量的作用域决定了变量在哪里可以被访问。
7.1 局部作用域
局部作用域内的变量只能在定义它的函数内部访问。
示例:
python
深色版本
1def func():
2 x = 10
3 print(x) # 输出 10
4
5func()
6# print(x) # 会抛出 NameError,因为 x 是局部变量
7.2 全局作用域
全局作用域内的变量在整个模块内都可以被访问。
示例:
python
深色版本
1x = 10
2
3def func():
4 global x
5 x = 20
6 print(x) # 输出 20
7
8func()
9print(x) # 输出 20
8. 闭包
闭包是指一个函数与其相关的引用环境组合在一起的实体。闭包可以让函数记住并访问在其外部定义的变量。
示例:
python
深色版本
1def outer_func(msg):
2 message = msg
3
4 def inner_func():
5 print(message)
6
7 return inner_func
8
9hi_func = outer_func('Hi')
10bye_func = outer_func('Bye')
11
12hi_func() # 输出 Hi
13bye_func() # 输出 Bye
9. 装饰器
装饰器是一种特殊的函数,它可以修改其他函数的行为而不改变其源代码。
示例:
python
深色版本
1def my_decorator(func):
2 def wrapper():
3 print("Something is happening before the function is called.")
4 func()
5 print("Something is happening after the function is called.")
6 return wrapper
7
8@my_decorator
9def say_hello():
10 print("Hello!")
11
12say_hello()
10. 函数作为参数
函数可以作为参数传递给其他函数。
示例:
python
深色版本
1def call_func(callback):
2 callback()
3
4def hello():
5 print("Hello!")
6
7call_func(hello) # 输出 Hello!
11. 函数作为返回值
函数可以作为其他函数的返回值。
示例:
python
深色版本
1def create_adder(x):
2 def adder(y):
3 return x + y
4 return adder
5
6add_5 = create_adder(5)
7print(add_5(10)) # 输出 15
总结
函数是 Python 中非常重要的概念,它们使得代码更加模块化、可重用和易于维护。通过理解和使用函数,可以编写更加高效和结构化的代码。无论是简单的函数还是复杂的递归函数,掌握函数的概念和技术都是非常有用的。