<p>我正在玩标志,在使用<code>tf.app.run()</code>时遇到了一些奇怪的行为。下面的代码片段应该只打印通过命令行给出的字符串。在</p>
<pre><code>import tensorflow as tf
# command line flags
tf.app.flags.DEFINE_string('mystring', 'Hello World!',
'''String to print to console.''')
FLAGS = tf.app.flags.FLAGS
def main():
print(FLAGS.mystring)
if __name__ == '__main__':
tf.app.run()
</code></pre>
<p>在执行期间,将引发此错误:</p>
<blockquote>
<p>Traceback (most recent call last):</p>
<p>File "", line 1, in
runfile('/path/flags.py', wdir='/path')</p>
<p>File
"/home/abc/anaconda3/envs/tensorflow/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py",
line 710, in runfile
execfile(filename, namespace)</p>
<p>File
"/home/abc/anaconda3/envs/tensorflow/lib/python3.5/site-packages/spyder/utils/site/sitecustomize.py",
line 101, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)</p>
<p>File "/path/flags.py", line 19, in
tf.app.run()</p>
<p>File
"/home/abc/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/platform/app.py",
line 126, in run
_sys.exit(main(argv))</p>
<p>TypeError: main() takes 0 positional arguments but 1 was given</p>
</blockquote>
<p>…这很奇怪,因为我没有给main()一个参数。但是,如果我添加一个下划线<code>def main(_):</code>,它可以正常工作而不会出现任何错误。在</p>
<p>我找不到一个文档,其中描述了下划线的用法。有人知道这里发生了什么吗?谢谢您!在</p>