繁体   English   中英

如何引用全局变量Python?

[英]How to refer global variable Python?

我正在尝试在函数外部获取'p1'变量的值。 我已将其定义为全局变量,但无法在函数外部引用。 它给我错误, "NameError: global name 'p1' is not defined"

以下是我的代码。 请让我知道如何在函数外获取全局变量的值并在其他函数中引用它

#!/bin/usr/python
import subprocess
import string
def ping_check():
    global p1
    with open ('yst-host.txt') as hl:
            for host in hl:
                    print host
                    p1 = subprocess.call("ping -c2 " + string.strip(host)+ "> /dev/null", shell=True)
                    print "Value of P1 is: ", p1
#ping_check()
print p1

在所示的代码中,您实际上从未调用过ping_check() ,因此您的代码ping_check()等同于:

#!/usr/bin/env python
print p1

然后很明显,您正在尝试使用尚不存在的全局变量。

也许您应该调用函数? 并确保hl不为空? 这样,您将至少分配给p1一次。


对于任何想知道的人,这里都是python中global的有效用法。 请注意,尽管这可能是一个好习惯,但我们不需要预定义全局变量(因此您可以获取一个已知值而不是NameError )。

def fun():
    global p1
    p1 = 3

fun()
print p1

这将是一个评论,但实际上可能是答案。

正如sharth指出的那样,您无需预先声明全局变量即可使用它。 但是 ,在为它分配一个值之后,而不是在global语句之后,它被添加到globals() (并且可以在没有函数外部NameError的情况下进行访问)。 这意味着,您应该检查代码是否达到分配的行。


这是一个例子:

def more_fun():
    global am_i_defined
    print globals() #doesn't include am_i_defined
    am_i_defined = True
    print globals()

more_fun()
print am_i_defined

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM