Python每日一点(003)

如何将字符串常量转为变量?

  • 意义
    问题的字面意思就是,如何动态生成变量名。比如: a = [“A”, “B”, “C”] ,可否将"A" = [……]呢?
    如果可以,就不用做预先定义,少了给变量取名的麻烦,还实现了自动编码。 AI就可以通过已知条件,动态生成变量名。
  • 实现方式
#方法一
a = ["A", "B", "C"]
for i in a:
	globals()[i] = []
##定义了  A =[]/B=[]/C=[]

#方法二
a = ["A", "B", "C"]
for i in a:
	exec(f"{i} = []")
##同样定义了  A =[]/B=[]/C=[]
  • 附加信息
    1、对于第一个方法,先得了解globals()是全局命名空间字典,比如x是定义的一个变量,内容是3,那么"x" : 3就是globals里的一个键值对,详见

https://blog.csdn.net/scelong/article/details/6977867

所以globals()[“A”] = [] ,按照如下方式进行查找赋值

  • 局部名字空间 - 特指当前函数或类的方法。如果函数定义了一个局部变量 x, 或一个参数 x,Python 将使用它,然后停止搜索。

  • 全局名字空间 - 特指当前的模块。如果模块定义了一个名为 x 的变量,函数或类,Python 将使用它然后停止搜索。

  • 内置名字空间 - 对每个模块都是全局的。作为最后的尝试,Python 将假设 x 是内置函数或变量

最后以假定"A"为变量名的方式定义变量,并赋值

2、对于第二个方法,因为exec是内置的,用来执行储存在字符串或文件中的代码段,如exec(“x = 1 + 2”),则x == 3。所以执行格式化字符串,串中包含变量名即可

  • 知识来源
    Python猫公众号`

https://mp.weixin.qq.com/s?__biz=MzUyOTk2MTcwNg==&mid=2247484090&idx=1&sn=e3e66f2a53db80b9abca05f523047d1c&chksm=fa58453fcd2fcc29d1f7a4f08755b47564f8e07f12504028a4164fe9c598f8553d9d8f127351&mpshare=1&scene=1&srcid=0320ptkhFQeIPwWZFVYnrSB4#rd

`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值