2017.8.19
- 常常会碰到一个.py文件里出现if name == 'main':这样的描述:
- 模块是对象,并且所有的模块都有一个内置属性 name。一个模块的 name 的值取决于您如何应用模块.
- 如果直接运行.py文件,那么name就是等于‘main'
- 如果在另外的模块中导入该.py文件,例如导入的是Test.py也就是import Test, 那 Test.name='Test'
- 所以if name == 'main':之后的代码是保证在运行该.py文件的时候才运行的代码
2017.8.26
- 今天在阿里云的PAI上运行自己的代码,为了能从oss中读取参数,需要一个全局的参数传递对象,这个对象就是FLAGS。
def main(_):
FLAGS = None
...
data_dir = FLAGS.datadir
...
if __name__ = '__main__':
parser = argparse.ArgumentParser()
parser.add_argument('--buckets', type=str,
default='',
help='input data path')
FLAGS, _ = parser.parse_known_args()
main()
这里要注意,main的定义时括号里要加入一个 ,这个本来是上一个输出的参数的意思,这里还不是特别明白为什么这么做。