理解python代码

eal*_*eon 5 python

ab.py

from ddr import Options
debugElmo     = int(Options.env['GG_DEBUG_ELMO'])
postdevElmo   = int(Options.env['GG_POST_DEV_ELMO'])
Run Code Online (Sandbox Code Playgroud)

Options.py

vars_of_interest = (
    'AA_PYTHON',
    'GG_POST_DEV_ELMO',
    'GG_DEBUG_ELMO',
    )
env = dict((var, os.getenv(var, 0)) for var in vars_of_interest)
Run Code Online (Sandbox Code Playgroud)

我不确定是什么,env = dict((var, os.getenv(var, 0)) for var in vars_of_interest)因为我对python很新

在Options.py中使用python中的函数?
什么是dict()?
变量是变量int(Options.env['GG_DEBUG_ELMO'])吗?

unu*_*tbu 6

您可以通过查看Python解释器中的部分来了解Python代码的作用:

>>> vars_of_interest
('AA_PYTHON', 'GG_POST_DEV_ELMO', 'GG_DEBUG_ELMO')

>>> import os

>>> [(var, os.getenv(var, 0)) for var in vars_of_interest]
[('AA_PYTHON', 0), ('GG_POST_DEV_ELMO', 0), ('GG_DEBUG_ELMO', 0)]

>>> env = dict((var, os.getenv(var, 0)) for var in vars_of_interest)
>>> env
{'AA_PYTHON': 0, 'GG_DEBUG_ELMO': 0, 'GG_POST_DEV_ELMO': 0}
Run Code Online (Sandbox Code Playgroud)

env = dict(...)env一个dict.如果您不确定对象是什么,您可以随时询问它的类型:

>>> type(env)
dict
Run Code Online (Sandbox Code Playgroud)

A dict是键和值之间的映射.在这种情况下,env是字符串之间的映射,例如'AA_PYTHON'和值0.

var生成器表达式中使用的临时变量

((var, os.getenv(var, 0)) for var in vars_of_interest)
Run Code Online (Sandbox Code Playgroud)

for var in vars_of_interest在发电机表达式告诉Python来的项目迭代在元组vars_of_interest,并分配值var,因为它通过循环迭代一个接一个.生成器表达式是一个迭代器.迭代器产生(var, os.getenv(var, 0))每个的值var.

表达式(var, os.getenv(var, 0))是一个元组,可以被认为是一个键值对.var是关键,os.getenv(var, 0)是价值.os.getenv查找环境变量var(例如'AA_PYTHON')并返回环境变量的值(如果存在),否则返回0.

何时dict传递键值对的迭代器,就像在表达式中一样

dict((var, os.getenv(var, 0)) for var in vars_of_interest)
Run Code Online (Sandbox Code Playgroud)

它返回一个dict将给定键映射到给定值的方法.

有关Python dicts的更多信息,请参见此处.