https://github.com/Visualize-ML
1.1 什么是函数?
函数是一段可重复使用的代码,用于执行特定任务。
内置函数:如
print()
、len()
等。自定义函数:由用户定义的函数。
Lambda函数:匿名函数,通过
lambda
关键字定义。生成器函数:使用
yield
关键字生成迭代器。方法:与对象关联的函数,如字符串的方法。
1.2 为什么需要自定义函数?
提高代码复用性、模块化和组织性。
抽象和封装复杂问题,使代码结构和逻辑更清晰。
通过函数,避免重复编写相同代码,将大型任务分解为小型函数。
2. 函数定义与使用
2.1 定义无输入、无返回的函数
def say_hello():
print("Hello!")
say_hello()
2.2 定义有输入、有返回的函数
def add_numbers(a, b):
return a + b
sum = add_numbers(3, 5)
print(sum) # 输出: 8
2.3 设置默认参数
def greet(name, greeting='Hello'):
print(f"{greeting}, {name}!")
greet('James') # 输出: "Hello, James!"
greet('James', 'Good morning') # 输出: "Good morning, James!"
3. 变量作用域
3.1 全局变量与局部变量
global_x = 8
def my_function(local_x):
global_x = 88
print("local_x:", local_x) # 局部变量
print("global_x:", global_x) # 局部变量
my_function(38)
print("global_x:", global_x) # 全局变量
3.2 使用global
关键字
global_x = 8
def my_function(local_x):
global global_x
global_x = 88
print("local_x:", local_x) # 局部变量
print("global_x:", global_x) # 全局变量
my_function(38)
print("global_x:", global_x) # 全局变量
4. 函数内部错误处理
4.1 使用raise
语句
def matrix_multiplication(A, B):
if len(A[0]) != len(B):
raise ValueError("Error: check matrix sizes")
# 矩阵乘法逻辑
A = [[1], [2], [3], [4]]
B = [[1, 2, 3]]
matrix_multiplication(A, B) # 抛出错误
4.2 使用assert
语句
def divide(a, b):
assert b != 0, "除数不能为零"
return a / b
result = divide(10, 0) # 引发AssertionError
5. 函数文档与帮助
5.1 编写函数的帮助文档
def inner_prod(a, b):
"""
计算两个向量的内积
输入:
a:向量,类型为数据列表
b:向量,类型为数据列表
输出:
c:标量
"""
if len(a) != len(b):
raise ValueError("Error: check a/b lengths")
dot_product = sum(a[i] * b[i] for i in range(len(a)))
return dot_product
help(inner_prod)
print(inner_prod.__doc__)
6. 更多自定义函数
6.1 生成全0矩阵
def create_zeros_matrix(rows, cols):
return [[0] * cols for _ in range(rows)]
print(create_zeros_matrix(3, 4))
6.2 生成单位矩阵
def identity_matrix(size):
matrix = []
for i in range(size):
row = [0] * size
row[i] = 1
matrix.append(row)
return matrix
print(identity_matrix(4))
6.3 提取矩阵对角线元素
def extract_main_diagonal(matrix):
return [matrix[i][i] for i in range(min(len(matrix), len(matrix[0])))]
matrix = [[1, 2, 3], [4, 5, 6]]
print(extract_main_diagonal(matrix))
7. 递归函数
7.1 计算阶乘
def factorial(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial(n - 1)
for i in range(10):
print(f'{i}! = {factorial(i)}')
7.2 生成斐波那契数列
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
for i in range(10):
print(fibonacci(i))
8. 参数类型
8.1 位置参数与关键字参数
def complex_example():
# 位置参数
print(complex(4, 3)) # (4+3j)
print(complex(3, 4)) # (3+4j)
# 关键字参数
print(complex(real=3, imag=4)) # (3+4j)
print(complex(imag=4, real=3)) # (3+4j)
complex_example()