一、Python函数基础
函数是Python编程的核心,用于封装可重复使用的代码块。函数定义使用def关键字,调用时传入参数,通过return返回结果。
1. 函数的作用与定义
函数主要有两个作用:
-
代码重用:避免重复编写相同代码
-
模块化编程:将复杂系统分解为多个功能模块
# 函数定义与调用示例
def greet(name):
return f"{name},您好!"
print(greet("张三")) # 输出:张三,您好!
2. 函数参数进阶
Python函数支持多种参数类型:
# 位置参数
def user_info(name, age, address):
print(f"姓名:{name},年龄:{age},地址:{address}")
# 关键字参数
user_info(name="张三", age=25, address="北京")
# 默认参数
def greet(name, greeting="您好"):
return f"{name},{greeting}"
# 不定长参数
def print_scores(*args, **kwargs):
print(f"位置参数:{args}")
print(f"关键字参数:{kwargs}")
3. 变量作用域与global关键字
-
局部变量:在函数内部定义,函数执行完毕后销毁
-
全局变量:在函数外部定义,整个程序可访问
-
使用global关键字在函数内部修改全局变量
count = 0 # 全局变量
def increment():
global count
count += 1
return count
二、lambda表达式
lambda表达式用于创建匿名函数,适用于简单的函数功能。
基本语法
# 普通函数
def add(x, y):
return x + y
# lambda表达式
add_lambda = lambda x, y: x + y
print(add(3, 5)) # 输出:8
print(add_lambda(3, 5)) # 输出:8
高级用法
# 带条件判断的lambda
max_num = lambda a, b: a if a > b else b
# 用于排序
students = [
{"name": "Tom", "age": 20},
{"name": "Rose", "age": 19},
{"name": "Jack", "age": 22}
]
# 按年龄排序
students.sort(key=lambda x: x['age'])
三、Python模块
模块是包含Python代码的.py文件,通过模块可以实现代码的组织和复用。
1. 内置模块使用
Python提供了丰富的内置模块:
import math
import random
import time
# 使用math模块
print(math.sqrt(25)) # 计算平方根
# 使用random模块
print(random.randint(1, 100)) # 生成随机数
# 使用time模块
start_time = time.time()
# 执行一些操作
end_time = time.time()
print(f"执行时间:{end_time – start_time}秒")
2. 模块导入方式
# 方式1:import模块名
import os
os.mkdir("test_dir")
# 方式2:import模块名 as 别名
import numpy as np
# 方式3:from模块名 import 功能
from math import sqrt, pow
# 方式4:导入所有功能(不推荐)
from math import *
四、自定义模块
创建自定义模块
创建my_module.py文件:
# my_module.py
def greet(name):
"""返回问候语"""
return f"Hello, {name}!"
def add(a, b):
"""返回两数之和"""
return a + b
# 模块测试代码
if __name__ == "__main__":
print(greet("World")) # 测试代码,仅直接运行时执行
print(add(3, 5))
使用自定义模块
# main.py
import my_module
print(my_module.greet("Alice"))
print(my_module.add(10, 20))
五、Python包
包是包含多个模块的文件夹,必须有__init__.py文件。
1. 创建包
mypackage/
__init__.py
module1.py
module2.py
subpackage/
__init__.py
module3.py
2. 包的使用
# 方式1:import包名.模块名
import mypackage.module1
mypackage.module1.say_hello()
# 方式2:from包名 import 模块
from mypackage import module1
module1.say_hello()
# 方式3:控制导入内容(在__init__.py中)
# __init__.py内容:
# __all__ = ['module1'] # 只允许导入module1
3. 包的嵌套
from mypackage.subpackage import module3
result = module3.add(3, 5)
六、重要概念总结
1. 引用与可变类型
-
不可变类型:数值、字符串、元组(内存地址固定,值不可变)
-
可变类型:列表、字典、集合(内存地址固定,值可变)
# 不可变类型示例
a = 10
b = a
a = 20
print(b) # 输出:10(b不受a改变影响)
# 可变类型示例
list1 = [1, 2, 3]
list2 = list1
list1.append(4)
print(list2) # 输出:[1, 2, 3, 4](list2受影响)
2. 函数中可变/不可变参数
# 不可变类型参数
def modify_number(num):
num += 10
return num
x = 5
modify_number(x)
print(x) # 输出:5(x未改变)
# 可变类型参数
def modify_list(lst):
lst.append(10)
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # 输出:[1, 2, 3, 10](my_list被修改)
3. 拆包操作
# 元组拆包
def get_coordinates():
return 100, 200
x, y = get_coordinates() # 拆包
print(f"x={x}, y={y}")
# 字典拆包
def get_user_info():
return {"name": "张三", "age": 25}
user = get_user_info()
name, age = user["name"], user["age"] # 字典拆包
print(f"姓名:{name},年龄:{age}")



