只要將它變成一個for
循環中,if type
應該抓住任何東西。
def copy_list(t):
if type(t) is list:
t_copy=[]
for i in t:
t_copy.append(i)
return t_copy
else:
return "Not a list"
y = None
x = copy_list(y)
print x
y = "abc"
x = copy_list(y)
print x
y = [1,2,3,4,5,6,7,8,9]
x = copy_list(y)
print x
或者更簡潔地說:
def copy_list(t):
if type(t) is list:
t_copy = list(t)
return t_copy
else:
return "Not a list"
y = ""
x = copy_list(y)
print x,"\t", type(y)
y = []
x = copy_list(y)
print x,"\t\t", type(y)
y = None
x = copy_list(y)
print x," ", type(y)
y = 10
x = copy_list(y)
print x," ", type(y)
y = "abc"
x = copy_list(y)
print x," ", type(y)
y = [1,2,3,4]
x = copy_list(y)
print x," ", type(y)
y = ["a",2,"b"]
x = copy_list(y)
print x," ", type(y)
y = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
x = copy_list(y)
print x," ", type(y)
個結果:
Not a list <type 'str'>
[] <type 'list'>
Not a list <type 'NoneType'>
Not a list <type 'int'>
Not a list <type 'str'>
[1, 2, 3, 4] <type 'list'>
['a', 2, 'b'] <type 'list'>
Not a list <type 'dict'>
因爲你的'if'語句只會觸發't'作爲一個列表,所以其他語句都不會嘗試在非列表上運行,所以你從來沒有打過任何代碼來提高豁免。 –
你正在捕捉'TypeError'; 'try'塊中的哪一行會引發異常? (此外,因爲你正在捕捉異常,所以你違反了你的函數應該拋出異常的規定,因爲函數應該拋出,所以你不應該在那裏發現錯誤。) –
那麼怎麼能我修改我的代碼以達到except語句? –