gpt4 book ai didi

函数内部的 Python Try-Except

转载 作者:行者123 更新时间:2023-12-01 06:57:32 26 4
gpt4 key购买 nike

我对 python 的 try-except 子句有很好的理解,但是在尝试将其放入函数时遇到了问题。

>>> def tryAppend(child, parent):
... try:
... parent.append(child)
... except NameError:
... print "WRONG NAME"
>>> var1 = []
>>> var2 = 'test2'
>>> tryAppend(var2, var1) #works, no error
>>> tryAppend(foo, var1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'foo' is not defined

这几乎就像 python 没有看到 try: 语句。任何帮助表示赞赏。

最佳答案

tryAppend(foo, var1)按以下顺序(大致)评估:

  • 获取对象 tryAppend引用
  • 获取对象 foo引用
  • 获取对象 var1引用
  • 使用第二个和第三个作为参数调用第一个(=做函数 tryAppend 所做的任何事情,不包括 try-except)

  • 错误发生在 #2,早在函数和 try 块被输入之前。事实上,try块 不能 抛出 NameError,因为唯一使用的名称是 parentchild ,两者都是参数,因此始终可用(如果 .append 不存在,那就是 AttributeError )。
    同样,下面的代码不会打印“caught it”,因为在 try 块执行之前引发了异常:
    raise Exception("Catch me if you can")
    try:
    pass # do nothing
    except:
    print "caught it"

    关于函数内部的 Python Try-Except,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4148015/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com