>>deff(x,y):printx,y>>>t=('a','b')>>>f(t)Traceback(mostrecentcalllast):File"",line1,inf(t)Typ" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

自己編程中遇到的Python錯誤和解決方法匯總整理

系統(tǒng) 1651 0

開個貼,用于記錄平時(shí)經(jīng)常碰到的Python的錯誤同時(shí)對導(dǎo)致錯誤的原因進(jìn)行分析,并持續(xù)更新,方便以后查詢,學(xué)習(xí)。
知識在于積累嘛!微笑
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
錯誤:

復(fù)制代碼 代碼如下:

>>> def f(x, y):?
??? print x, y?
>>> t = ('a', 'b')?
>>> f(t)?
?
Traceback (most recent call last):?
? File " ", line 1, in ?
??? f(t)?
TypeError: f() takes exactly 2 arguments (1 given)?

【錯誤分析】不要誤以為元祖里有兩個參數(shù),將元祖?zhèn)鬟M(jìn)去就可以了,實(shí)際上元祖作為一個整體只是一個參數(shù),
實(shí)際需要兩個參數(shù),所以報(bào)錯。必需再傳一個參數(shù)方可.
復(fù)制代碼 代碼如下:

>>> f(t, 'var2')?
('a', 'b') var2?

更常用的用法: 在前面加*,代表引用元祖
復(fù)制代碼 代碼如下:

>>> f(*t)?
'a', 'b'?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
錯誤:
復(fù)制代碼 代碼如下:

>>> def func(y=2, x):?
??? return x + y?
SyntaxError: non-default argument follows default argument?

【錯誤分析】在C++,Python中默認(rèn)參數(shù)從左往右防止,而不是相反。這可能跟參數(shù)進(jìn)棧順序有關(guān)。
復(fù)制代碼 代碼如下:

>>> def func(x, y=2):?
??? return x + y?
>>> func(1)?
3?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

錯誤:

復(fù)制代碼 代碼如下:

>>> D1 = {'x':1, 'y':2}?
>>> D1['x']?
1?
>>> D1['z']?
?
Traceback (most recent call last):?
? File " ", line 1, in ?
??? D1['z']?
KeyError: 'z'?

【錯誤分析】這是Python中字典鍵錯誤的提示,如果想讓程序繼續(xù)運(yùn)行,可以用字典中的get方法,如果鍵存在,則獲取該鍵對應(yīng)的值,不存在的,返回None,也可打印提示信息.
復(fù)制代碼 代碼如下:

>>> D1.get('z', 'Key Not Exist!')?
'Key Not Exist!'?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

錯誤:

復(fù)制代碼 代碼如下:

>>> from math import sqrt?
>>> exec "sqrt = 1"?
>>> sqrt(4)?
?
Traceback (most recent call last):?
? File " ", line 1, in ?
??? sqrt(4)?
TypeError: 'int' object is not callable?

【錯誤分析】exec語句最有用的地方在于動態(tài)地創(chuàng)建代碼字符串,但里面存在的潛在的風(fēng)險(xiǎn),它會執(zhí)行其他地方的字符串,在CGI中更是如此!比如例子中的sqrt = 1,從而改變了當(dāng)前的命名空間,從math模塊中導(dǎo)入的sqrt不再和函數(shù)名綁定而是成為了一個整數(shù)。要避免這種情況,可以通過增加in ,其中 就是起到放置代碼字符串命名空間的字典。
復(fù)制代碼 代碼如下:

>>> from math import sqrt?
>>> scope = {}?
>>> exec "sqrt = 1" in scope?
>>> sqrt(4)?
2.0?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
錯誤:
復(fù)制代碼 代碼如下:

>>> seq = [1, 2, 3, 4]?
>>> sep = '+'?
>>> sep.join(seq)?
?
Traceback (most recent call last):?
? File " ", line 1, in ?
??? sep.join(seq)?
TypeError: sequence item 0: expected string, int found?

【錯誤分析】join是split的逆方法,是非常重要的字符串方法,但不能用來連接整數(shù)型列表,所以需要改成:

復(fù)制代碼 代碼如下:

>>> seq = ['1', '2', '3', '4']?
>>> sep = '+'?
>>> sep.join(seq)?
'1+2+3+4'?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

錯誤:

復(fù)制代碼 代碼如下:

>>> print r'C:\Program Files\foo\bar\'?
SyntaxError: EOL while scanning string literal?

【錯誤分析】Python中原始字符串以r開頭,里面可以放置任意原始字符,包括\,包含在字符中的\不做轉(zhuǎn)義。
但是,不能放在末尾!也就是說,最后一個字符不能是\,如果真 需要的話,可以這樣寫:
復(fù)制代碼 代碼如下:

>>> print r'C:\Program Files\foo\bar' "\\"?
C:\Program Files\foo\bar\?
>>> print r'C:\Program Files\foo\bar' + "\\"?
C:\Program Files\foo\bar\?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
代碼:
復(fù)制代碼 代碼如下:

bad = 'bad'?
?
try:?
??? raise bad?
except bad:?
??? print 'Got Bad!'?

錯誤:
復(fù)制代碼 代碼如下:

>>>??
?
Traceback (most recent call last):?
? File "D:\Learn\Python\Learn.py", line 4, in ?
??? raise bad?
TypeError: exceptions must be old-style classes or derived from BaseException, not str

【錯誤分析】因所用的Python版本2.7,比較高的版本,raise觸發(fā)的異常,只能是自定義類異常,而不能是字符串。所以會報(bào)錯,字符串改為自定義類,就可以了。

復(fù)制代碼 代碼如下:

class Bad(Exception):?
??? pass?
?
def raiseException():?
??? raise Bad()?
?
try:?
??? raiseException()?
except Bad:?
??? print 'Got Bad!'?
?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

class Super:?
??? def method(self):?
??????? print "Super's method"?
?
class Sub(Super):?
??? def method(self):?
??????? print "Sub's method"?
??????? Super.method()?
??????? print "Over..."?
?
S = Sub()?
S.method()?

執(zhí)行上面一段代碼,錯誤如下:

復(fù)制代碼 代碼如下:

>>>??
Sub's method?
?
Traceback (most recent call last):?
? File "D:\Learn\Python\test.py", line 12, in ?
??? S.method()?
? File "D:\Learn\Python\test.py", line 8, in method?
??? Super.method()?
TypeError: unbound method method() must be called with Super instance as first argument (got nothing instead)?

【錯誤分析】Python中調(diào)用類的方法,必須與實(shí)例綁定,或者調(diào)用自身.

復(fù)制代碼 代碼如下:

ClassName.method(x, 'Parm')
ClassName.method(self)

所以上面代碼,要調(diào)用Super類的話,只需要加個self參數(shù)即可。
復(fù)制代碼 代碼如下:

class Super:?
??? def method(self):?
??????? print "Super's method"?
?
class Sub(Super):?
??? def method(self):?
??????? print "Sub's method"?
??????? Super.method(self)?
??????? print "Over..."?
?
S = Sub()?
S.method()?
?
?
#輸出結(jié)果?
>>>??
Sub's method?
Super's method?
Over...?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

復(fù)制代碼 代碼如下:

>>> reload(sys)?
Traceback (most recent call last):?
? File " ", line 1, in ?
NameError: name 'sys' is not defined?

【錯誤分析】reload期望得到的是對象,所以該模塊必須成功導(dǎo)入。在沒導(dǎo)入模塊前,不能重載.
復(fù)制代碼 代碼如下:

>>> import sys?
>>> reload(sys)?
?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

>>> def f(x, y, z):?
??? return x + y + z?
?
>>> args = (1,2,3)?
>>> print f(args)?
?
Traceback (most recent call last):?
? File " ", line 1, in ?
??? print f(args)?
TypeError: f() takes exactly 3 arguments (1 given)

【錯誤分析】args是一個元祖,如果是f(args),那么元祖是作為一個整體作為一個參數(shù)
*args,才是將元祖中的每個元素作為參數(shù)

復(fù)制代碼 代碼如下:

>>> f(*args)?
6?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

復(fù)制代碼 代碼如下:

>>> def f(a,b,c,d):?
...?? print a,b,c,d?
...?
>>> args = (1,2,3,4)?
>>> f(**args)?
Traceback (most recent call last):?
? File " ", line 1, in ?
TypeError: f() argument after ** must be a mapping, not tuple?

【錯誤分析】錯誤原因**匹配并收集在字典中所有包含位置的參數(shù),但傳遞進(jìn)去的卻是個元祖。
所以修改傳遞參數(shù)如下:

復(fù)制代碼 代碼如下:

>>> args = {'a':1,'b':2,'c':3}?
>>> args['d'] = 4?
>>> f(**args)?
1 2 3 4?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

自己編程中遇到的Python錯誤和解決方法匯總整理_第1張圖片

【錯誤分析】在函數(shù)hider()內(nèi)使用了內(nèi)置變量open,但根據(jù)Python作用域規(guī)則LEGB的優(yōu)先級:
先是查找本地變量==》模塊內(nèi)的其他函數(shù)==》全局變量==》內(nèi)置變量,查到了即停止查找。
所以open在這里只是個字符串,不能作為打開文件來使用,所以報(bào)錯,更改變量名即可。
可以導(dǎo)入__builtin__模塊看到所有內(nèi)置變量:異常錯誤、和內(nèi)置方法

復(fù)制代碼 代碼如下:

>>> import __builtin__
>>> dir(__builtin__)
['ArithmeticError', 'AssertionError', 'AttributeError',..
? .........................................zip,filter,map]
?

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

In [105]: T1 = (1)?
In [106]: T2 = (2,3)?
In [107]: T1 + T2?
---------------------------------------------------------------------------?
TypeError???????????????????????????????? Traceback (most recent call last)?
in ()?
----> 1 T1 + T2;?
?
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'?

【錯誤分析】(1)的類型是整數(shù),所以不能與另一個元祖做合并操作,如果只有一個元素的元祖,應(yīng)該用(1,)來表示
復(fù)制代碼 代碼如下:

In [108]: type(T1)?
Out[108]: int?
?
In [109]: T1 = (1,)?
In [110]: T2 = (2,3)?
In [111]: T1 + T2?
Out[111]: (1, 2, 3)?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

>>> hash(1,(2,[3,4]))?
?
Traceback (most recent call last):?
? File " ", line 1, in ?
??? hash((1,2,(2,[3,4])))?
TypeError: unhashable type: 'list'?

【錯誤分析】字典中的鍵必須是不可變對象,如(整數(shù),浮點(diǎn)數(shù),字符串,元祖).
可用hash()判斷某個對象是否可哈希

復(fù)制代碼 代碼如下:

>>> hash('string')?
-1542666171?

但列表中元素是可變對象,所以是不可哈希的,所以會報(bào)上面的錯誤.
如果要用列表作為字典中的鍵,最簡單的辦法是:
復(fù)制代碼 代碼如下:

>>> D = {}?
>>> D[tuple([3,4])] = 5?
>>> D?
{(3, 4): 5}?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

>>> L = [2,1,4,3]?
>>> L.reverse().sort()?
Traceback (most recent call last):?
? File " ", line 1, in ?
AttributeError: 'NoneType' object has no attribute 'sort'?
>>> L?
[3, 4, 1, 2]?

【錯誤分析】列表屬于可變對象,其append(),sort(),reverse()會在原處修改對象,不會有返回值,
或者說返回值為空,所以要實(shí)現(xiàn)反轉(zhuǎn)并排序,不能并行操作,要分開來寫

復(fù)制代碼 代碼如下:

>>> L = [2,1,4,3]?
>>> L.reverse()?
>>> L.sort()?
>>> L?
[1, 2, 3, 4]?

或者用下面的方法實(shí)現(xiàn):
復(fù)制代碼 代碼如下:

In [103]: sorted(reversed([2,1,4,3]))?
Out[103]: [1, 2, 3, 4]?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

>>> class = 78?
SyntaxError: invalid syntax?

【錯誤分析】class是Python保留字,Python保留字不能做變量名,可以用Class,或klass
同樣,保留字不能作為模塊名來導(dǎo)入,比如說,有個and.py,但不能將其作為模塊導(dǎo)入

復(fù)制代碼 代碼如下:

>>> import and?
SyntaxError: invalid syntax?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

>>> f = open('D:\new\text.data','r')?
Traceback (most recent call last):?
? File " ", line 1, in ?
IOError: [Errno 22] invalid mode ('r') or filename: 'D:\new\text.data'?
>>> f = open(r'D:\new\text.data','r')?
>>> f.read()?
'Very\ngood\naaaaa'?

【錯誤分析】\n默認(rèn)為換行,\t默認(rèn)為TAB鍵.
所以在D:\目錄下找不到ew目錄下的ext.data文件,將其改為raw方式輸入即可。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

復(fù)制代碼 代碼如下:

try:?
??? print 1 / 0?
?????
except ZeroDivisionError:?
??? print 'integer division or modulo by zero'?
?????
finally:?
??? print 'Done'?
?
else:???
??? print 'Continue Handle other part'?
報(bào)錯如下:?
D:\>python Learn.py?
? File "Learn.py", line 11?
??? else:?
?????? ^?
SyntaxError: invalid syntax?

【錯誤分析】錯誤原因,else, finally執(zhí)行位置;正確的程序應(yīng)該如下:

復(fù)制代碼 代碼如下:

try:?
??? print 1 / 0?
?????
except ZeroDivisionError:?
??? print 'integer division or modulo by zero'?
?
?
else:???
??? print 'Continue Handle other part'?
?????
finally:?
??? print 'Done'?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

>>> [x,y for x in range(2) for y in range(3)]?
? File " ", line 1?
??? [x,y for x in range(2) for y in range(3)]?
?????????? ^?
SyntaxError: invalid syntax?

【錯誤分析】錯誤原因,列表解析中,x,y必須以數(shù)組的方式列出(x,y)
復(fù)制代碼 代碼如下:

>>> [(x,y) for x in range(2) for y in range(3)]?
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]?
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
class JustCounter:?
??? __secretCount = 0?
?
??? def count(self):?
??????? self.__secretCount += 1?
??????? print 'secretCount is:', self.__secretCount?
?
count1 = JustCounter()?
?
count1.count()?
count1.count()?
?
count1.__secretCount?

報(bào)錯如下:

復(fù)制代碼 代碼如下:

>>>??
secretCount is: 1?
secretCount is: 2?
?
?
Traceback (most recent call last):?
? File "D:\Learn\Python\Learn.py", line 13, in ?
??? count1.__secretCount?
AttributeError: JustCounter instance has no attribute '__secretCount'?

【錯誤分析】雙下劃線的類屬性__secretCount不可訪問,所以會報(bào)無此屬性的錯誤.

解決辦法如下:

復(fù)制代碼 代碼如下:

# 1. 可以通過其內(nèi)部成員方法訪問?
# 2. 也可以通過訪問?
ClassName._ClassName__Attr?
#或??
ClassInstance._ClassName__Attr?
#來訪問,比如:?
print count1._JustCounter__secretCount?
print JustCounter._JustCounter__secretCount??

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

>>> print x?
Traceback (most recent call last):?
? File " ", line 1, in ?
NameError: name 'x' is not defined?
>>> x = 1?
>>> print x?
1?

【錯誤分析】Python不允許使用未賦值變量
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

復(fù)制代碼 代碼如下:

>>> t = (1,2)?
>>> t.append(3)?
Traceback (most recent call last):?
? File " ", line 1, in ?
AttributeError: 'tuple' object has no attribute 'append'?
>>> t.remove(2)?
Traceback (most recent call last):?
? File " ", line 1, in ?
AttributeError: 'tuple' object has no attribute 'remove'?
>>> t.pop()?
Traceback (most recent call last):?
? File " ", line 1, in ?
AttributeError: 'tuple' object has no attribute 'pop'?

【錯誤分析】屬性錯誤,歸根到底在于元祖是不可變類型,所以沒有這幾種方法.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

>>> t = ()?
>>> t[0]?
Traceback (most recent call last):?
? File " ", line 1, in ?
IndexError: tuple index out of range?
>>> l = []?
>>> l[0]?
Traceback (most recent call last):?
? File " ", line 1, in ?
IndexError: list index out of range?

【錯誤分析】空元祖和空列表,沒有索引為0的項(xiàng)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

復(fù)制代碼 代碼如下:

>>> if X>Y:?
...? X,Y = 3,4?
...?? print X,Y?
? File " ", line 3?
??? print X,Y?
??? ^?
IndentationError: unexpected indent?
?
?
>>>?? t = (1,2,3,4)?
? File " ", line 1?
??? t = (1,2,3,4)?
??? ^?
IndentationError: unexpected indent?

【錯誤分析】一般出在代碼縮進(jìn)的問題
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

復(fù)制代碼 代碼如下:

>>> f = file('1.txt')?
>>> f.readline()?
'AAAAA\n'?
>>> f.readline()?
'BBBBB\n'?
>>> f.next()?
'CCCCC\n'?

【錯誤分析】如果文件里面沒有行了會報(bào)這種異常

復(fù)制代碼 代碼如下:

>>> f.next() #?
Traceback (most recent call last):?
? File " ", line 1, in ?
StopIteration

有可迭代的對象的next方法,會前進(jìn)到下一個結(jié)果,而在一系列結(jié)果的末尾時(shí),會引發(fā)StopIteration的異常.
next()方法屬于Python的魔法方法,這種方法的效果就是:逐行讀取文本文件的最佳方式就是根本不要去讀取。
取而代之的用for循環(huán)去遍歷文件,自動調(diào)用next()去調(diào)用每一行,且不會報(bào)錯
復(fù)制代碼 代碼如下:

for line in open('test.txt','r'):?
??? print line?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

復(fù)制代碼 代碼如下:

>>> string = 'SPAM'?
>>> a,b,c = string?
Traceback (most recent call last):?
? File " ", line 1, in ?
ValueError: too many values to unpack?

【錯誤分析】接受的變量少了,應(yīng)該是
復(fù)制代碼 代碼如下:

>>> a,b,c,d = string?
>>> a,d?
('S', 'M')?
#除非用切片的方式?
>>> a,b,c = string[0],string[1],string[2:]?
>>> a,b,c?
('S', 'P', 'AM')?
或者?
>>> a,b,c = list(string[:2]) + [string[2:]]?
>>> a,b,c?
('S', 'P', 'AM')?
或者?
>>> (a,b),c = string[:2],string[2:]?
>>> a,b,c?
('S', 'P', 'AM')?
或者?
>>> ((a,b),c) = ('SP','AM')?
>>> a,b,c?
('S', 'P', 'AM')?
?
簡單點(diǎn)就是:?
>>> a,b = string[:2]?
>>> c?? = string[2:]?
>>> a,b,c?
('S', 'P', 'AM')?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

>>> mydic={'a':1,'b':2}?
>>> mydic['a']?
1?
>>> mydic['c']?
Traceback (most recent call last):?
? File " ", line 1, in ??
KeyError: 'c'?

【錯誤分析】當(dāng)映射到字典中的鍵不存在時(shí)候,就會觸發(fā)此類異常, 或者可以,這樣測試
復(fù)制代碼 代碼如下:

>>> 'a' in mydic.keys()?
True?
>>> 'c' in mydic.keys()????????????? #用in做成員歸屬測試?
False?
>>> D.get('c','"c" is not exist!')?? #用get或獲取鍵,如不存在,會打印后面給出的錯誤信息?
'"c" is not exist!'?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

File "study.py", line 3?
? return None?
? ^?
dentationError: unexpected indent?

【錯誤分析】一般是代碼縮進(jìn)問題,TAB鍵或空格鍵不一致導(dǎo)致

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

復(fù)制代碼 代碼如下:

>>>def A():?
return A()?
>>>A() #無限循環(huán),等消耗掉所有內(nèi)存資源后,報(bào)最大遞歸深度的錯誤???
File " ", line 2, in A return A()RuntimeError: maximum recursion depth exceeded?
class Bird:?
??? def __init__(self):?
??????? self.hungry = True?
??? def eat(self):?
??????? if self.hungry:?
??????????? print "Ahaha..."?
??????????? self.hungry = False?
??????? else:?
??????????? print "No, Thanks!"?

該類定義鳥的基本功能吃,吃飽了就不再吃?
輸出結(jié)果:?
復(fù)制代碼 代碼如下:

>>> b = Bird()?
>>> b.eat()?
Ahaha...?
>>> b.eat()?
No, Thanks!?

下面一個子類SingBird,?
復(fù)制代碼 代碼如下:

class SingBird(Bird):?
??? def __init__(self):?
??????? self.sound = 'squawk'?
??? def sing(self):?
??????? print self.sound
??
輸出結(jié)果:?
復(fù)制代碼 代碼如下:

>>> s = SingBird()?
>>> s.sing()?
squawk?

SingBird是Bird的子類,但如果調(diào)用Bird類的eat()方法時(shí),?

復(fù)制代碼 代碼如下:

>>> s.eat()?
Traceback (most recent call last):?
? File " ", line 1, in ?
??? s.eat()?
? File "D:\Learn\Python\Person.py", line 42, in eat?
??? if self.hungry:?
AttributeError: SingBird instance has no attribute 'hungry'?

【錯誤分析】代碼錯誤很清晰,SingBird中初始化代碼被重寫,但沒有任何初始化hungry的代碼

復(fù)制代碼 代碼如下:

class SingBird(Bird):?
??? def __init__(self):?
??????? self.sound = 'squawk'?
??????? self.hungry = Ture #加這么一句?
??? def sing(self):?
??????? print self.sound?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

復(fù)制代碼 代碼如下:

class Bird:?
??? def __init__(self):?
??????? self.hungry = True?
??? def eat(self):?
??????? if self.hungry:?
??????????? print "Ahaha..."?
??????????? self.hungry = False?
??????? else:?
??????????? print "No, Thanks!"?
?
class SingBird(Bird):?
??? def __init__(self):?
??????? super(SingBird,self).__init__()?
??????? self.sound = 'squawk'?
??? def sing(self):?
??????? print self.sound?
>>> sb = SingBird()?
Traceback (most recent call last):?
? File " ", line 1, in ?
??? sb = SingBird()?
? File "D:\Learn\Python\Person.py", line 51, in __init__?
??? super(SingBird,self).__init__()?
TypeError: must be type, not classobj?

【錯誤分析】在模塊首行里面加上__metaclass__=type,具體還沒搞清楚為什么要加
復(fù)制代碼 代碼如下:

__metaclass__=type?
class Bird:?
??? def __init__(self):?
??????? self.hungry = True?
??? def eat(self):?
??????? if self.hungry:?
??????????? print "Ahaha..."?
??????????? self.hungry = False?
??????? else:?
??????????? print "No, Thanks!"?
?
class SingBird(Bird):?
??? def __init__(self):?
??????? super(SingBird,self).__init__()?
??????? self.sound = 'squawk'?
??? def sing(self):?
??????? print self.sound?
>>> S = SingBird()?
>>> S.?
SyntaxError: invalid syntax?
>>> S.?
SyntaxError: invalid syntax?
>>> S.eat()?
Ahaha...?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

>>> T?
(1, 2, 3, 4)?
>>> T[0] = 22??
Traceback (most recent call last):?
? File " ", line 1, in ?
??? T[0] = 22?
TypeError: 'tuple' object does not support item assignment

【錯誤分析】元祖不可變,所以不可以更改;可以用切片或合并的方式達(dá)到目的.
復(fù)制代碼 代碼如下:

>>> T = (1,2,3,4)?
>>> (22,) + T[1:]?
(22, 2, 3, 4)?

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
復(fù)制代碼 代碼如下:

>>> X = 1;?
>>> Y = 2;?
>>> X + = Y?
? File " ", line 1?
??? X + = Y?
??????? ^?
SyntaxError: invalid syntax?

【錯誤分析】增強(qiáng)行賦值不能分開來寫,必須連著寫比如說 +=, *=
復(fù)制代碼 代碼如下:

>>> X += Y?
>>> X;Y?
3?
2?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩欧美在线视频 | 91婷婷射 | 国产九九精品视频 | 国产高清亚洲 | 91视频视频 | 欧美日韩网站 | 久久亚洲精品玖玖玖玖 | 91视频苹果版 | 日韩欧美视频一区二区在线观看 | 日韩亚洲欧美在线爱色 | 久久久久国产精品免费免费搜索 | 亚洲视频在线一区 | 亚洲欧美激情四射 | 欧美伦交 | 久久www免费人成看片高清 | 国产男女爽爽爽免费视频 | 极品美女aⅴ高清在线观看 一级片片 | 午夜天堂精品久久久久 | 天天操天天射天天操 | 欧美成人一区在线 | 777奇米影视色888成人 | 国产99精品一区二区三区免费 | 亚洲欧美中日韩中文字幕 | 成人欧美一区二区三区在线观看 | 成人观看网站a | 天天做天天爱天天大综合 | 狠狠做深爱婷婷久久一区 | 色五月婷婷成人网 | 午夜亚洲国产成人不卡在线 | 蜜桃在线视频 | 奇米777四色成人影视 | 午夜影视大全 | 欧美精品福利视频 | 国产小视频在线观看免费 | 久久久久久99 | 91视频观看 | 91成人国产网站在线观看 | 黄色三级视频网站 | 我我色综合 | 五月婷婷在线观看视频 | 久久99精品久久久久久综合 |