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

Python函数为何能访问未在参数中定义的变量?是否为全局行为?

问题解答

这是完全正常的行为。

关于Python变量作用域的说明:

  • 你给出的代码中,a=1是定义在全局作用域的变量,函数func内部只是读取a的值,没有对它进行赋值操作。按照Python的作用域规则,当函数内部引用一个未在局部定义的变量时,会向上查找外层作用域,这里就找到了全局的a,所以执行func()会返回1。
  • 变量并不是默认具有全局特性:
    • 如果在函数内部直接给变量赋值,这个变量会被视为函数的局部变量,和全局变量无关。比如:
    a=1
    def func():
        a = 2
        return a
    func()  # 返回2,全局的a仍然是1
    
    • 要是想在函数内部修改全局变量,必须用global关键字声明这个变量来自全局作用域:
    a=1
    def func():
        global a
        a = 2
        return a
    func()  # 返回2,全局的a被修改为2
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:55:38