阅读量

原创教程,严禁转载。引用本文,请署名 Python中文网, http://www.zglg.work


Python动态生成变量

前几天有同事问我,如何动态生成10个变量名,如a1,a2,...,a10,当时我并没有给出今天文章中这个更好的方法,此方法也是我刚找到的,所以记录在这篇文章里。

使用的方法是Python内置函数locals(),它返回一个字典,记录着当前所有局部变量。动态生成10个变量a1,a2,...,a10,可以写为:

In [29]: ld = locals() 
    ...: for i in range(1,11): 
    ...:   ld['a' + str(i)] = 0 # 默认值设置为0     

此时创建出变量a1-a10

In [30]: a1                             
Out[30]: 0

In [31]: a5                  
Out[31]: 0

locals用于创建局部变量,如果想封装上面几行代码为一个函数,使用locals动态创建变量后,只能在函数内部访问,外面就不能访问到了。另外一个globals函数因为创建的是全局变量,所以得使用它。

def dynamic_variable(n, variable_prefix='a'):
  for i in range(1,n+1):
    gd = globals()
    gd[variable_prefix+str(i)] = 0 # 新创建的n个变量,初始值都设置为0

调用方法dynamic_variable(10,'v')后,我们便可以引用变量v1,v2,... v10

In [35]: dynamic_variable(10,'v')                       
In [36]: v6                     
Out[36]: 0

In [37]: v10                   
Out[37]: 0

以上就是使用localsglobals动态创建变量的基本方法,动态创建变量在需要显示创建并分析多变量问题,如多元分析等场景中有一定使用价值。更多用法欢迎留言。


Python 20个专题完整目录:

Python前言

Google Python代码风格指南

Python数字

Python正则之提取正整数和大于0浮点数

Python字符串

CSV读写乱码问题

Unicode标准化

Unicode, UTF-8, ASCII

Python动态生成变量

Python字符串对齐

Python小项目1:文本句子关键词的KWIC显示

Python列表

Python流程控制

Python编程习惯专题

Python函数专题

Python面向对象编程-上篇

Python面向对象编程-下篇

Python十大数据结构使用专题

Python包和模块使用注意事项专题

Python正则使用专题

Python时间专题

Python装饰器专题

Python迭代器使用专题

Python生成器使用专题

Python 绘图入门专题

Matplotlib绘图基础专题

Matplotlib绘图进阶专题

Matplotlib绘图案例

NumPy图解入门