在Python中使用if __name__ ==“ __main__”时出现问题:

时间:2018-10-05 16:41:14

标签: python

我有一个名为game.py的文件,其中包含以下代码:

import other
items = []

for _ in range(1, 15):
    a = other.myfunction()
    items.append(a)
min = min(items)
max = max(items)
print(min)
print(max)

当我使用python game.py从终端运行此功能时,它工作得很好,并且我打印了两个值。

但是,当我通过在脚本的开头添加def main():并在脚本的末尾添加if __name__ == "__main__": main()修改脚本并使用./game.py从终端运行它时,出现以下错误:

File "./game.py", line 8, in <module>
min = min(items)
ValueError: min() arg is an empty sequence

如果我仅添加了函数定义,为什么SAME代码无法运行?我从来没有遇到过这个问题...

我在脚本的开头使用def main():并在脚本的结尾使用if __name__ == "__main__": main()粘贴我的代码:

import other
items = []

def main():
   for _ in range(1, 15):
       a = other.myfunction()
       items.append(a)
   min = min(items)
   max = max(items)
   print(min)
   print(max)

if __name__ == "__main__":
   main()

2 个答案:

答案 0 :(得分:-1)

items = items.append(a)返回items.append(a)的返回值None

您应该将该行修改为items.append(a)

另外,在函数外部有items的声明,除非有特殊原因,否则应在函数内部声明。

答案 1 :(得分:-1)

下一个问题的原因是: 您应为变量使用不同的名称,而不要使用函数名称({min_max_而不是函数名称的minmax)。 如果成功(或失败)运行,则通过脚本返回值也是一个好习惯。

import other
import sys

items = []

def main():
    for _ in range(1, 15):
       a = other.myfunction()
       items.append(a)
    min_ = min(items)
    max_ = max(items)
    print(min_)
    print(max_)

    return 0

if __name__ == "__main__":
   sys.exit(main())