商洛市住户和城乡建设局网站信息价上优化seo
3. 返回值与print的辨析
3.1 返回值的作用
- return:将结果传递给调用者,可后续处理。
- print:仅输出到控制台,不保留数据。
def add(a, b):return a + bresult = add(3, 4) # 结果存储在result中
print(result) # 输出:7
3.2 函数执行流程分析
def func1():print("执行func1")return 100def func2(arg):print("执行func2")return arg * 2value = 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 = 0def increment():global countcount += 1increment()
print(count) # 输出:1
5. 综合练习与常见面试题
5.1 参数传递的面试题
题目:
def func(data=[]):data.append(1)return dataprint(func()) # [1]
print(func()) # [1, 1]
解析:默认参数在函数定义时创建,多次调用共享同一列表。
5.2 作用域相关的代码分析
代码:
x = 10def outer():x = 20def inner():print(x) # 输出:20inner()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(缓存优化递归)