这两天跑项目,遇到个很邪门的地方,在一个方法里,返回值是三个变量,但是方法中没有明确定义这三个变量,pycharm中返回时下边也出现红线提示未定义,但是项目运行完全没有问题。搜了一下几乎没有什么对这个的讲解,自己简单总结了一下,如下。
()最基本用法,获取全局变量表,前边为内置方法,后边为自定义的变量与方法。
-
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))
'
运行