← 返回主页

第4课: 函数与模块

定义函数

函数是可重用的代码块,用于执行特定任务。

基本函数

def greet():
    print("Hello, World!")

# 调用函数
greet()  # 输出: Hello, World!

带参数的函数

def greet(name):
    print(f"Hello, {name}!")

greet("张三")  # Hello, 张三!
greet("李四")  # Hello, 李四!

多个参数

def add(a, b):
    return a + b

result = add(5, 3)
print(result)  # 8

默认参数

def greet(name, greeting="你好"):
    print(f"{greeting}, {name}!")

greet("张三")              # 你好, 张三!
greet("李四", "早上好")    # 早上好, 李四!

关键字参数

def introduce(name, age, city):
    print(f"我叫{name},{age}岁,来自{city}")

# 位置参数
introduce("张三", 25, "北京")

# 关键字参数
introduce(age=30, name="李四", city="上海")

# 混合使用
introduce("王五", age=28, city="广州")

返回值

def square(x):
    return x ** 2

result = square(5)
print(result)  # 25

# 返回多个值
def get_user_info():
    name = "张三"
    age = 25
    return name, age

name, age = get_user_info()
print(name, age)  # 张三 25

可变参数

*args - 任意数量的位置参数

def sum_all(*numbers):
    total = 0
    for num in numbers:
        total += num
    return total

print(sum_all(1, 2, 3))        # 6
print(sum_all(1, 2, 3, 4, 5))  # 15

**kwargs - 任意数量的关键字参数

def print_info(**info):
    for key, value in info.items():
        print(f"{key}: {value}")

print_info(name="张三", age=25, city="北京")
# name: 张三
# age: 25
# city: 北京

Lambda函数

Lambda函数是匿名的单行函数。

# 普通函数
def square(x):
    return x ** 2

# Lambda函数
square = lambda x: x ** 2
print(square(5))  # 25

# 多个参数
add = lambda a, b: a + b
print(add(3, 4))  # 7

# 在sorted中使用
students = [
    {"name": "张三", "age": 25},
    {"name": "李四", "age": 20},
    {"name": "王五", "age": 30}
]
sorted_students = sorted(students, key=lambda s: s["age"])
print(sorted_students)

模块

模块是包含Python代码的文件,可以被其他程序导入使用。

导入模块

# 导入整个模块
import math
print(math.pi)  # 3.141592653589793
print(math.sqrt(16))  # 4.0

# 导入特定函数
from math import pi, sqrt
print(pi)  # 3.141592653589793
print(sqrt(16))  # 4.0

# 使用别名
import math as m
print(m.pi)

from math import sqrt as square_root
print(square_root(16))

常用内置模块

# random - 随机数
import random
print(random.randint(1, 10))  # 1到10的随机整数
print(random.choice(['a', 'b', 'c']))  # 随机选择

# datetime - 日期时间
from datetime import datetime
now = datetime.now()
print(now)

# os - 操作系统接口
import os
print(os.getcwd())  # 当前工作目录

创建自己的模块

创建文件 mymodule.py

def greet(name):
    return f"Hello, {name}!"

def add(a, b):
    return a + b

PI = 3.14159

在另一个文件中使用:

import mymodule

print(mymodule.greet("张三"))
print(mymodule.add(5, 3))
print(mymodule.PI)

练习

  1. 编写函数判断一个数是否为质数
  2. 编写函数计算阶乘
  3. 编写函数反转字符串
  4. 使用random模块生成10个随机数
练习答案:
# 练习1:判断质数
def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True

print(is_prime(17))  # True

# 练习2:计算阶乘
def factorial(n):
    if n == 0 or n == 1:
        return 1
    result = 1
    for i in range(2, n + 1):
        result *= i
    return result

print(factorial(5))  # 120

# 练习3:反转字符串
def reverse_string(s):
    return s[::-1]

print(reverse_string("Hello"))  # olleH

# 练习4:生成随机数
import random
random_numbers = [random.randint(1, 100) for _ in range(10)]
print(random_numbers)