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()")

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

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

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

相关文章

联想服务器忘记系统登录密码,联想路由器登陆密码忘记了怎么办

路由器是互联网系统中的重要组成部分&#xff0c;是连接因特网中局域网和广域网的设备&#xff0c;它可以根据信道实际的情况选择最合适的路径&#xff0c;那么你知道联想路由器登陆密码忘记了怎么办吗?下面是学习啦小编整理的一些关于联想路由器登陆密码忘记了的相关资料&…

中断、异常、处理对于操作系统的概念

为什么我们的应用程序不直接去访问我们的外部设备&#xff0c;为什么要通过操作系统去执行 1.操作系统对于计算机来说是被内核信任的第三方软件 2.只有内核可以执行特权指令 3.应用程序实际上是不可信任的 中断、异常和系统调用三者在操作系统中有何作用&#xff1f; 源头不…

编写五子棋的完整python代码_python实现五子棋游戏

本文实例为大家分享了python实现五子棋游戏的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 话不多说&#xff0c;直接上代码&#xff1a; 全部工程文件&#xff0c;在GitHub&#xff1a;五子棋 效果预览&#xff1a;#!/usr/bin/env python3 #-*- coding:utf-8 -*- …

服务器网站显示多协议,解决高防IIS8服务器https协议多个同时访问的解决方法

iis提示:至少一个其他网站正在使用同一个https绑定&#xff0c;而次绑定用另一个证书配置。确实要重用https绑定并将其他网站重新指定为使用新证书吗&#xff1f;网友解释&#xff1a;SNI指是一项用于改善SSL/TLS的技术&#xff0c;在SSLv3/TLSv1中被启用。它允许客户端在发起S…

如何计算实际物理地址?

1.确认物理地址&#xff1a; 2.由逻辑地址的页号去页表中查找对应的物理内存的页号 3.通过物理页号加上偏移量得到实际物理地址 例如&#xff1a;已知每页大小为1024byte&#xff08;逻辑页表和实际内存分页的大小都是1024byte&#xff09; 那么&#xff08;3,1023&#xf…

python高效处理文件_使用Python语言高效地处理一个文本文件

使用Python语言高效地处理一个文本文件&#xff1a; # -- encoding: utf-8 -- # 脚本功能&#xff1a;在指定的文件中查找指定的字符串 # 此脚本接受两个参数 # 参数1&#xff1a;指定一个文件名&#xff0c;在这个文件中查找字符串 # 参数2&#xff1a;指定一个字符串用于查找…

zabbix加vm虚拟服务器,zabbix监控vmware exsi主机的图文步骤

1、进入虚拟化vcenter中&#xff0c;用浏览器登录(客户端没找到地方设置)&#xff0c;新建一个只读用户zabbix。2、 登录vcenter客户端,将新建用户授权为只读授权过后可以使用新账号登录测试一下。3、开启exsi主机Managed Object Browser (MOB)功能&#xff0c;没有就默认开着的…

内存的覆盖和交换

覆盖&#xff1a;是程序员手动将程序内的互不影响的各个模块放在内存中&#xff0c;需要程序员自己把整个程序划分为若干个小的功能模块&#xff0c;并 交换&#xff1a;由操作系统完成程序之间的swap out 和 swap in&#xff08;由操作系统内部完成&#xff09; 未完待续

python tkinter控件_python tkinter 控件与布局 项目实战

from tkinter import * importtkinter.messagebox as messageboxclassTkdemo():def __init__(self): masterTk() master.title("missWjz") master.geometry(800x800)#创建菜单栏 menubar Menu(master) master.config(menumenubar)#创建下拉菜单栏 filemenu Menu(men…

服务器开设虚拟主机,服务器自动开设虚拟主机

服务器自动开设虚拟主机 内容精选换一换Linux操作系统XEN实例变更为KVM实例前&#xff0c;必须已完成必要的驱动安装和配置。当您需要变更的Linux操作系统的XEN实例比较多时候&#xff0c;推荐您使用本节的批量自动配置的方法安装驱动&#xff0c;通过自动化脚本的方式批量为Li…

PS小知识

PS扣完背景后&#xff0c;保存时要选择PNG格式&#xff0c;而不是JPEG格式 JPEG格式不支持透明背景 扣了后一样是白色背景 PHG支持透明背景 推荐一个抠图网址 叫 搞定设计 抠图还挺好用的 免费

python人工智能是什么意思_Python人工智能之路 jieba gensim 最好别分家之最简单的相似度实现...

简单的问答已经实现了,那么问题也跟着出现了,我不能确定问题一定是"你叫什么名字",也有可能是"你是谁","你叫啥"之类的,这就引出了人工智能中的另一项技术: 自然语言处理(NLP) : 大概意思就是 让计算机明白一句话要表达的意思,NLP就相当于计算机…

服务器c的环境配置文件,配置linux服务器环境(jdk+tomcat+mysql+nginx+redis+svn+nexus的maven私服)...

一.安装jdk&#xff1a;1.远程连接工具我用的是xshell6&#xff1b;切换到root用户2.创建安装目录&#xff1a;创建安装目录3.将jdk上传到目录下&#xff0c;并解压&#xff1a;上传文件解压tar zxvf jdk-8u191-linux-x64.tar.gz文件解压后4.修改配置文件&#xff1a;vim /etc/…

Android studio如何写滚动视图

在布局文件里面的布局改为ScrollView&#xff08;垂直滚动&#xff09; 但是要注意&#xff0c;ScrollView只允许一个子元素&#xff0c;需要用一个LinearLayout嵌套作为它的子元素使用 加入后就有滚动效果了 还有一个是水平滚动 HorizontalScrollView

springboot启动_Spring boot启动原理解析

作者&#xff1a;平凡希链接&#xff1a;https://www.cnblogs.com/xiaoxi/p/7999885.html我们开发任何一个Spring Boot项目&#xff0c;都会用到如下的启动类SpringBootApplicationpublic class Application { public static void main(String[] args) { SpringAppli…

PR高清60帧补帧教学附插件下载,目前最流畅的补帧教学

先说明一下&#xff0c;这个步骤是适合有点PR基础的人去观看的&#xff0c;小白的话可能看起来会有点懵逼 来了来了&#xff0c;直接输入干货 第一步&#xff1a;创建序列&#xff0c;不要直接拖入素材&#xff0c;序列要在设置-->编辑模式-->选为自定义-->时基--&g…

把一个dataset的表放在另一个dataset里面_现在开始:用你的Mac训练和部署一个图像分类模型...

可能有些同学学习机器学习的时候比较迷茫&#xff0c;不知道该怎么上手&#xff0c;看了很多经典书籍介绍的各种算法&#xff0c;但还是不知道怎么用它来解决问题&#xff0c;就算知道了&#xff0c;又发现需要准备环境、准备训练和部署的机器&#xff0c;啊&#xff0c;好麻烦…

Android studio的布局总结

首先我们的安卓的页面实际上的组件就是需要一些东西控制住他们 这些东西是什么呢&#xff0c;叫做布局管理器&#xff0c;一开始的开发中有常用的5款布局管理器 下面我来一一介绍其中的功能和一些关键字属性 1.relativelayout 相对布局管理器 属性&#xff1a;android:gra…

安装redis提示[test] error 2_安装PHP Redis扩展

安装PHP Redis扩展1、查看本机已经安装的Redis版本brew info redisredis: stable 5.0.7 (bottled), HEAD Persistent key-value database, with built-in net interface https://redis.io//usr/local/Cellar/redis/5.0.7 (13 files, 3.1MB) * Poured from bottle on 2020-02-19…

Android studio的监听器初学者要懂

首先&#xff0c;什么是监听器呢&#xff1f;监听器的作用是什么呢&#xff1f;我们如何去使用他&#xff1f; 1.什么是监听器&#xff1a;监听器的作用是什么呢&#xff1f; 监听器顾名思义&#xff0c;一旦你的按钮或者其他组件被你用例如鼠标点击&#xff0c;就会产生一个…