局部变量不能被“调用”,只能在函数内部使用,函数结束即销毁;可通过 return 返回值、闭包捕获或类封装等方式将内部数据传递出去,实现安全共享与访问。
Python 中函数不能直接“调用”局部变量,因为局部变量只在定义它的函数内部存在,作用域有限;但你可以在函数内部**定义、访问、修改**局部变量,也可以通过返回值、闭包或可变对象等方式让局部变量的影响“传递出去”。关键不是“调用”,而是“使用”和“暴露”。
函数一结束,局部变量就自动销毁,外部无法访问:
def demo():
x = 100
print(x) # ✅ 可以访问
demo() # 输出 100
print(x) # ❌ NameError: name 'x' is not defined
最常用、最清晰的方式:把局部变量作为返回值传出来:
def get_user_info():
name = "Alice"
age = 30
return name, age # 返回元组
n, a = get_user_info() # ✅ 解包获取局部变量的值
print(n, a) # Alice 30
如果多个函数要反复读写同一组“局部”数据,可以封装成闭包或类:
# 闭包示例
def counter():
count = 0 # 局部变量,但被内部函数捕获
def increment():
nonlocal count
count += 1
return count
return increment
c = counter()
print(c()) # 1
print(c()) # 2 ← count 没被销毁
虽然可以用 global 声明把变量变*局,或用 globals() 动态写入,但这样做会破坏封装性,容易引发命名冲突和维护困难:
基本上就这些。局部变量不是用来“调用”的,而是用来“用完即弃”或“有节制地传出”的——重点是理解作用域,选对通信方式。