3.1 定义与调用函数 / Defining and Calling Functions
中文:用def定义函数。参数可以有默认值,调用时可使用关键字参数。return返回结果,无返回值时返回None。
English: Define functions withdef. Parameters can have defaults; keyword arguments are supported at call time.returnsends back a result; without it, the function returnsNone.
python
def greet(name, greeting="Hello"): """返回问候语 / Return a greeting message.""" return f"{greeting}, {name}!" print(greet("Alice")) # Hello, Alice! print(greet("Bob", greeting="你好")) # 你好, Bob! print(greet(name="Carol", greeting="Hi")) # Hi, Carol!3.2 参数类型 / Parameter Kinds
中文:*args收集位置参数为元组,**kwargs收集关键字参数为字典。二者可组合使用。
English:*argscollects positional arguments into a tuple;**kwargscollects keyword arguments into a dict. They can be combined.
python
def summarize(*args, **kwargs): print("位置参数 / positional:", args) print("关键字参数 / keyword:", kwargs) summarize(1, 2, 3, name="Alice", age=20) # 位置参数 / positional: (1, 2, 3) # 关键字参数 / keyword: {'name': 'Alice', 'age': 20} def apply(func, *args): """把函数应用到参数上 / apply a function to arguments.""" return func(*args) print(apply(max, 3, 7, 2)) # 73.3 读写文件 / Reading and Writing Files
中文:用with open(...) as f打开文件,代码块结束时自动关闭。encoding="utf-8"处理中文必须显式指定。
English: Usewith open(...) as fto open files; they close automatically when the block ends. Always specifyencoding="utf-8"for Chinese text.
python
# 写入文件 / write to file with open("demo.txt", "w", encoding="utf-8") as f: f.write("第一行 / line one\n") f.write("第二行 / line two\n") # 读取整个文件 / read entire file with open("demo.txt", "r", encoding="utf-8") as f: content = f.read() print(content) # 逐行读取 / read line by line with open("demo.txt", "r", encoding="utf-8") as f: for line_num, line in enumerate(f, start=1): print(f"{line_num}: {line.strip()}")3.4 异常处理 / Exception Handling
中文:try块放可能出错的代码,except捕获指定异常,else在无异常时执行,finally无论是否出错都执行。
English: Put risky code intry, catch specific exceptions withexcept, runelseif no exception occurred, andfinallyalways runs.
python
def safe_divide(a, b): try: result = a / b except ZeroDivisionError: print("错误 / Error: 除数不能为零 / division by zero") return None except TypeError as e: print(f"类型错误 / Type error: {e}") return None else: print("计算成功 / Calculation succeeded") return result finally: print("执行完毕 / Done\n") print(safe_divide(10, 2)) # 5.0 print(safe_divide(10, 0)) # None print(safe_divide("a", 2)) # None3.5 自定义异常 / Custom Exceptions
中文:继承Exception定义业务异常,便于上层代码精确捕获。
English: SubclassExceptionto define business-specific errors that callers can catch precisely.
python
class InsufficientBalanceError(Exception): """余额不足异常 / Raised when balance is insufficient.""" pass def withdraw(balance, amount): if amount > balance: raise InsufficientBalanceError( f"余额 {balance} 不足以取出 {amount} / " f"balance {balance} is insufficient for {amount}" ) return balance - amount try: withdraw(100, 150) except InsufficientBalanceError as e: print("捕获异常 / Caught:", e)3.6 综合练习 / Comprehensive Exercise
中文:读取一个文本文件,统计行数和字符数,若文件不存在则给出提示。
English: Read a text file, count lines and characters, and print a message if the file doesn't exist.
python
def analyze_file(path): """统计文件行数与字符数 / Count lines and characters.""" try: with open(path, "r", encoding="utf-8") as f: lines = f.readlines() except FileNotFoundError: print(f"文件不存在 / File not found: {path}") return except UnicodeDecodeError: print(f"编码错误 / Encoding error: {path}") return line_count = len(lines) char_count = sum(len(line) for line in lines) print(f"行数 / Lines: {line_count}") print(f"字符数 / Characters: {char_count}") analyze_file("demo.txt") analyze_file("missing.txt")github.0voice