怎么在Python中将字符串常量转化为变量

  介绍

本文章向大家介绍怎么在Python中将字符串常量转化为变量的基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

Python可以做什么

Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂,容易入门,功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,网页开发等。

<强> 1,如何动态生成变量名?

M同学的问题如下:

打扰一下大家,请教一个问题,已知列表=[& # 39;一个# 39;& # 39;B # 39;, & # 39; C # 39;, & # 39; D # 39;],如何才能得到以列表中元素命名的新列表=[],B=[], C=[], D=[]呢?

简单理解,这个问题的意思是,将字符串内容作为其它对象的变量名。

中列表的元素是字符串,此处的‘一个# 39;- d # 39;是常量,而在要求的结果中,模拟是变量。

如果强行直接将常量当做变量使用,它会报错:

祝辞祝辞祝辞& # 39;一个# 39;=[]
…SyntaxError:停下来# 39;t分配文字

报错中的文字指的是字面量,这是计算机科学中常见的一个概念,用于表达源代码中的固定值,例如,整数,浮点数,字符串等基本类型,就是字面量。

字面量指的就是一个量本身,可以理解为一种原子性的实体,当然不能再被赋值了。

所以,取出的字符串内容,并不能直接用作变量名,需要另想办法。

有初学者可能会想,名单[0]=[]行不行吗?当然不行,因为没有出现。那[0]=列表,接着=[]呢?那也不行,因为这里的一个是你凭空定义出来的,而不是从已有条件中生成的。

当时,群里只有两三个同学参与了讨论,我们没想到解决办法。但是,我觉得这个题目很有意思,值得玩味。

因为,如果能解决这个问题,那就意味着可以不作预先定义,而是动态地生成变量名,这不仅能减少给变量取名的麻烦,还实现了自动编码!

可以设想一下未来,人工智能在编写代码的时候,如果能根据已知条件,动态生成变量名,那编写代码的过程不就顺利多了么?(据说,现在已经有人工智能可以编写代码了,不知它在取变量名时,是用的什么方法?)

<强> 2,办法总是有的

最近,学习群里蒙混进来了几个打广告的,为此,我决定提高审核门槛,例如,用群里的问题来作个考核。

万万没想到的是,第一个被考核到的问同学,几乎不假思索地就说出了一个解决上述问题的思路。而偏偏就是那么巧,几乎在同时,群内的J同学给出了另外一个解决方法(他没看到群内的讨论,而是看到了知识星球的记录,才知道这个问题的)。

也就是说,前一晚还以为无解的问题,在第二天竟得到了两种不同的解决方法!

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

#, J 同学的解答   祝辞祝辞祝辞,list1 =,(& # 39;一个# 39;,,& # 39;b # 39;,, & # 39; c # 39;,, & # 39; d # 39;】   在祝辞祝辞,for 小姐:拷贝list1:   在祝辞祝辞,全局变量()[我],=,[]   ,在的在的在一个   []

这个方法通过修改全局命名空间,巧妙地“定义”出了新的变量.globals()方法取出来的是一个字典,字符串的一个# 39;是其中一个键值(关键),而这个键值恰恰是全局命名空间中的一个变量,这就实现了从常量到变量的转化。

在数据结构层面上,空列表[]作为一个值(值)跟它的字符串键值绑定在一起,而在运用层面上,它作为变量内容而跟变量名绑定在一起。

看到这个回答的时候,我就突然想起来了,上个月转载过一篇《Python动态赋值的陷阱》,讲的正是动态地进行变量赋值的问题啊!我似乎只关注了当地人globals()与()用法的区别,却没有真正地掌握它们的原初用途。

J同学说,他正是看了那篇文章,才学得了这个方法。这就有意思了,我分享了一个自己囫囵吞枣的知识,然后它被J同学吸收掌握,最后反馈回来解决了我的难题。

我真切地感受到了知识分享的魅力:知识在流动中获得生命,在碰撞中锃亮色泽。

同时,我也真切地明白了一个互助的学习团体的好处:利人者也利己,互助者共同进步。

<强> 3,动态执行代码的方法

新进群的问同学,提供了一个不同的答案:

#, Q 同学的解答   祝辞祝辞祝辞,list1 =,(& # 39;一个# 39;,,& # 39;b # 39;,, & # 39; c # 39;,, & # 39; d # 39;】   在祝辞祝辞,for 小姐:拷贝list1:   在祝辞祝辞,exec (f"{我},=,[]“)   ,在的在的在一个   []

怎么在Python中将字符串常量转化为变量