Python 动态变量和调用
做习题的时候需要生成多个空字典,所以找到了利用循环创建按序列命名字典的方法。
- exec函数
- eval函数(不可用)
- local函数
- setattr函数
exec函数
直接执行表达式中的语句
for i in range(3):
exec('d{} = dict()'.format(i))
exec('print(d{})'.format(i))
eval函数
不能使用eval来替代exec,因为eval后要求的是表达式,如上exec后跟的是语句,所以用不了eval。
local函数
format和str都可以
for i in range(3):
locals()['d{}'.format(i)] = {}
print(locals()['d' + str(i)])
##setattr函数
将字典保存在类的属性中
class X:
pass
x = X()
for i in range(3):
setattr(x, 'd{}'.format(i), {})
eval('print(x.d{})'.format(i))