在代码中,tf.app.run()常写为入口,如下:
...
# 此处省略n行代码
...
def main(_):
...
if __name__ == "__main__":
tf.app.run()
好,那我们进入tf.app.run()的函数,康康长什么样子。
@tf_export(v1=['app.run'])
def run(main=None, argv=None):
"""Runs the program with an optional 'main' function and 'argv' list."""
main = main or _sys.modules['__main__'].main
_run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef)
从这个角度来看,应该输入一个函数对象作为程序运行的参数。如果没有输入函数,会使用默认的_sys.[‘main’].main,然后会构建两个测试文件,看看运行中_sys.[‘main’]的结果是什么执行模块从其他模块导入的函数
# file1
import sys as _sys
def run():
print(_sys.modules['__main__'])
print(_sys.modules['__main__'].main)
# file2
from file1 import run
def main(_):
pass
if __name__ == '__main__':
run()
run函数中pirnt的结果是:
main’ 来自 ‘D:/data//demo/file2.py’>
可以看出tf.app.run函数中的默认函数是file2中的main函数对象。 main函数不是main时为test,需要将test函数作为参数传入tf.app.run()。如下
...
# 此处省略n行代码
...
def test(_):
# 主函数
...
if __name__ == "__main__":
tf.app.run(test)
需要注意的是,使用tf.app.run作为入口时,main函数至少需要一个参数。常用的写法是将_作为参数,写成main(_),防止出错。如果不加参数,会报:main() take 0 but 1 was given
© 版权声明
本站下载的源码均来自公开网络收集转发二次开发而来,
若侵犯了您的合法权益,请来信通知我们1413333033@qq.com,
我们会及时删除,给您带来的不便,我们深表歉意。
下载用户仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,访问及下载者下载默认同意本站声明的免责申明,请合理使用切勿商用。
THE END
暂无评论内容