Python--函数进阶(下)
3. 返回值与print的辨析
3.1 返回值的作用
- return:将结果传递给调用者,可后续处理。
- print:仅输出到控制台,不保留数据。
def add(a, b):
return a + b
result = add(3, 4) # 结果存储在result中
print(result) # 输出:7
3.2 函数执行流程分析
def func1():
print("执行func1")
return 100
def func2(arg):
print("执行func2")
return arg * 2
value = func2(func1())
# 输出:
# 执行func1
# 执行func2
print(value) # 200
4. 作用域详解
4.1 全局作用域与局部作用域
- 局部作用域:函数内部定义的变量。
- 全局作用域:函数外部定义的变量。
global_var = "全局变量"
def show_vars():
local_var = "局部变量"
print(global_var) # 可访问全局变量
print(local_var)
show_vars()
print(local_var) # 报错:未定义
4.2 global关键字的使用
在局部作用域中修改全局变量:
count = 0
def increment():
global count
count += 1
increment()
print(count) # 输出:1
5. 综合练习与常见面试题
5.1 参数传递的面试题
题目:
def func(data=[]):
data.append(1)
return data
print(func()) # [1]
print(func()) # [1, 1]
解析:默认参数在函数定义时创建,多次调用共享同一列表。
5.2 作用域相关的代码分析
代码:
x = 10
def outer():
x = 20
def inner():
print(x) # 输出:20
inner()
outer()
print(x) # 输出:10
解析:inner函数优先访问外层函数作用域的x。
5.3 函数式编程案例
闭包应用:
def cache(func):
cached = {}
def wrapper(*args):
if args not in cached:
cached[args] = func(*args)
return cached[args]
return wrapper
@cache
def factorial(n):
return 1 if n == 0 else n * factorial(n-1)
print(factorial(5)) # 120(缓存优化递归)