![](/img/trans.png)
[英]Python equivalent of Perl's idiom do this or that, usually known as “or die”?
[英]Translate Perl to Python: do this or die
我正在將 Perl(我對此知之甚少)腳本移動到 python。
$path = $ENV{ 'SOME_NAME' } || die " SOME_NAME ENV VARIABLE NOT FOUND\n";
我可以(希望)看到這一行的作用,或者將變量“路徑”設置為環境變量“SOME_NAME”,或者失敗,然后向用戶打印一條錯誤消息。 (旁注:有人知道如何讓搜索引擎搜索“||”等特殊字符嗎?)
我嘗試使用“pythonic”方式(更容易請求寬恕而不是許可)來實現它:
try:
path = os.environ['SOME_NAME']
except KeyError,e:
print "SOME_NAME ENVIRONMENT VARIABLE NOT FOUND\n"
raise e
但這似乎相當麻煩,尤其是當我為 3 個不同的環境變量執行此操作時。
如果有更好的實現有什么想法,或者你會說這是 go 的“pythonic”方式嗎?
非常感謝
try:
path = os.environ['SOME_NAME']
var2 = os.environ['VAR2']
var3 = os.environ['VAR3']
var4 = os.environ['VAR4']
except KeyError,e:
print "Not found: ", e
您可以將多個語句放入 try 塊中。
你所擁有的實際上是非常常見的習語,並且可以說是首選模式。 或者你只是讓正常的異常通過而不打印任何額外的東西。 Python原生也有同樣的效果。 所以,
path = os.environ["SOME_NAME"]
只會自行引發 KeyError 異常,默認行為是退出未捕獲的異常。 回溯會告訴你什么和在哪里。
但是,如果可能,您也可以提供默認值。
path = os.environ.get("SOME_NAME", "/default/value")
這不會引發錯誤,您可能會做一些明智的事情作為默認操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.