Python模块和退出(初学者层)

Python模块和退出(初学者层),python,module,Python,Module,因此,我遇到了这个问题,我将尝试解释: #file1.py def main() if 1 != a: print "error" exit(1) else: print "sucess" 所以我在file2.py中导入了这个file1.py #file2.py import file1 control=2 try: while True: if control == "

因此,我遇到了这个问题,我将尝试解释:

#file1.py
    def main()
     if 1 != a:
       print "error"
       exit(1)
     else:
       print "sucess"
所以我在file2.py中导入了这个file1.py

#file2.py

    import file1
    control=2
    try:
      while True:
        if control == "2":
          main("2")
          print "something"
    except:
      print "error"
因此,由于某种原因,在我调用main2之后,python1中的exit1正在python2中退出我的代码,并且打印“something”没有被解析。

您永远不会得到打印something。控件设置为2是一个整数,但如果将其与字符串2进行比较,则应改用control==2

一旦修复,甚至可以调用main2。这将抛出一个错误,因为您的主函数不接受任何参数。此外,a未在main中定义如果希望a作为函数参数,请使用def maina:而不是def main:


然后,如果a再次等于1,则它将调用exit,它将退出整个python脚本,包括file2.py中的内容,除非您碰巧捕获了SystemExit,而您不应该这样做。这就是退出的目的。请尝试返回退出单个函数。

这两个文件是如何链接的?此外,control=2使control成为一个int,您正在检查control是否等于字符串2file2基本上是一个看门狗,它有一个无限循环和一些条件,当条件满足时,file2将通过“main2”函数调用file1。问题是file1中的出口正在破坏file2中的循环。但这就是exit所做的。您到底希望做什么?您在file2.py中调用main2,但在file1.py中定义main为不带任何参数。而且,你只是把它称为主要的;如果您确实导入了file1,那就不可能工作,除非您在file2中定义了一个同名的函数……在这种情况下,您在file1中定义的任何函数都无关紧要,因为您不会调用它。我想在file1中的函数满足时调用main并退出main,但我想让file2在此之后继续运行。Abarnert,没错,但这个错误只在我的示例中出现:D在我的原始代码中是正确的。