Python 在try块内无法识别Pycharm变量赋值
上面的最后一行由PyCharm标记为以下问题: 局部变量“driver”可能在赋值之前被引用 但是,类似这样的情况会使错误消失:Python 在try块内无法识别Pycharm变量赋值,python,pycharm,Python,Pycharm,上面的最后一行由PyCharm标记为以下问题: 局部变量“driver”可能在赋值之前被引用 但是,类似这样的情况会使错误消失: try: driver = launch_browser() except: print "Browser launch failed" driver.get("http://www.example.com/") 有没有一种方法可以设置PyCharm,以便它可以在try块中看到赋值 第二,如果PyCharm有docstring,它能否根据函数的返回
try:
driver = launch_browser()
except:
print "Browser launch failed"
driver.get("http://www.example.com/")
有没有一种方法可以设置PyCharm,以便它可以在try块中看到赋值
第二,如果PyCharm有docstring,它能否根据函数的返回值(在本例中是launch\u browser()
)计算出类型
顺便说一句,代码在这两种情况下都可以正常工作。这只是一个让PyGabor理解代码中的任务的尝试。尝试< /Cord>块,而不必求助于创可贴。
编辑1:
中的返回
,除了:
块修复了PyCharm相关的问题。我正在做别的事情,无意中把它评论了出来。证明连续16小时编码是一个非常糟糕的主意 如果launch\u browser()
失败,您的代码将在驱动程序中出错http://www.example.com/“”
行。PyCharm让你知道这一点
避免这种情况的唯一方法是不在下执行除
以外的任何操作,例如在其内部抛出异常,或将依赖于驱动程序
的所有内容放入else
块,该块仅在未捕获异常时运行。例如
driver = None
try:
driver = launch_browser()
except:
print "Browser launch failed"
driver.get("http://www.example.com/")
如果launch\u browser()
失败,您的代码将在驱动程序中出错http://www.example.com/“”
行。PyCharm让你知道这一点
避免这种情况的唯一方法是不在下执行除
以外的任何操作,例如在其内部抛出异常,或将依赖于驱动程序
的所有内容放入else
块,该块仅在未捕获异常时运行。例如
driver = None
try:
driver = launch_browser()
except:
print "Browser launch failed"
driver.get("http://www.example.com/")
如果launch\u browser()
失败,您的代码将在驱动程序中出错http://www.example.com/“”
行。PyCharm让你知道这一点
避免这种情况的唯一方法是不在下执行除
以外的任何操作,例如在其内部抛出异常,或将依赖于驱动程序
的所有内容放入else
块,该块仅在未捕获异常时运行。例如
driver = None
try:
driver = launch_browser()
except:
print "Browser launch failed"
driver.get("http://www.example.com/")
如果launch\u browser()
失败,您的代码将在驱动程序中出错http://www.example.com/“”
行。PyCharm让你知道这一点
避免这种情况的唯一方法是不在下执行除
以外的任何操作,例如在其内部抛出异常,或将依赖于驱动程序
的所有内容放入else
块,该块仅在未捕获异常时运行。例如
driver = None
try:
driver = launch_browser()
except:
print "Browser launch failed"
driver.get("http://www.example.com/")
您可以告诉PyCharm忽略此类错误。但问题是你为什么要做这样的事?您当前的代码可能导致不必要的行为。假设在浏览器启动期间出现异常,您捕获该异常并打印一条消息。然后继续执行该程序,并尝试在
驱动程序
上应用get
,这将导致出现问题;您既不分配驱动程序
,也不将该函数保留在块中,除了
块之外,那么它有什么意义呢?获取一个NameError
远没有看到您刚刚捕获并丢弃的错误有用。另外,除了:是非常糟糕的做法。对不起,我过度简化了示例。这不是实际的代码。实际代码在异常后不会继续执行,也不会使用裸,除非:
。每次启动\u browser()引发异常时,都会在赋值之前引用局部变量“driver”。PyCharm只是在告诉你真相。@martin是以一个高度非艺术性的(?)观察者的身份发言的,我要说的是,保留这个问题,接受下面令人敬畏的答案。只是一个建议:)你可以告诉PyCharm忽略这种错误。但问题是你为什么要做这样的事?您当前的代码可能导致不必要的行为。假设在浏览器启动期间出现异常,您捕获该异常并打印一条消息。然后继续执行该程序,并尝试在驱动程序
上应用get
,这将导致出现问题;您既不分配驱动程序
,也不将该函数保留在块中,除了
块之外,那么它有什么意义呢?获取一个NameError
远没有看到您刚刚捕获并丢弃的错误有用。另外,除了:是非常糟糕的做法。对不起,我过度简化了示例。这不是实际的代码。实际代码在异常后不会继续执行,也不会使用裸,除非:
。每次启动\u browser()引发异常时,都会在赋值之前引用局部变量“driver”。PyCharm只是在告诉你真相。@martin是以一个高度非艺术性的(?)观察者的身份发言的,我要说的是,保留这个问题,接受下面令人敬畏的答案。只是一个建议:)你可以告诉PyCharm忽略这种错误。但问题是你为什么要做这样的事?您当前的代码可能导致不必要的行为。假设在浏览器启动期间出现异常,您捕获该异常并打印一条消息。然后继续执行该程序,并尝试在驱动程序
上应用get
,这将导致出现问题;您既不分配驱动程序
,也不将该函数保留在块中,除了
块之外,那么它有什么意义呢?获取一个NameError
远没有看到您刚刚捕获并丢弃的错误有用。另外,除了:是非常糟糕的做法。对不起,我过度简化了示例。这不是实际的代码。实际代码在异常后不会继续执行,也不会使用裸exc