會拋出異常嗎? UUID()是否曾默默失敗?是否有任何情況,其中'myStatus'從將無效參數提供給uuid.UUID()會發生什麼?
myStatus = True
myUUID = uuid.UUID(someWeirdValue)
if myUUID == None:
myStatus = False
會等於假嗎?
會拋出異常嗎? UUID()是否曾默默失敗?是否有任何情況,其中'myStatus'從將無效參數提供給uuid.UUID()會發生什麼?
myStatus = True
myUUID = uuid.UUID(someWeirdValue)
if myUUID == None:
myStatus = False
會等於假嗎?
的UUID()
構造或者提出了TypeError
或ValueError
,具體內容取決於傳入。
若沒有通過任何的hex
,bytes
,bytes_le
,fields
,或int
選擇提出了一個TypeError
,傳遞一個值,該值是無效提出了一個ValueError
:
>>> uuid.UUID()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/uuid.py", line 129, in __init__
raise TypeError('need one of hex, bytes, bytes_le, fields, or int')
TypeError: need one of hex, bytes, bytes_le, fields, or int
>>> uuid.UUID('abcd')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/uuid.py", line 134, in __init__
raise ValueError('badly formed hexadecimal UUID string')
ValueError: badly formed hexadecimal UUID string
>>> uuid.UUID(bytes='abcd')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/uuid.py", line 144, in __init__
raise ValueError('bytes is not a 16-char string')
ValueError: bytes is not a 16-char string
等
它會不是默默地失敗。它肯定永遠不會返回None
。將myUUID
設置爲UUID
實例,或者引發異常。
由於UUID
class不覆蓋__new__
,它的構造無法返回除uuid.UUID
實例以外的其他任何東西。
該模塊提供的UUID工廠,功能uuid1
到uuid4
,可以想象有一個錯誤,導致他們返回None
。粗略瀏覽一下他們的implementation來看,這樣的錯誤似乎不太可能。無論什麼故障導致您的UUID對象爲None
,uuid
模塊不是一個可信的罪魁禍首。
這些便利方法絕大多數都返回'UUID'實例,或引發異常。這些人都沒有機會返回「無」。 – 2013-03-07 18:09:42
@MartijnPieters同意,但必須研究每個人的代碼。另一方面,由於類沒有定義'__new__'(或者指定一個元類),構造就變得清晰了。 – user4815162342 2013-03-07 18:12:17
這就是我所做的;功能很簡單。我確定。 :-) – 2013-03-07 18:12:47
我的問題的第二部分呢?有沒有「myStatus」等於False的情況? – zakdances 2013-03-07 18:04:50
@yourfriendzak:不,因爲你得到一個'UUID'實例,否則會引發異常。 – 2013-03-07 18:05:45