这两天跑项目,遇到个很邪门的地方,在一个方法里,返回值是三个变量,但是方法中没有明确定义这三个变量,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))