ab.py
from ddr import Options
debugElmo = int(Options.env['GG_DEBUG_ELMO'])
postdevElmo = int(Options.env['GG_POST_DEV_ELMO'])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)我不确定env = dict((var, os.getenv(var, 0)) for var in vars_of_interest)是怎么回事,因为我是python的新手。
在Options.py中,env是python中的函数吗?
dict()是什么?
是否将变量从int(Options.env['GG_DEBUG_ELMO'])变量
发布于 2013-06-28 04:02:35
您通常可以通过查看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}env = dict(...)使env成为dict。如果您不确定某个对象是什么,您可以随时询问它的类型:
>>> type(env)
dictdict是键和值之间的映射。在本例中,env是字符串(如'AA_PYTHON' )和值(如0 )之间的映射。
var是在generator expression中使用的临时变量
((var, os.getenv(var, 0)) for var in vars_of_interest)生成器表达式中的for var in vars_of_interest告诉Python遍历元组vars_of_interest中的项,并在遍历循环时将值逐个分配给var。生成器表达式是一个迭代器。迭代器为每个var生成(var, os.getenv(var, 0))的值。
表达式(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)它返回一个将给定键映射到给定值的dict。
有关more information on Python dicts的信息,请参阅此处。
发布于 2013-06-28 04:05:50
第二个示例使用列表理解创建一个名为env的字典。
字典是什么?这是一个关联列表。一种看待字典的方式是,它们类似于数组,不同的是,它们不是由数字索引的,而是由其他东西索引的。在这种情况下,它们由一个字符串(环境变量的名称)索引。
什么是列表理解?这是一种创建列表的方式。由该列表理解创建的列表是由对、环境变量名称和该环境变量的值组成的列表。内置函数dict从这样的配对列表创建一个字典。
https://stackoverflow.com/questions/17352094
复制相似问题