当前位置: 首页 > 知识库问答 >
问题:

Python函数退出不起作用-为什么?[副本]

太叔繁
2023-03-14

为什么exit()在第一次迭代后不停止脚本?

在我看来,它必须在第一次迭代之后停止。

>>> def func(q):
...     def funct(y):
...         try:
...             print(y)
...             exit()
...         except:
...             pass
...     funct(q)
...
>>> a=['1','2','3','4','5','6','7']
>>> for x in a:
...     func(x)
...
1
2
3
4
5
6
7
>>>

共有2个答案

云瑞
2023-03-14

试试:sys。退出(0)并将其移动到全局函数的范围

import sys 
def func(q):
    def funct(y):
        try:
            print(y)
        except:
             pass
    funct(q)
    sys.exit(0)

a=['1','2','3','4','5','6','7']
for x in a:
     func(x)

Output: 1
韦原
2023-03-14

为了尽可能直接地回答你的问题,

为什么exit()在第一次迭代后不停止脚本?

因为一个裸的除了将捕获BaseExc0019异常,并且由于出口()引发了一个SystemExit,这是一个BaseExc0019子类,所以您的代码将吞下异常并传递给每个异常迭代。

如果仅捕获异常,则请注意差异,这不会抑制基本异常

>>> from sys import exit
>>> 
>>> def func(q):
...     def funct(y):
...         try:
...             print(y)
...             exit()
...         except Exception:
...             pass
...     funct(q)
... 
>>> a = ['1','2','3','4','5','6','7']
>>> for x in a: func(x)
... 
1 # exits
 类似资料:
  • 此代码: 结果例外: 致命:没有方法的签名:script1409644336796288198097。test()适用于参数类型:()值:[]可能的解决方案:使用([Ljava.lang.Object;),getAt(java.lang.String)、use(java.util.List、groovy.lang.Closure)、use(java.lang.Class、groovy.lang.C

  • 问题内容: 码: 上面的代码不起作用。当我单击#clicker时,它不会发出警报,也不会隐藏。我检查了控制台,没有任何错误。我还检查了JQuery是否正在加载,实际上是否正在加载。所以不确定是什么问题。我还执行了带有警报的文档就绪功能,并且该功能正常工作,因此不确定我在做什么错。请帮忙。谢谢! 问题答案: 您应该在一个块中添加javascript代码。 即 正如jQuery文档指出的那样:“在文档

  • 关于如何修复gradle版本,有很多很好的建议,但有些已经过时了,或者我只是找不到建议的路径。对我来说,一个解决方案是Project>Project Structure>Project>Gradle Version。 在这里我可以把它改成支持的版本,并且成功地构建项目。 从这个链接,它暗示这是设置你的gradle包装的方式。 因此,我希望Project/Platforms/Android/Grad

  • 问题内容: 为什么这项工作有效- 但这不是- 第二种情况下的输出为。你能解释一下输出吗? 问题答案: 该方法没有返回值。它会在适当的位置更改列表,并且由于您没有将分配给任何变量,因此只是“迷失在空间” 我没有重载所有有问题的方法,但是概念应该很清楚。

  • 问题内容: 为什么这个独立的代码不起作用: 即使变量中包含https,每次也可以打印。 问题答案: 如有疑问,请阅读文档: [strpos]返回大海捞针中第一次出现针的数字位置。 因此,您想尝试更多类似的方法: 因为否则返回一个数字,并且您正在寻找布尔值。

  • 问题内容: 我正在尝试从JSON网址获取集合。骨干网确实发送了请求并得到了响应,但是在它之后的集合中没有: 这是我的JavaScript: 响应中的JSON 响应中的Content-Type HTTP标头为。 为什么不将其加载到集合中?JSON是否正确? 一些更多的代码: 问题答案: 是异步的。尝试 要么 要么