以下是整理后的 Python 学习日记,结合知识点解析与代码示例,帮助系统理解函数相关核心概念:
一、函数的定义
作用 :封装可重复使用的代码块,提高代码复用性。
语法:
def 函数名(参数列表):
"""文档字符串(可选)"""
函数体
return 返回值(可选)
示例:
# 无参数函数
def greet():
print("Hello, Python!")
# 有参数有返回值函数
def add(a, b):
return a + b
# 调用函数
greet() # 输出:Hello, Python!
result = add(3, 5)
print(result) # 输出:8
二、变量作用域:局部变量 vs 全局变量
1. 局部变量
-
定义:在函数内部声明的变量,仅在函数内有效。
-
示例 :
def func(): x = 10 # 局部变量 print("局部变量 x:", x) func() # 输出:局部变量 x: 10 # print(x) # 报错:NameError: name 'x' is not defined
2. 全局变量
-
定义:在函数外部声明的变量,可在全局范围内访问(包括函数内部)。
-
示例 :
count = 5 # 全局变量 def show_count(): print("全局变量 count:", count) # 函数内可直接访问全局变量 show_count() # 输出:全局变量 count: 5
3. 在函数内修改全局变量
-
若需在函数内修改全局变量,需用
global
关键字声明。total = 0 def add_to_total(num): global total # 声明使用全局变量 total += num add_to_total(10) print(total) # 输出:10
三、函数的参数类型
1. 位置参数
-
特点:必须按顺序传递参数,数量与声明一致。
-
示例 :
def user_info(name, age): print(f"姓名:{name},年龄:{age}") user_info("Alice", 25) # 正确:按位置传递 # user_info(25, "Alice") # 错误:顺序错误导致逻辑混乱
2. 默认参数
-
特点:声明时指定默认值,调用时可省略该参数。
-
示例 :
def user_info(name, age=18): # age 为默认参数 print(f"姓名:{name},年龄:{age}") user_info("Bob") # 输出:姓名:Bob,年龄:18(使用默认值) user_info("Charlie", 30) # 输出:姓名:Charlie,年龄:30(覆盖默认值)
3. 不定参数(可变参数)
-
*args
(接收任意数量的位置参数) :def sum_numbers(*args): total = 0 for num in args: total += num return total print(sum_numbers(1, 2, 3)) # 输出:6 print(sum_numbers(1, 2, 3, 4)) # 输出:10
-
**kwargs
(接收任意数量的关键字参数) :def print_kwargs(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}") print_kwargs(name="Alice", age=25, city="New York")
输出 :
name: Alice age: 25 city: New York
四、传递参数的手段:关键词参数
-
定义 :调用函数时通过
参数名=值
的形式传递参数,无需关注顺序。 -
示例 :
def calculate(a, b, operator): if operator == "+": return a + b elif operator == "-": return a - b # 用关键词参数指定参数名,顺序可任意 result = calculate(operator="+", a=10, b=5) print(result) # 输出:15
五、传递参数的顺序:同时存在多种参数类型时
当函数同时包含 位置参数、默认参数、*args
、**kwargs
时,必须严格遵循以下顺序:
def func(位置参数, 默认参数, *args, **kwargs):
pass
示例:
def example(a, b=10, *args, **kwargs):
print("位置参数 a:", a)
print("默认参数 b:", b)
print("不定位置参数 args:", args)
print("不定关键字参数 kwargs:", kwargs)
# 调用示例
example(1, 2, 3, 4, c=5, d=6)
输出:
位置参数 a: 1
默认参数 b: 2
不定位置参数 args: (3, 4)
不定关键字参数 kwargs: {'c': 5, 'd': 6}
总结:核心要点速查表
概念 | 关键点 |
---|---|
函数定义 | def 关键字,参数列表,return 返回值 |
局部变量 | 函数内声明,作用域仅限函数内 |
全局变量 | 函数外声明,需 global 关键字在函数内修改 |
参数类型 | 位置参数(必选顺序)、默认参数(可选)、*args (任意位置参数)、**kwargs (任意关键字参数) |
关键词参数 | 按 参数名=值 传递,忽略顺序 |
参数传递顺序 | 位置参数 → 默认参数 → *args → **kwargs |
学习建议:
- 多写示例代码,观察参数传递和作用域的实际效果。
- 遇到报错时,根据错误信息检查参数数量、类型和顺序是否匹配。
- 优先使用关键词参数提高代码可读性,避免位置错误。