Еще одной причиной большего исполняемого размера могли быть отложенные вычисления и нестрогий. Компилятор не может выяснить во время компиляции, когда определенные выражения оценены, таким образом, некоторое время выполнения наполнено в исполняемый файл для обработки этого (для призыва оценки так называемого преобразователи ). Что касается производительности, лень может быть и хорошей и плохой. С одной стороны это допускает дополнительную потенциальную оптимизацию, с другой стороны, размер кода может быть больше, и программисты, более вероятно, будут принимать плохие решения, например, видеть Haskell foldl по сравнению с foldr по сравнению с foldl' по сравнению с foldr' .
Вы действительно хотите сделать
import os
os.environ["MY_DATA"] = "my_export"
Не все так просто:
python -c "import os; os.putenv('MY_DATA','1233')"
$ echo $MY_DATA # <- empty
Но:
python -c "import os; os.putenv('MY_DATA','123'); os.system('bash')"
$ echo $MY_DATA #<- 123
экспорт
- это команда, которую вы передать непосредственно оболочке (например, bash
), чтобы указать ей добавить или изменить одну из своих переменных среды. Вы не можете изменить среду своей оболочки из дочернего процесса (такого как Python), это просто невозможно.
Вот что происходит с вами, попробуйте os.system ('export MY_DATA = "my_export"')
...
/bin/bash process, command `python yourscript.py` forks python subprocess
|_
/usr/bin/python process, command `os.system()` forks /bin/sh subprocess
|_
/bin/sh process, command `export ...` changes local environment
Когда самый нижний подпроцесс / bin / sh
завершит выполнение вашего экспорта ...
команда, затем она отбрасывается вместе со средой, которую вы только что изменили.
Вместо этого вы можете попробовать os.environ ["MY_DATA"].