有没有办法使定义或类中的每个变量自动成为全局变量?

2024-04-29 16:32:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我在一些定义和类中使用了大量变量(主要是因为我希望能够使用pydev的代码折叠特性)。是否有任何构造函数可以用于定义或类,使其变量自动视为全局变量?你知道吗


这是我在遵循评论中提出的一些建议之后所做工作的一个例子:

发件人:

img_globe       = os.path.join(set_img_dir, 'img_globe.png')
img_help        = os.path.join(set_img_dir, 'img_help.png')
img_exit        = os.path.join(set_img_dir, 'img_exit.png')
img_open        = os.path.join(set_img_dir, 'img_open.png')
img_tutorial    = os.path.join(set_img_dir, 'img_tutorial.png')
img_save        = os.path.join(set_img_dir, 'img_save.png')
img_site        = os.path.join(set_img_dir, 'img_site.png')

。。。(长长的,长长的清单)

收件人:

varies = {}
dirList=os.listdir(set_img_dir)
for fname in dirList: 
    varies[fname.split(".")[0]] = os.path.join(set_img_dir, fname)

Tags: pathimg定义pngossavedirexit
1条回答
网友
1楼 · 发布于 2024-04-29 16:32:34

尽管您不应该这样做,而且您正在寻找的解决方案并不像您想象的那么简单,但下面是一个非常简单的示例,说明如何从函数中获取局部变量并使其成为全局变量:

def make_locals_globals():
    """This is just bad"""
    foo = 1
    bar = 2

    locals_dict = locals()
    globals_dict = globals()

    print 'Locals:', locals_dict

    for varname, varval in locals_dict.items():
        print 'Setting global: %s=%s' % (varname, varval)
        globals_dict[varname] = varval

if __name__ == '__main__':
    make_locals_globals()

    print '\nGlobals:'
    print 'foo=', foo
    print 'bar=', bar

相关问题 更多 >