2024-04-19 06:22:49 发布
网友
我有个小问题: 如果我运行这个:
print(list(globals()))
这是输出:
['__package__', '__loader__', '__doc__', , '__file__', 'b', '__name__', '__builtins__', 'a']
我想尝试一个包含所有这些元素的方法,特别是a和b。你知道吗
a
b
但这就像:
'a'.run()
所以这根本不起作用。你知道吗
我需要这样的东西:
a.run()
在这个特殊的例子中,您碰到了迭代dict工作的方式。执行list(some_dict)操作时,会得到some_dict的键的列表。碰巧globals()是一个dict,所以你得到了dict的键,全局事物的“名称”。您可以通过一种明显的方式从dict获取值:list(some_dict.values()),甚至可以通过some_dict.items()同时获取键和值。你知道吗
dict
list(some_dict)
some_dict
globals()
list(some_dict.values())
some_dict.items()
所以你的例子可以是
for something in globals().items(): something.run()
一般来说,如果您有一些需要解析的任意名称列表,您可能不想使用这种方法。你知道吗
使用字符串作为globals返回的字典的键。结果值将是实际对象。示例:
globals
a = "hello world!" print globals()["a"].split()
这里,对变量a调用方法split。结果:
split
['hello', 'world!']
如果已经知道对象名为a,只需直接访问变量:a.run()。你知道吗
如果您不知道变量名,那么您肯定不知道它是否引用了一个带有run方法的值,因此以这种方式调用它是不安全的。你知道吗
run
不管你想做什么,几乎肯定有更好的方法。你知道吗
在这个特殊的例子中,您碰到了迭代
dict
工作的方式。执行list(some_dict)
操作时,会得到some_dict
的键的列表。碰巧globals()
是一个dict,所以你得到了dict的键,全局事物的“名称”。您可以通过一种明显的方式从dict获取值:list(some_dict.values())
,甚至可以通过some_dict.items()
同时获取键和值。你知道吗所以你的例子可以是
一般来说,如果您有一些需要解析的任意名称列表,您可能不想使用这种方法。你知道吗
使用字符串作为
globals
返回的字典的键。结果值将是实际对象。示例:这里,对变量
a
调用方法split
。结果:如果已经知道对象名为
a
,只需直接访问变量:a.run()
。你知道吗如果您不知道变量名,那么您肯定不知道它是否引用了一个带有
run
方法的值,因此以这种方式调用它是不安全的。你知道吗不管你想做什么,几乎肯定有更好的方法。你知道吗
相关问题 更多 >
编程相关推荐