python-globals用法

时间:2024-10-05 09:36:05

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

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

  1. a=123
  2. b='hello'
  3. c=True
  4. def d():
  5. e=456
  6. f='world'
  7. print(globals())
'
运行

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

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

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

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

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

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