动态变量名赋值 使用 exec 动态赋值 exec 在 python3 中是内置函数,它支持 python 代码的动态执行。 示例: 利用命名空间动态赋值 在Python的命名空间中,将变量名与值存储在字典中, 示例 在类中使用动态变量 Python 的类对象的属性储存在的 dict 中。dict 是一个词典,键为属性名,值对应属性的值。 示例 调用动态变量 事实上,对于重复性的变量,我们一般不会这样调用变量,如:var0, var1, var2, var3 ,var4…varN,可以利用下面方法动态调用变量。 先定义如下变量: 示例 利用 exec 函数 同样地,可以使用 exec 调用变量In 利用命名空间 因为命令空间的locals()与globals()均会返回一个字典,利用字典的get方法获取变量的值 下面是其他网友的补充 Python 定义动态变量 问题描述 在做数据处理时,对一些分组得来的数据,所做的操作大同小异,变量的命名也都拥有相同的结构,比如对每个月份的数据求均值、方差等统计量,变量的命名可取为“n月的均值”,“n月的方差”,抽象出来就是“n月的 ‘m统计量’ ” 在编程实现的时候,对上述变量的定义以及引用,都可以一同实现,从而减少了重复代码的数量 实现的时候遇到了动态定义变量的问题,这里总结一下 利用 exec 动态定义变量 我们可以如此动态定义变量 一般这种语句都可以正确定义变量,但有时上述语句会出错,比如后方传入的expression返回一个 DataFrameGroupBy 类变量时,会出现语法错误 原因未明…经过搜索,我发现还有另一种定义方法,可以解决上述问题 这种方法有两个问题: 1、利用format替换的部分需在变量名的最后方,例 month_{} ,方可执行成功,而 {}_month 便不可行,原因待查…还请各位同学指点! File “”, line 1 2、这种方法定义的变量,只在 exec 中有效,在 exec 语句外便无效,这或许是因为python将 exec 中复杂的指令当做了局部变量,可以在利用以下语句检验 其中locals()与globals()是python的内部方法,它们提供了基于字典的访问局部与全局变量的方式。 如果返回 True ,说明当前环境处于全局级别,在 exec 中的语句可以在 exec 外生效 如果返回 False ,说明当期环境处于局部级别,定义的变量被看做局部变量,所以不能在 exec 外调用,可以在语句中传入globals()使其在全局生效 exec 方式太容易混乱,还有另外一种动态定义变量的方法,便是上文提到的globals()与locals()方法 利用命名空间动态定义变量 首先创建locals()的副本 varDict = locals() 对于上文提到的变量便可如此定义 非常感谢你的阅读
在使用 tkinter 时需要动态生成变量,如动态生成 var1…var10 变量。In [1]: for i in range(5): ...: exec('var{} = {}'.format(i, i)) ...: In [2]: print(var0, var1, var2, var3 ,var4) 0 1 2 3 4
可以通过locals(),globals()函数分别获取局部命名空间和全局命名空间。>>> names = locals() >>> for i in range(5): ... names['n' + str(i) ] = i ... >>> print(n0, n1, n2, n3, n4) 0 1 2 3 4 >>>
>>> print(n0, n1, n2, n3, n4) 0 1 2 3 4 >>> class Test_class(object): ... def __init__(self): ... names = self.__dict__ ... for i in range(5): ... names['n' + str(i)] = i ... >>> t = Test_class() >>> print(t.n0, t.n1, t.n2, t.n3, t.n4) 0 1 2 3 4
>>> for i in range(5): ... exec('var{} = {}'.format(i, i)) ... >>> print(var0, var1, var2, var3 ,var4) 0 1 2 3 4
[3]: for i in range(5): ...: exec('print(var{}, end=" ")'.format(i)) ...: 0 1 2 3 4
In [4]: names = locals() In [5]: for i in range(5): ...: print(names.get('var' + str(i)), end=' ') ...: 0 1 2 3 4
for n in range(1, 13): exec('month_{} = {}'.format(n, value or expression))
File "<string>", line 1 month_12 = <pandas.core.groupby.generic.DataFrameGroupBy object at 0x000001F40E46E160> ^ SyntaxError: invalid syntax
for n in range(1, 13): exec('month_{} = temp'.format(n), {'temp': expression})
12_month = temp
^
SyntaxError: invalid tokenfor n in range(1, 13): exec('month_{} = tempnprint(locals()==globals())'.format(n), {'temp': expression})
for n in range(1, 13): exec('month_{} = temp'.format(n), {'temp': expression}, globals())
for n in range(1, 13): varDict['month_'+str(n)] = value or expression
大学的时候选择了自学python,工作了发现吃了计算机基础不好的亏,学历不行这是
没办法的事,只能后天弥补,于是在编码之外开启了自己的逆袭之路,不断的学习python核心知识,深入的研习计算机基础知识,整理好了,如果你也不甘平庸,那就与我一起在编码之外,不断成长吧!
其实这里不仅有技术,更有那些技术之外的东西,比如,如何做一个精致的程序员,而不是“屌丝”,程序员本身就是高贵的一种存在啊,难道不是吗?[点击加入]想做你自己想成为高尚人,加油!
@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算