Python Try-Except 与 If-Else 性能

DAd*_*Ada 5 python windows performance try-catch

最近有人对我说“在 Python 中,最好稍后尝试请求宽恕,而不是乞求许可”,我觉得这很有趣,但也与我的问题相关

我正在创建一个名为 Ada 的个人助理,并且对性能非常迂腐。据我所知,使用 try 语句比检查然后执行更快。EG:(如果目录不存在,第二个会慢一些???)

import os

try:
    os.makedirs("Test")
except FileExistsError:
    pass

# VS

if not os.path.exists("Test"):
    os.makedirs("Test")
Run Code Online (Sandbox Code Playgroud)

因此,在创建编码时,您需要权衡更有可能的情况。在我的示例中,文件更有可能不存在,因此我应该使用 try 块,它比 If-Else 产生更好的性能

我想知道尝试(双关语)这种默认 If-Else 方法是否有任何好处?

PS(这个问题不是Python if 与 try- except的重复,因为它没有指定比较代码块的概率try:

如果有人感兴趣,我当前的代码:(在 AppData 中创建一个名为 Ada 的文件夹,其中包含 Config.ini 文件)

import os

AppDataDirectory = os.getenv("AppData")
AdaDirectory = AppDataDirectory + "\Ada"
ConfigFile = AdaDirectory + "\CONFIG.ini"

try:
    File = open(ConfigFile, "r")
except FileNotFoundError:
    try:
        os.makedirs(AdaDirectory)
    except FileExistsError:
        print("Config File Missing")
    # Setup Config File
Run Code Online (Sandbox Code Playgroud)

swa*_*onk 0

tryvs.的性能if-else取决于。

一般来说,使用try块被认为更Pythonic,因为:

  1. 你做一个动作
  2. 如果失败则做其他事情

这样做的好处是,如果操作失败,您可以指定确切的错误并做出相应的反应或将异常保留在类中Base Exception

使用if-else不一定非Pythonic,但使用Python(如果有elif语句,这会变得更长),

  1. 检查语句的布尔值
  2. 如果需要布尔值,则执行另一个操作
  3. 如果不需要布尔值,则执行其他操作

建议使用最终try块,因为您可以执行某些操作并在操作失败时指定准确的响应,而不是设置各种条件。