我在使用python進行鑄造時遇到了問題。在python中進行安全鑄造
在C#中,我可以通過關鍵字安全鑄成,例如:
string word="15";
var x=word as int32// here I get 15
string word="fifteen";
var x=word as int32// here I get null
具有類似於這條巨蟒(3.2)的東西嗎?
我在使用python進行鑄造時遇到了問題。在python中進行安全鑄造
在C#中,我可以通過關鍵字安全鑄成,例如:
string word="15";
var x=word as int32// here I get 15
string word="fifteen";
var x=word as int32// here I get null
具有類似於這條巨蟒(3.2)的東西嗎?
認爲不會,但你可以實現你自己:
def safe_cast(val, to_type, default=None):
try:
return to_type(val)
except (ValueError, TypeError):
return default
safe_cast('tst', int) # will return None
safe_cast('tst', int, 0) # will return 0
如果您希望異常頻繁發生,我覺得這不是最有效的選擇。 – Matt 2012-11-19 22:29:17
我會添加'TypeError'異常 – 2016-11-02 09:28:18
有類似的東西:
>>> word="15"
>>> x=int(word)
>>> x
15
>>> word="fifteen"
>>> x=int(word)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'fifteen'
>>> try:
... x=int(word)
... except ValueError:
... x=None
...
>>> x is None
True
請注意,除了子句之外,你不應該使用bare,所以你想在這種情況下使用'except ValueError:',否則會發現拼寫錯誤,語法錯誤等。 – 2011-06-13 15:54:26
沒錯,我只想着重點,但可能最好也是展示一下。 – unbeli 2011-06-13 19:14:56
我相信,你聽說過 「Python的」 的方式做事。 所以,安全的轉換實際上依賴於「請求寬恕,不允許」規則。
s = 'abc'
try:
val = float(s) # or int
# here goes the code that relies on val
except ValueError:
# here goes the code that handles failed parsing
# ...
鑄件具有意義只爲一個變量(內存=塊,其內容可改變)
沒有變量,其內容可改變,在Python。只有對象,不包含在內容中:他們有本身存在。然後,一個對象的類型不能改變,AFAIK。
然後,投射在Python中沒有意義。這是我的信念和意見。請糾正我,如果我錯了。
。
由於鑄造在Python中沒有意義,所以沒有辦法回答這個問題。
問題揭示的Python的基本面的一些誤解中和在解釋什麼促使你認爲你需要轉換的東西
當在互聯網上下文中查詢時,參數被表示爲字符串。爲了使這些參數對您的內部模塊有用,您通常必須將「15」設置爲15.這只是一種可能的情況。 – Matt 2012-11-19 22:12:19
好吧,它不是轉換。無論如何,這個問題很有意義。沒有必要這麼消極:-1 – 2014-02-05 09:28:15
注意,Python沒有真正* *有鑄造後,你將獲得更多的利潤獲得答案;這只是將值傳遞給其他類型的構造函數。 – 2011-06-13 12:10:55
使用C#進行C#編程。在Python中,你想使用異常,而不是空值。 – 2011-06-13 13:20:16
這甚至在C#中都沒有。這是一個編譯錯誤。 – Davy8 2011-06-13 19:17:50