Pycharm try 块内无法识别变量赋值
Pycharm variable assignment not recognized inside try block
try:
driver = launch_browser()
except:
print "Browser launch failed"
driver.get("http://www.example.com/")
上面的最后一行被 PyCharm 标记为以下问题:
Local variable "driver" might be referenced before assignment
但是,类似这样的事情会使错误消失:
driver = None
try:
driver = launch_browser()
except:
print "Browser launch failed"
driver.get("http://www.example.com/")
有没有办法设置 PyCharm 以便它可以看到 try 块中的赋值?
其次,如果它有文档字符串,PyCharm 能否根据函数的 return 值找出类型(在本例中为 launch_browser()
)?
顺便说一句,代码在这两种情况下都可以正常工作。只需让 PyCharm 理解 try
块内的赋值,而无需求助于创可贴。
编辑 1:
except:
块中的 return
解决了 PyCharm 所关注的问题。我正在做别的事情,无意中把它注释掉了。证明连续 16 小时编码是一个非常糟糕的主意......
如果 launch_browser()
失败,您的代码将在 driver.get("http://www.example.com/")
行出错。 PyCharm 让你知道这一点。
避免这种情况的唯一方法是不执行 except
以下的任何操作,例如在其中抛出一个异常,或者将所有依赖于 driver
的东西放在一个 else
块中,如果没有捕获到异常,它只会 运行 。例如
try:
driver = launch_browser()
except:
print "Browser launch failed"
else:
driver.get("http://www.example.com/")
try:
driver = launch_browser()
except:
print "Browser launch failed"
driver.get("http://www.example.com/")
上面的最后一行被 PyCharm 标记为以下问题:
Local variable "driver" might be referenced before assignment
但是,类似这样的事情会使错误消失:
driver = None
try:
driver = launch_browser()
except:
print "Browser launch failed"
driver.get("http://www.example.com/")
有没有办法设置 PyCharm 以便它可以看到 try 块中的赋值?
其次,如果它有文档字符串,PyCharm 能否根据函数的 return 值找出类型(在本例中为 launch_browser()
)?
顺便说一句,代码在这两种情况下都可以正常工作。只需让 PyCharm 理解 try
块内的赋值,而无需求助于创可贴。
编辑 1:
except:
块中的 return
解决了 PyCharm 所关注的问题。我正在做别的事情,无意中把它注释掉了。证明连续 16 小时编码是一个非常糟糕的主意......
如果 launch_browser()
失败,您的代码将在 driver.get("http://www.example.com/")
行出错。 PyCharm 让你知道这一点。
避免这种情况的唯一方法是不执行 except
以下的任何操作,例如在其中抛出一个异常,或者将所有依赖于 driver
的东西放在一个 else
块中,如果没有捕获到异常,它只会 运行 。例如
try:
driver = launch_browser()
except:
print "Browser launch failed"
else:
driver.get("http://www.example.com/")