Python字符串转变量,python输出字符和数字变量

Python字符串转变量,python输出字符和数字变量,Python将字符串常量转化为变量方法总结

在这个内容中,我们整理了关于Python将字符串常量转换为变量的方法的知识点汇总。有需要的朋友可以学习一下。

前几天我们Python猫交流学习群的同学M问了一个问题。这个问题挺有意思的。经过初步讨论,我们认为它无解。

不过我觉得还是有价值的,应该继续思考怎么解决,所以我在私人知识星球上记录了下来。

没想到,第二天就有两个同学相继给出了解决方案!

于是,群里出现了一轮热烈的技术交流。

本文对相关内容的要点进行了梳理,然后引申到进一步的学习话题,希望对你有所帮助。

1.如何动态生成变量名?

m的问题如下:

不好意思,各位。请问我一个问题。已知list=['A ',' B ',' C ',' D'],如何得到以list中元素命名的新list A=[],B=[],C=[],D=[]?

可以理解,这个问题的意思是字符串内容作为其他对象的变量名。

列表中的元素是字符串,其中' a'-'d '是常量,在所需的结果中,A-D是变量。

如果您强制将常数直接用作变量,它将报告一个错误:

A'=[]

.语法错误:不能赋值给文本

错误报告中的Literal是指literal quantity,这是计算机科学中的一个常用概念,用于表示源代码中的固定值。比如整数、浮点数、字符串等基本类型都是文字量。

字面量是指一个量本身,可以理解为一个原子实体。当然不能再分配了。

所以提取出来的字符串的内容不能直接作为变量名,需要另辟蹊径。

新手可能会想,list[0]=[]可以吗?当然不是,因为没有A,那么A=list[0]后面跟A=[]呢?那也不行,因为这里的A是你凭空定义的,不是从现有条件中产生的。

当时小组里只有两三个同学参与讨论,我们也没有想到解决的办法。不过,我觉得这个话题很有意思,值得深思。

因为,如果能解决这个问题,就意味着无需预定义就能动态生成变量名,既能减少变量命名的麻烦,又能实现自动编码!

想象未来。人工智能在写代码的时候,如果能根据已知的条件动态生成变量名,那么写代码的过程岂不是顺畅很多?(据说现在人工智能可以写代码了。不知道它取变量名的时候用的什么方法?)

2、办法总是有的

最近,有几个广告客户混进了学习小组。为此我决定提高考试的门槛,比如用群里的题来做一个考核。

没想到,第一个被考核的同学Q几乎不假思索地说出了一个解决上述问题的想法。偏偏这么巧,几乎在同一时间,群里的J同学给出了另一种解决方案(他没有看到群里的讨论,但是看到了知识星球的记录,所以知道了这个问题)。

也就是说,前一天晚上认为没有解决的问题,第二天得到了两种不同的解决方案!

那么,他们的答案是什么?

# J的回答

list1=['A ',' B ',' C ',' D']

对于列表1中的I:

globals()[i]=[]

A

[]

这种方法通过修改全局名称空间巧妙地“定义”了新的变量。globals()方法拿出一个字典,字符串‘a’是其中一个键值,它只是全局命名空间中的一个变量,从而实现了常量到变量的转换。

在数据结构层面,空list []绑定到其字符串键值作为值,而在应用层面,绑定到变量名作为变量内容。

看到这个回答,我突然想起来了。上个月转载了一篇文章《Python 动态赋值的陷阱》,讲的是动态赋值变量的问题!我好像只关注了globals()和locals()用法的区别,并没有真正把握它们原本的用途。

同学J说,就是看了那篇文章才学会这个方法的。那很有趣。我分享了自己的知识,然后被J同学吸收掌握。最后反馈过来解决了我的问题。

真切感受到知识分享的魅力:知识在流动中获得生命,在碰撞中闪耀。

同时,我也真正明白了一个互助学习小组的好处:让别人受益的人也会让自己受益,互相帮助的人会共同进步。

3、动态执行代码的方法

一群新学生q给出了不同的答案:

# Q同学的回答

list1=['A ',' B ',' C ',' D']

对于列表1中的I:

exec(f“{ I }=[]')

A

[]

他的写作方法使用了Python 3.6引入的f-strings特性。其实在更低的版本中,也是可以实现的。只需要保证exec()方法收到的参数是包含变量I的字符串,比如这样写:

#以下代码可以替换上面示例的第4行

exec(i '=[]')

#或:

exec('{}=[]')。格式(一))

#或:

执行(')。join([i,'=[]']))

这几种写法的区别只是字符串拼接方法的区别。如何拼接琴弦以及不同方法的区别请参考《详解Python拼接字符串的七种方式》。

这个答案的核心在于exec()方法,这个方法是内置的,用于执行存储在字符串或文件中的代码段。

其基本用法如下:

exec('x=1 2 ')

x

#执行代码片段

s=' ' '

x=10

y=20

总和=x y

打印(总和)

'''

执行人员

30

看完了exec()的用法,我们再回来看看同学q的回答,我从for- loop中取出的是一个字符串,拼接后的字符串经过exec()处理,得到动态写代码的效果。

也就是说,因为字符串常量的内容是作为有效代码执行的,所以其中的' A'-'D '元素有了新的身份,变成了最终的A-D变量名。

这个方法看起来很简单,但是因为exec()方法实在是太不常见了,直到Q提出来我们才醒悟。

注意:在Python3中,exec()是内置方法;在Python2中,exec是一个语句,另外还有一个execfile()方法。当这两种方法结合在一起时,它就变成了Python3中的exec()方法。本文使用Python3。

4、总结

把原问题抽象一下,其实是问“如何使用字符串内容作为其他对象的变量名”,再进一步,就是3354“如何把常量转换成变量”。

用直接赋值的静态方法是行不通的。

两位同学提出的方法是间接动态法:一种是动态赋值变量,通过修改命名空间植入变量;一种是动态执行代码,可以说是通过“后门”,插入变量。

这两种方法的目的是一样的。不管是白猫还是黑猫,都是抓老鼠的。

这两种方法已经给我们带来了宝贵的启示。与此同时,因为他们,群里的朋友们也在分歧地讨论着一些相关的话题。比如同学S提出了另一种修改命名空间中变量的方法,同学L提到了eval()的含义,eval()和exec()的区别,我发现了为什么要慎用eval()。同学C和H提到了eval()

虽然有些话题在群聊中无法充分展开,但是这些话题的延伸知识极大的丰富了本文开头的问题。这个小问题牵连了两大知识体系。

最后,真的要感谢这群热爱学习的优秀同志们!除了文中提到的,也有同学做出了积极的贡献,大家都很帮忙!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 如何对python字符串中字符进行替换,python 替换字符串
  • 如何对python字符串中字符进行替换,python 替换字符串,python字符串替换的2种方法
  • Python字符串转变量,python输出字符和数字变量,Python将字符串常量转化为变量方法总结
  • python字符串讲解,菜鸟教程python字符串
  • python字符串讲解,菜鸟教程python字符串,python 字符串详解
  • python字符串根据字符截取,python字符串的切片操作
  • python字符串根据字符截取,python字符串的切片操作,Python中的字符串切片(截取字符串)的详解
  • python中字符串的切片,python字符串
  • python中字符串的切片,python字符串,Python中字符串切片详解
  • python 去除字符串中的空格,python字符串去除空格
  • python 去除字符串中的空格,python字符串去除空格,Python 字符串去除空格的五种方法
  • ,,Python字符串拼接的4种方法实例
  • ,,Python字符串匹配之6种方法的使用详解
  • python编写函数去掉字符串中的空格,python字符串怎么去空格
  • python中换行字符,python字符串怎么换行
  • 留言与评论(共有 条评论)
       
    验证码: