python3动态生成变量_【转载】 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 in enumerate(listTemp):

4 createVar['a'+i] = s

5 print a1,a2,a3

6 #......

1 def foo(args):

2 x=1

3 print locals()

4

5 foo(123)

6

7 #将会得到 {'arg':123,'x':1}

1 for i in range(3):

2 locals()['a'+str(i)]=i

3 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 class test(object) :

2 def __init__(self):

3 dic={'a':'aa','b':'bb'}

4 for i in dic.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()")

提示: 动态创建字典会带来额外开销,如果可以的话,请尽量指定键值对。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/498474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“芯”战争,人工智能芯片研发攻略

来源&#xff1a;半导体行业观察、安信证券 概要&#xff1a;深度学习作为新一代计算模式&#xff0c;近年来&#xff0c;其所取得的前所未有的突破掀起了人工智能新一轮发展热潮。 在全球科技领域&#xff0c;人工智能无疑是最热门的领域。这种并不算新的应用场景将会带动新一…

红米k30pro工程测试代码_3299起?红米K30Pro官宣3.24发 对比米10 追悼会来了?

声音 | 小白今天上午&#xff0c;官方正式宣布将于 3月24日 下周二 举行Redmi K30 Pro旗舰新品线上发布会。有些尴尬的是&#xff0c;官方宣布的K30Pro发布会最终日期和早前卢伟冰预热的完全不一样...似乎也间接说明卢总的话也不能全信(华为P40系列全球发布会是3月26日&#xf…

Facebook打算与Google的人工智能一较高下吗?

译者&#xff1a;彭婷 概要&#xff1a;每年&#xff0c;一些个人爱好者和大型团队会构建人工智能机器人&#xff0c;以争夺“星际争霸”。今年&#xff0c;Facebook在悄无声息中也加入了这场比赛。如此一来&#xff0c;他们的较量情形会是怎样的呢&#xff1f; 每年&#xff0…

c# 读hex_在C#中将string转换为hexstring

首先你需要把它放到一个byte[] &#xff0c;所以这样做&#xff1a;byte[] ba Encoding.Default.GetBytes("sample");然后你可以得到string&#xff1a;var hexString BitConverter.ToString(ba);现在&#xff0c;这将返回一个带有破折号( - )的string&#xff0c;…

微云存照片会变模糊吗_手机自带微云台防抖,VivoX50系列不一般

&#xfeff;喜欢我的文章吗&#xff1f;请点上方蓝色字体关注吧VIVO X50系列共发布三个版本&#xff1a;标准版&#xff0c;pro版&#xff0c;pro版。其售价格分别为&#xff1a;3498&#xff0c;4298&#xff0c;4998元。X50标准版很一般&#xff0c;完全不建议购买。毕竟都卖…

四大科技巨头都如何利用AI来相互竞争?

来源&#xff1a;全球人工智能 概要&#xff1a;想想时下大型科技公司悉数追逐的最火爆、竞争最激烈的那些行业&#xff1a;家居自动化&#xff0c;无人驾驶汽车&#xff0c;增强现实。而贯穿所有这些商业机会的主题又是什么呢&#xff1f;人工智能。 据国外媒体Fast Company报…

log4j 禁止类输出日志_SpringBoot统一日志处理原理

阅读推荐程序员跳槽时机已到&#xff0c;闲聊中面试官无意泄题SpringBoot作为日常开发利器&#xff0c;开箱即用&#xff0c;大量的star等已经成为节省开发的重要框架之一&#xff0c;但是各个框架的star中引入的日志框架却不尽相同&#xff0c;有的是log4j&#xff0c;有的是s…

AI 三大教父齐聚深度学习峰会,讨论尖端研究进展

来源&#xff1a;36氪 概要&#xff1a;近日&#xff0c;深度学习峰会正在加拿大蒙特利尔举行&#xff0c;有史以来第一次3位AI教父&#xff1a;Yoshua Bengio、Yann LeCun以及 Geoffrey Hinton聚在了一起出席RE•WORK举办的一个专题讨论会。 近日&#xff0c;深度学习峰会正在…

人工智能预测之七宗罪

译者&#xff1a;李凌 概要&#xff1a;一些有关人工智能和机器人未来发展的事情疯狂地将我们包围——人们对未来人工智能和机器人会变得如何强大、发展的如何快以及对我们工作产生的影响充满担忧。 错误的推断&#xff0c;有限的想象力和其他一些常见错误&#xff0c;会影响我…

xd使用技巧_魔兽世界怀旧服老玩家才会的治疗技巧,这四个技能需要看时机选择...

游戏中我们是朋友&#xff0c;聊天侃地&#xff0c;在这里我们可以无拘无束的发言&#xff0c;不会有任何人阻挠&#xff0c;还有大家最喜欢吐槽的小编&#xff0c;请把口水收集好&#xff0c;随时准备和小编一起吐槽&#xff01;魔兽世界怀旧服老玩家才会的治疗技巧&#xff0…

世界各大天文台联合预警:今晚公布“引力波重要发现”

来源&#xff1a;科学网 概要&#xff1a;引力波是爱因斯坦广义相对论实验验证中最后一块缺失的“拼图”。而发现引力波的三位美国科学家也刚刚在本月初毫无争议地获得了诺贝尔物理学奖。 央广网北京10月16日消息&#xff08;记者张加宁&#xff09;据中国之声《新闻纵横》报道…

3 运行时间太长_10大污水处理预处理系统动态图及运行管理、故障处理

污水处理厂的污水处理系统的维护、保养和故障维修&#xff0c;是每一位污师必备的技能&#xff0c;平时好的维护和保养可以很大程度的减少工厂的损失&#xff0c;今天小七从化工707app水处理板块的电子书《污水处理预处理系统的运行管理》&#xff0c;为大家截取了部分内容&…

jq处理返回来json_4个小窍门,让你在Python中高效使用JSON

全文共1990字&#xff0c;预计学习时长5分钟图源&#xff1a;unsplash字典和列表是 Python的两种数据类型&#xff0c;也是用来处理JSON的完美工具。本文将主要分享以下内容&#xff1a; 如何载入、编写JSON&#xff1f; 如何在命令行上优化、校验JSON&#xff1f; 如何通过使用…

谷歌、亚马逊、微软、IBM…这些巨头都已如何通过AI赚到钱了?

来源&#xff1a; 钛媒体 概要&#xff1a;巨头们各自所持有的AI技术里隐藏的商机&#xff1a;这些技术不仅能完善自家的产品&#xff0c;还能作为一种增值服务卖给企业级用户。 巨头们各自所持有的AI技术里隐藏的商机&#xff1a;这些技术不仅能完善自家的产品&#xff0c;还能…

ros自己写避障算法_slam导航避障算法,让无人机自主避障教学研究迈向更高处...

随着消费级无人机技术的不断成熟,不断完善的自动避障系统可以极大的减少因操作失误而带来的各项损失,目前避障能力正逐渐成为了无人机自动化或智能化的关键点所在。而根据无人机避障技术的原理和发展趋势,可以将无人机避障技术分为三重阶段&#xff1a;即感知障碍物阶段、绕过障…

库克:和App Store一样,AR技术必将改变世界

作者&#xff1a;李秀琴 概要&#xff1a;日前&#xff0c;苹果公司CEO蒂姆库克&#xff08;Tim Cook&#xff09;接受了英国《独立报》的专访&#xff0c;详谈了他对AR&#xff08;增强现实&#xff09;即将改变人类生活的看法&#xff0c;以及为何他会认为世界已经在慢慢变好…

高级人工智能之群体智能:粒子群算法

1.粒子群算法 粒子群优化算法&#xff08;Particle Swarm Optimization, PSO&#xff09;是一种基于群体协作和信息共享的优化技术。它由Kennedy和Eberhart于1995年提出&#xff0c;灵感来源于鸟群和鱼群的社会行为。PSO是解决连续空间优化问题的有效方法&#xff0c;特别适合…

机器人产业发展情况

来源&#xff1a; 战略前沿技术 全球机器人产业发展现状 一、机器人概述 1.机器人概念 采用国际机器人联合会对机器人的概念&#xff0c;即&#xff1a;机器人就是一种半自主或全自主工作的机器&#xff0c;能完成有益于人类的工作。 2.机器人分类 机器人包括工业机器人和服务机…

github java开源项目经验_3月份GitHub上最热门的Java开源项目

今天&#xff0c;我们来盘点3月份GitHub上最热门的Java项目的时候了&#xff0c;如果你每月都有关注猿妹发布的排行榜&#xff0c;那么本月的Java项目对你来说一定不陌生&#xff0c;这些都是曾经多次出现在榜单中的项目&#xff1a;1advanced-javahttps://github.com/doocs/ad…

智能传感器深度报告:未来机器感官的百亿美元市场【附下载】

来源&#xff1a;智东西内参 概要&#xff1a;2019年&#xff0c;国内智能传感器市场规模预计将达到137亿美元&#xff0c;本土化率将从2015年的13%提升到27%。 2019年&#xff0c;国内智能传感器市场规模预计将达到137亿美元&#xff0c;本土化率将从2015年的13%提升到27%。 …