第3章:函数与模块
函数与模块是Python开发中的核心部分,它们可以极大提高代码的复用性和组织性。
3.1 函数
3.1.1 什么是函数
函数是具有名字的代码块,可以通过调用来多次使用。
# 函数定义与调用
def greet(name):
return f"Hello, {name}!"
print(greet("Alice")) # 输出: Hello, Alice!
3.1.2 定义函数
- 使用
def
关键字定义函数。 - 函数可以有参数和返回值。
# 一个简单的加法函数
def add(a, b):
return a + b
print(add(3, 5)) # 输出: 8
3.1.3 参数类型
类型 | 描述 | 示例 |
---|---|---|
位置参数 | 参数按顺序匹配 | def greet(name) -> greet("Alice") |
默认参数 | 提供默认值,可在调用时省略 | def greet(name="Guest") -> greet() |
可变参数 | 使用*args 接收任意数量的位置参数 | def add(*args) |
关键字参数 | 使用**kwargs 接收任意数量的关键字参数 | def info(**kwargs) |
# 示例代码
def info(name, age=18, *args, **kwargs):
print(f"Name: {name}, Age: {age}")
print(f"Additional args: {args}")
print(f"Additional kwargs: {kwargs}")
info("Alice", 25, "Student", country="USA", hobby="reading")
3.1.4 匿名函数(Lambda表达式)
- 用于定义简单的、临时的函数。
- 使用关键字
lambda
定义。
# 示例
square = lambda x: x ** 2
print(square(5)) # 输出: 25
3.2 作用域与闭包
3.2.1 变量作用域
- 局部变量(Local):定义在函数内部,只在函数内有效。
- 全局变量(Global):定义在函数外部,可在整个模块中访问。
- 作用域规则(LEGB):
- L:Local (函数内部)
- E:Enclosing (嵌套函数的外部函数)
- G:Global (模块级别)
- B:Built-in (内置作用域)
# 示例
x = "Global"
def test_scope():
x = "Local"
print(x) # 输出: Local
test_scope()
print(x) # 输出: Global
3.2.2 闭包(Closure)
闭包是指在函数内部定义的函数可以捕获并“记住”其外部函数的变量。
# 闭包示例
def outer_func(x):
def inner_func(y):
return x + y
return inner_func
add_5 = outer_func(5)
print(add_5(10)) # 输出: 15
3.3 模块
3.3.1 什么是模块
模块是一个包含Python代码的文件,扩展名为.py
。通过模块可以组织代码并实现复用。
- 内置模块:Python自带的模块(如
math
、os
等)。 - 自定义模块:用户自己创建的模块。
3.3.2 导入模块
导入方式 | 描述 | 示例 |
---|---|---|
导入整个模块 | 使用 import 模块名 | import math |
导入模块中的指定部分 | 使用 from 模块名 import 成员 | from math import sqrt |
给模块取别名 | 使用 import 模块名 as 别名 | import numpy as np |
# 示例:使用math模块
import math
print(math.sqrt(16)) # 输出: 4.0
3.3.3 自定义模块
-
创建模块:
创建一个名为my_module.py
的文件,内容如下:def greet(name): return f"Hello, {name}!"
-
导入模块:
在主程序中使用该模块:import my_module print(my_module.greet("Alice")) # 输出: Hello, Alice!
3.3.4 包(Package)
包是一个包含多个模块的目录,通过在目录中添加__init__.py
文件使其成为包。
-
创建包结构:
my_package/ ├── __init__.py ├── module1.py └── module2.py
-
使用包:
from my_package import module1 module1.some_function()
3.4 Python中的标准库
Python自带了许多功能强大的模块和库,以下是几个常用模块的介绍:
3.4.1 math模块
提供数学运算相关的功能。
import math
print(math.pi) # 圆周率
print(math.factorial(5)) # 阶乘
3.4.2 os模块
用于操作系统相关的功能。
import os
print(os.getcwd()) # 获取当前工作目录
os.mkdir("new_folder") # 创建新目录
3.4.3 random模块
用于生成随机数。
import random
print(random.randint(1, 100)) # 随机整数
小结
这一章介绍了Python函数的定义与使用、作用域的规则、模块的导入以及标准库的功能。通过掌握这些内容,可以更高效地编写模块化代码。