Python 在try块内无法识别Pycharm变量赋值

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,它能否根据函数的返回

上面的最后一行由PyCharm标记为以下问题:

局部变量“driver”可能在赋值之前被引用

但是,类似这样的情况会使错误消失:

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