С помощью следующего кода я ожидаю, что func1 напечатает значение хоста (5000), которое я установил дважды.
import os
def func1(host = os.getenv("HOST")):
print(host)
print(os.getenv("HOST"))
os.environ["HOST"] = "5000"
func1()
Вывод:
None
5000
Странно. Давайте проверим весь список переменных env.
def func2(env = os.environ):
print(env)
os.environ["HOST"] = "5000"
func2()
Вывод:
environ({..., 'Host': '5000'})
Ладно, очень странно, поэтому я могу взять его, используя окружающую среду?
def func3(host = os.environ["HOST"]):
print(host)
os.environ["HOST"] = "5000"
func3()
Вывод:
Traceback (most recent call last):
File "mytest.py", line 10, in <module>
def func3(host = os.environ["HOST"]):
File "/Users/me/.pyenv/versions/3.7.3/lib/python3.7/os.py", line 678, in __getitem__
raise KeyError(key) from None
KeyError: 'HOST'
Я что-то упустил, или это ошибка с python?