當前位置:
首頁 > 知識 > Python開發,請避開這些坑!

Python開發,請避開這些坑!

源 | 簡書

學習Python和網路爬蟲


整理 | AI時間



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



1. 忘記寫冒號


在 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: name 『age』 is not defined.


改正:

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個元素「mouse」的索引位置是2,改正:

spam = [

"cat"

,

"dog"

,

"mouse"

]
print(spam[

2

])


6. 使用自增 「++」 自減 「—」


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

spam =

0


spam++


這時可以使用 「+=」 來代替 「++」,改正:

spam =

0


spam +=

1


7. 使用關鍵字命名變數


Python 3中一共33個關鍵字:


False,None,True,and,as,assert,break,class,continue,def,del,elif,else,except,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,or,pass,raise,return,try,while,with,yield


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


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之後就不到外部查找了,此時就會出現print的時候變數num還沒賦值的錯誤。


10. 縮進問題


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


常見的錯誤用法:


(1)

print(

"Hello"

)
   print(

"World!"

)


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

print(

"Hello"

)
print(

"World!"

)


(2)

if

spam ==

42

:
   print(

"Hello"

)
 print(

"World!"

)


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

if

spam ==

42

:
   print(

"Hello"

)
   print(

"World!"

)


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

if

spam ==

42

:
   print(

"Hello"

)

print(

"World!"

)


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


你在學習Python的過程中掉過哪些坑,歡迎留言參與討論。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!

TAG: |