gpt4 book ai didi

python - 此代码中赋值前引用的变量

转载 作者:太空宇宙 更新时间:2023-11-04 06:55:25 25 4
gpt4 key购买 nike

我有以下代码:

try:
connSock = socket(AF_INET, SOCK_STREAM)
connSock.connect((tgtHost, tgtPort))
except:
pass
finally:
connSock.close()

Pycharm 说:

Local variable 'connSock' might be referenced before assignment on connSock.close() line

这怎么可能?

我错过了什么吗?


更新:

如果您的操作系统用完描述符,socket() 函数可能会引发异常

最佳答案

如果第二行的 socket() 调用引发异常,则永远不会绑定(bind) connSock

套接字可以用作上下文管理器,利用它来发挥你的优势:

try:
with socket(AF_INET, SOCK_STREAM) as connSock:
connSock.connect((tgtHost, tgtPort))
except socket.error:
pass

这将在 with block 退出时关闭套接字,而无需引用它,并且仅当 socket() 调用实际成功时。

请注意,您应该很少使用毯子except: pass。最好捕获特定的异常。

关于python - 此代码中赋值前引用的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25315069/

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