python-globals()用法

这两天跑项目,遇到个很邪门的地方,在一个方法里,返回值是三个变量,但是方法中没有明确定义这三个变量,pycharm中返回时下边也出现红线提示未定义,但是项目运行完全没有问题。搜了一下几乎没有什么对这个的讲解,自己简单总结了一下,如下。

1.globals()最基本用法,获取全局变量表,前边为内置方法,后边为自定义的变量与方法。

a=123
b='hello'
c=True
def d():
    e=456
    f='world'
print(globals())

2. 使用globals()自动创建集合。

def fun():
    dfg = ['aa', 'bb', 'cc']
    i = 0
    for n in dfg:
        globals()[n] = {i}   #花括号的为集合或者字典,这里通过迭代,自动定义三个变量,并且每个变量是集合形式
        i += 1
    return aa,bb,cc
w,x,y=fun()
print(str(w)+','+str(x)+','+str(y))

3.使用globals()自动创建字典。

def fun():
    dfg=['aa','bb','cc']
    for n in dfg:
        globals()[n]={}   #先迭代自动创建变量,花括号是集合或者字典
        globals()[n]['data'] = []   #每个变量自动创建为键为‘data’的字典,其中对应的值为列表
        for i in range(5):
            globals()[n]['data'].append(i)   #data对应的值为列表,通过append添加元素
    return aa,bb,cc
w,x,y=fun()
print(str(w)+','+str(x)+','+str(y))

4.使用globals()自动创建双重列表。

def fun():
    dfg=['aa','bb','cc']
    for n in dfg:
        globals()[n]={}   #先迭代自动创建变量,花括号是集合或者字典
        cam=0
        globals()[n]['data'] = []  # 每个变量自动创建为键为‘data’的字典,其中对应的值为列表
        globals()[n]['data'].append([])   #data对应的值为列表,列表中包含子列表,通过append添加元素
        globals()[n]['data'].append([])
        globals()[n]['data'].append([])
        globals()[n]['data'][cam].append('hello')    #通过下标确定子列表,追加元素
        globals()[n]['data'][cam].append('world')
    return aa,bb,cc
w,x,y=fun()
print(str(w)+','+str(x)+','+str(y))

你可能感兴趣的:(python)