1. 函数
1.1 定义
在 Python 中,我们借助 def
关键字来定义函数。其基本的语法格式如下:
python
def function_name(parameters):
"""函数文档字符串(可选)"""
function_body
return result
- 函数名:它需要遵循 Python 的命名规则,一般采用小写字母和下划线组合的方式,要具有清晰的描述性,能够让人一眼就明白这个函数的主要功能。
- 参数列表:参数列表可以为空,意味着函数不需要外部输入;也可以包含一个或多个参数,各个参数之间用逗号分隔,这些参数就像是函数运行所需的原材料。
- 函数体:这是函数的核心部分,包含了函数要执行的具体代码,就像工具的操作流程一样。
return
语句:它的作用是返回函数的执行结果,不过这是一个可选部分。如果函数中没有return
语句,那么函数默认返回None
。
1.2 函数参数
1.2.1 位置参数
在调用函数时,需要严格按照函数定义中参数的顺序依次传入对应的值。例如:
python
def describe_pet(animal_type, pet_name):
print(f"I have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name}.")
describe_pet("dog", "Buddy")
1.2.2 关键字参数
在调用函数时,我们可以明确指定参数的名称和对应的值,这样就不用担心参数顺序带来的问题了。例如:
python
def describe_pet(animal_type, pet_name):
print(f"I have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name}.")
describe_pet(animal_type="cat", pet_name="Whiskers")
1.2.3 默认参数
在定义函数的时候,可以为某些参数预先指定默认值。当调用函数时,如果没有为这些参数传递具体的值,那么函数就会使用默认值。例如:
python
def describe_pet(pet_name, animal_type="dog"):
print(f"I have a {animal_type}.")
print(f"My {animal_type}'s name is {pet_name}.")
describe_pet("Buddy")
describe_pet("Whiskers", "cat")
1.2.4 可变参数
*args
:它用于接收任意数量的位置参数。在函数内部,这些参数会被打包成一个元组。例如:
python
def show_items(*args):
return f"Items: {args}"
print(show_items(1, 2, 3))
**kwargs
:它用于接收任意数量的关键字参数。在函数内部,这些参数会被打包成一个字典。例如:
python
def show_details(**kwargs):
return f"Details: {kwargs}"
print(show_details(name="Alice", age=25))
1.3 函数返回值
函数可以通过 return
语句返回一个值,也可以返回多个值。如果返回多个值,这些值会以元组的形式呈现。例如:
python
def add(a, b):
return a + b
result = add(3, 5)
print(result)
def get_name_and_age():
name = "Alice"
age = 25
return name, age
name, age = get_name_and_age()
print(name, age)
1.4 函数调用
当我们定义好一个函数后,就可以通过函数名加上括号的方式来调用它,并且根据函数的定义传递相应的参数。例如:
python
def greet(name):
print(f"Hello, {name}!")
greet("Alice")
1.5 匿名函数(Lambda 函数)
使用 lambda
关键字可以创建匿名函数,这类函数通常用于定义一些简单的、只需要使用一次的功能。例如:
python
add = lambda a, b: a + b
result = add(3, 5)
print(result)
1.6 递归函数
递归函数是一种特殊的函数,它在函数内部会调用自身。以计算阶乘为例:
python
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
print(factorial(5))
2. 知识点总结
- 函数定义:使用
def
关键字,包含函数名、参数列表、函数体和可选的return
语句。 - 函数参数
- 位置参数:按顺序传递值。
- 关键字参数:明确指定参数名和值。
- 默认参数:定义时指定默认值,调用时可省略。
- 可变参数:
*args
接收任意数量位置参数,**kwargs
接收任意数量关键字参数。
- 函数返回值:通过
return
语句返回一个或多个值,多个值以元组形式返回。 - 函数调用:使用函数名加括号并传递参数来调用函数。
- 匿名函数:使用
lambda
关键字创建简单的一次性函数。 - 递归函数:函数内部调用自身,需设置终止条件。
3. 补充资料
3.1 函数文档字符串
函数文档字符串(docstring)用于对函数的功能、参数和返回值等信息进行说明,方便其他开发者理解和使用函数。可以通过函数的 __doc__
属性访问。例如:
python
def add(a, b):
"""
此函数用于计算两个数的和。
参数:
a (int 或 float): 第一个加数。
b (int 或 float): 第二个加数。
返回:
int 或 float: 两个数的和。
"""
return a + b
print(add.__doc__)
3.2 函数作用域
Python 中的函数有自己的作用域,函数内部定义的变量属于局部变量,只能在函数内部访问;而在函数外部定义的变量属于全局变量,可以在函数内部访问,但如果要在函数内部修改全局变量,需要使用 global
关键字。例如:
python
x = 10
def change_x():
global x
x = 20
print(x) # 输出 10
change_x()
print(x) # 输出 20
3.3 高阶函数
高阶函数是指可以接受函数作为参数或者返回函数的函数。例如,Python 内置的 map()
函数就是一个高阶函数,它接受一个函数和一个可迭代对象作为参数,将函数应用到可迭代对象的每个元素上。例如:
python
def square(x):
return x ** 2
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(square, numbers))
print(squared_numbers)
3.4 装饰器
装饰器是一种特殊的高阶函数,它可以在不修改原函数代码的情况下,为函数添加额外的功能。例如:
python
def my_decorator(func):
def wrapper():
print("在函数执行前做一些事情")
func()
print("在函数执行后做一些事情")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
以上这些知识点可以帮助我们更深入地理解和运用 Python 函数。