python 为什么OS.environ.keys()和OS.environ.items()返回语义相同的数据?

dphi5xsq  于 2023-01-01  发布在  Python
关注(0)|答案(1)|浏览(161)

在Ubuntu 22.10上使用Python 3.10运行Ipython 3

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

我希望a是环境变量键/名称的列表,例如:

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

但我得到的却是

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

B,我希望返回键值对的元组,我得到了:

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

对我来说,这似乎是相同的数据 Package 在其他东西。技术上没有错,这两个,但在我看来,它违背了目的,如果你给某人一张10美元的钞票得到一条面包,但他们只是 Package 美元的钞票在一个信封上标记面包
我在这里不知道的是什么?

f4t66c6m

f4t66c6m1#

您观察到的行为不限于os.environ,而是普遍适用于dict。您得到了一个 * 视图 *,它确实观察到对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']

相关问题