python创建变量_【转载】 Python动态生成变量
用Python循环创建多个变量, 如创建 a1= 、a2= 、a3= 、a4= 、a5= 或 self.a1= 、self.a2= 、 self.a3=
一. 可以通过python的内置函数locals 来完成
locals是python的内置函数,他可以以字典的方式去访问局部和全局变量。
python里面用名字空间记录着变量,就像javascript的window一样,他记录着各种全局变量。
每个模块,每个函数都有自己的名字空间,记录着变量,常量,类的命名和值。
就像JS一样,当python在使用变量时,会按照下面的步骤去搜索:
1、函数或类的局部变量。
2、全局变量。
3、内置变量。
以上三个步骤,其中一下步骤找到对应的变量,就不会再往下找。如果在这三个步骤都找不到,就会抛出异常。
Python 也可以像javascript那样动态生成变量。我们看javascript的动态生成变量:
1 var obj ={};2 for (var i =0, len = 10; i < len; i++){3 obj['a' + i] =i;4 }5
6 console.log(i); //{'a0':0, 'a1':1....,'a9':9}
Python中的locals 方法
1 createVar =locals()2 listTemp = range(1,10)3 for i,s inenumerate(listTemp):4 createVar['a'+i] =s5 printa1,a2,a36 #......
1 deffoo(args):2 x=1
3 printlocals()4
5 foo(123)6
7 #将会得到 {'arg':123,'x':1}
1 for i in range(3):2 locals()['a'+str(i)]=i3 print 'a'+str(i)
打印结果:变量名: a0 a1 a2 对应值 a0=0 a1=1 a2=2
二. 对于class,推荐使用setattr()方法
setattr给对象添加属性或者方法
setattr(
object, name, value)
This is the counterpart of getattr(). The arguments
are an object, a string and an arbitrary value. The string may name an existing
attribute or a new attribute. The function assigns the value to the attribute,
provided the object allows it. For example, setattr(x,
'foobar', 123) is equivalent to
x.foobar = 123.
1 classtest(object) :2 def __init__(self):3 dic={'a':'aa','b':'bb'}4 for i indic.keys() :5 setattr(self,i,dic[i]) #第一个参数是对象,这里的self其实就是test.第二个参数是变量名,第三个是变量值
6 print(self.a)7 print(self.b)8 t=test()
打印结果: aa , bb
动态打印self变量:
1 exec("self.a"+str(i)+".move("+str(x)+","+str(y)+")")2 exec("self.a"+str(i)+".show()")
提示: 动态创建字典会带来额外开销,如果可以的话,请尽量指定键值对。
python创建变量_【转载】 Python动态生成变量相关推荐
- python创建矩阵_在Python中创建矩阵的Python程序
python创建矩阵 There is no specific data type in Python to create a matrix, we can use list of list to c ...
- python 创建工具包_使用Python工具建立网站
python 创建工具包 并非每个网站都是博客,博客的主要功能是帖子列表,每个帖子都有特定的时间戳,以指示其"新鲜度". 有时,您只想要一个网站 . 也许您是一名业余(或专业!)厨 ...
- python创建按钮_掌握Python之Tkinter按钮组件的创建及使用
不学python功能按钮肯定是不完整的啊,尤其是在使用python过程中,大量需要使用的tkinter,要怎么利用这个模块去创建个功能键呢?一起来看下吧~ 使用tkinter.Tk() 生成主窗口(r ...
- python创建数据集_使用Python从图像创建数据集以进行人脸识别
我正在尝试用Python编写人脸识别程序(我将应用k-nn算法进行分类). 首先,我将图像转换为灰度,然后创建了一个长列向量(通过使用Opencv的imagedata函数),该向量具有图像的像素(总共 ...
- format函数python的顺序_[转载] Python中format函数用法
Python中format函数用法 format优点 format是python2.6新增的格式化字符串的方法,相对于老版的%格式方法,它有很多优点. 1.不需要理会数据类型的问题,在%方法中%s只能 ...
- python创建数据集_利用 python 在本地数据集创建训练集和测试集
根据自己的数据集,自动划分训练集.测试集 举个栗子: 已经分好的文件: origin 文件夹有三类数据:good,bad,m,每类文件夹包含不同数量的图片,如下: 需要生成数据集的文件: 结果:根据设 ...
- python3动态生成变量_【转载】 Python动态生成变量
用Python循环创建多个变量, 如创建 a1= .a2= .a3= .a4= .a5= 或 self.a1= .self.a2= . self.a3= 一. 可以通 ...
- 【转载】 Python动态生成变量
用Python循环创建多个变量, 如创建 a1= .a2= .a3= .a4= .a5= 或 self.a1= .self.a2= . self.a3= 一. 可以通 ...
- Python 动态生成变量
用Python循环创建多个变量, 如创建 a1= .a2= .a3= .a4= .a5= 或 self.a1= .self.a2= . self.a3= 一. 可以通 ...
最新文章
- 生产订单总目标成本为0
- shell中的各种括号的使用方法
- C#之获取网页标题...
- WinCE驱动开发问题精华集锦
- Hanoi(汉诺)塔问题
- verilog找不到模块_工欲善其事,必先利其器 verilog编辑器搭建
- redis服务端的maxclient和最大连接空闲时间设置
- 通过docker-composer启动容器nginx,并完成spring.boot的web站点端口转发
- 涨姿势 | 如何修复硬盘,以及如何避免硬盘损坏
- 颜值测试API,微软小冰颜值,颜值API
- FPGA 之 SOPC 系列(七)NIOS II 高级技术
- M2增速8%处于历史地位——解读10月货币数据
- 在AI里怎么把一行字拆成单个的字,并且可编辑
- 解决curl ftp:192.168.4.12 (67) Access denied: 530和500问题
- Cannot format given Object as a Number
- 网易mumu模拟器去广告纯净版 v1.26.1.1
- 机器学习 —— 周志华
- 稳压二极管与TVS管
- 原生m1/m2 Sketch v90 for Mac最新中文版Sketch已更新,已解决闪退打不开问题
- run.rat闪退问题