编程基础:Python函数

文摘   2024-07-21 19:37   新疆  

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(100)  # 引发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(34))

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()

Dr Leo
ENT医生的科研分享
 最新文章