Python中最容易掉進去的10個坑

優效學院,大數據,人工智能,Java,架構,在線教育


相比於其他語言,Python中的語法比較簡單易學,但一旦不注意細節,剛入門的新手很容易就會掉進語法錯誤的坑裡。

忘記寫冒號

在if,elif,else,for,while,class,def語句後面忘記添加“:”

if spam == 42
print('Hello!')

2.誤用“=”做等值比較

“=”是給變量賦值,“==”才是判斷兩個值是否相等:

score = 60
if score = 60:
print ('passed')

改正:

score = 60
if score == 60:
print ('passed')

3.變量沒有定義:

if age >= 18:
print ('adult')
print ('END')

會導致:NameError:未定義名稱'age'。

改正:

age = 20
if age >= 18:
print ('adult')
print ('END')

4.字符串與非字符串連接

錯誤:

num = 12
print('I have ' + num+ ' apples.')

非字符串和字符串連接的時候,要將非字符串轉換為字符串類型之後才能連接,改正:

num = 12
print('I have ' + str(num)+ ' apples.')

5.列表的索引位置

習慣性地認為列表元素的位置是從1開始的:

spam = ['cat', 'dog', 'mouse']
print(spam[3])

列表元素的位置是從0開始的,所以第3個元素“鼠標”的索引位置是2,改正:

spam = ['cat', 'dog', 'mouse']
print(spam[2])

6.使用自增“++”自減“ - ”

學過ç語言或者Java的的人會很習慣使用我++或者異,但在Python的中是沒有自增自減操作符的:

spam = 0
spam++

這時可以使用“+ =”來代替“++”,改正:

spam = 0
spam += 1

7.使用關鍵字命名變量

Python 3中一共33個關鍵字:

假,無,真,和,如,斷言,突破,階級,繼續,閃避,德爾,ELIF,否則,除了最後,對於來自全球,如果進口,在,是,λ,外地,不,或者,傳球,養,返回,嘗試,同時,有,產量

自定義變量時,變量名不能和這些關鍵字重複。

8.索引元素位置時忘記調用len方法

通過索引位置來獲取列表元素時,忘記要先使用len函數來獲取列表的長度:

fam = ['dad', 'mom', 'son']
for i in range(fam):
print(fam[i])

改正:

fam = ['dad', 'mom', 'son']
for i in range(len(fam)):
print(fam[i])

9.函數中的局部變量賦值前被使用

num = 42
def myFunction():
print(num)
num = 100
myFunction()

第一行定義了一個全局變量num,同時函數myFunction()也定義了一個同名的局部變量,但程序執行時是先查找局部變量的,所以在函數中找到num之後就不到外部查找了,此時就會出現打印的時候變量NUM還沒賦值的錯誤。

10.縮進問題

和其他語言的語法最大的不同就是,Python中不能用括號來表示語句塊,也不能用開始或結束標誌符來表示,而是靠縮進來區分代碼塊的。

常見的錯誤用法:

(1)

print('Hello')
print('World!')

錯誤是第二行的縮進會導致兩個打印語句是包含和被包含的關係,但他們兩者是屬於同一個代碼塊的,所以應該寫成;

print('Hello')
print('World!')

(2)

if spam == 42:
print('Hello')
print('World!')

錯誤是第三行的縮進,改正的方法有兩種,一是如果兩個打印語句是屬於同一代碼塊的,應該改正為

if spam == 42:
print('Hello')
print('World!')

二是如果第三行的打印語句是和,如果語句是同一級的,則改正為

if spam == 42:
print('Hello')
print('World!')

(3)在Python 3中,縮進的時候,不能Tab和空格混用,每個縮進層次應該選擇只使用Tab或者只使用空格。

你在學習的Python的過程中掉過哪些坑,歡迎留言參與討論。需要資料的聯繫作者。


分享到:


相關文章: