【问题标题】:How to access variables in more global functions within a nested function? (Python)如何在嵌套函数中访问更多全局函数中的变量? (Python)
【发布时间】:2019-11-21 09:22:32
【问题描述】:

我正在另一个函数中运行一个函数。但是,嵌套越多的函数无法访问主函数中的变量,更全局的函数。当我尝试运行我的代码时,出现“未定义 x”错误。我认为由于 x 是一个范围更大的全局变量,它应该是可访问的。

def func_master():
    x = 'hello world'
    test_sub()


def test_sub():
    print(x)

func_master()

我希望它打印出“hello world”。

【问题讨论】:

  • Python 具有词法而非动态变量范围,因此您想要的必须通过其他方式来实现,例如显式传递参数或使用全局变量。

标签: python function variables scope nested


【解决方案1】:

您的函数不是“嵌套的”,这意味着一个定义在另一个内部。相反,您是从另一个函数内部调用一个函数,但这些函数是单独定义的,不在另一个函数内部。

Python 的作用域规则基于函数的定义。所以当func_master 调用test_sub 时,func_master 中定义的名称xtest_sub 是无法访问的。

使xtest_sub 中可用的最佳(但不仅是)方法是将其作为参数传递。修改func_master中的调用传递x,修改test_sub的定义接收。一个例程将所有需要的信息作为参数传递是一种很好的编程习惯——除非绝对需要,否则避免使用全局变量等。

def func_master():
    x = 'hello world'
    test_sub(x)


def test_sub(x):
    print(x)

func_master()

【讨论】:

  • 谢谢!我很高兴有一种方法可以在不使用全局变量的情况下做到这一点。我在想象一个函数内函数内有多个函数的情况,只使用全局变量似乎很头疼。另外,感谢您帮助我使用我的术语。我很新,还在努力把单词写对。
猜你喜欢
  • 2022-12-05
  • 1970-01-01
  • 2016-07-05
  • 2019-04-04
  • 2018-07-16
  • 1970-01-01
  • 2020-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多