为什么os . environment .keys()和os . environment .items()返回语义上相同



在Ubuntu 22.10上使用Python3.10运行Ipython3

a=Os.environ.keys()
b=Os.environ.items()

I expectalist环境变量键/名称的例如:

['SHELL','SESSION_MANAGER',......]

但是我得到了:

KeysView(environ({'SHELL': '/bin/bash', 'SESSION_MANAGER': 'local....}))

希望返回键值对元组,我得到了这个:

ItemsView(environ({'SHELL': '/bin/bash', 'SESSION_MANAGER': 'local

对我来说似乎是包裹在其他东西里的相同数据。从技术上讲,这两者没有什么问题,但在我看来,它违背了目的如果你给别人一张10美元的钞票来买一条面包,但他们只是把这张美元钞票包在一个标有面包的信封里

这里我不知道的是什么?

您观察到的行为不仅限于os.environ,而且适用于dicts。你有一个视图,它观察到dict的变化,考虑以下简单的例子

d = {"x":10,"y":100}
d_keys = d.keys()
d_list = list(d.keys())
d.update({"z":1000})
print(d_keys)  # dict_keys(['x', 'y', 'z'])
print(d_list)  # ['x', 'y']

最新更新