最近在看一篇论文,其中源码涉及到Tensorflow,且其中含有app.flags.DEFINE_XXX函数,经自己实验发现:
import tensorflow as tf
#第一个是参数名称,第二个参数是默认值,第三个是参数描述
tf.app.flags.DEFINE_string('str_name', 'default_value',"description1")
tf.app.flags.DEFINE_integer('int_name', 10,"description2")
tf.app.flags.DEFINE_boolean('bool_name', False, "description3")
FLAGS = tf.app.flags.FLAGS
#必须带参数,否则:'TypeError: main() takes no arguments (1 given)'; main的参数名随意定义,无要求
def main(_):
print(FLAGS.str_name)
print(FLAGS.int_name)
print(FLAGS.bool_name)
if __name__ == '__main__':
tf.app.run() #执行main函数
执行以下命令:
boolean 不加参数
1.python test.py --bool_name
输出:
default_value
10
True
boolean 加参数
2.python test.py --bool_name false
输出:
default_value
10
False
str不加参数
3.python test.py --str_name
输出:
usage: test.py [-h] [--str_name STR_NAME] [--int_name INT_NAME]
[--bool_name [BOOL_NAME]] [--nobool_name]
test.py: error: argument --str_name: expected one argument
str加参数
4.python test.py --str_name 123.py
输出:
123.py
10
False
int不加参数
5.python test.py --int_name
输出:
usage: test.py [-h] [--str_name STR_NAME] [--int_name INT_NAME]
[--bool_name [BOOL_NAME]] [--nobool_name]
test.py: error: argument --int_name: expected one argument
int加参数
6.python test.py --str_name 123.py
输出:
default_value
5
False
Conclusion
即三个函数里面只有boolean
可以不加参数,其余两个都需要添加参数。同时如果--boolean
不出现的话,会使用默认的值,但是如果--boolean
出现了但是后面没有参数的话,会使用True。