You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python函数如何访问内部未定义的变量?示例中全局变量访问疑问

问题解答

没错,teste()能访问到a和b就是因为它们是全局变量。

Python的变量作用域遵循LEGB规则:

  • L(Local):当前函数内部的局部作用域
  • E(Enclosing):嵌套函数的外层作用域
  • G(Global):模块级别的全局作用域
  • B(Built-in):Python内置的变量/函数

你的代码里,teste()函数内部只是读取a和b的值,没有对它们进行赋值操作。这时候Python会依次向上查找变量:先看函数内部有没有定义,没有就找外层作用域,最后找到全局作用域里定义的a=5和b=4,所以能正常打印出这两个值。

如果要在函数内部修改全局变量,就得用global关键字声明,比如:

def teste():
    global a
    a = 10
    print(a, b)

a = 5
b = 4
teste() # Outputs '10 4'

要是不用global直接赋值,Python会把a当成函数内部的局部变量,这时候如果在赋值前读取就会报错。

内容的提问来源于stack exchange,提问作者Ricardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 12:31:03