這篇文章旨為剛接觸python不久的朋友,提供一點幫助,請在檢查代碼沒有主要問題時再看是否存在以下問題。
一般來說,寫完代碼運行時,如果代碼中有錯誤,解釋器會提示錯誤信息,按照提示信息,一般很快可以找出錯誤,進行修改。但也有一些時候錯誤提示的信息不是那么明確,代碼檢查了幾遍仍找不出問題,就比較頭疼了。今天我們來說一個常見的invalid syntax,在寫代碼的過程中,哪些小細節錯誤容易導致invalid syntax報錯。更多的原因,后續逐漸補充......文章源自四五設計網-http://www.133122.cn/42230.html
1.符號使用不正確
例如:只寫了半個括號,使用了中文符號等文章源自四五設計網-http://www.133122.cn/42230.html
像下面的代碼中,76行少了一個右括號。文章源自四五設計網-http://www.133122.cn/42230.html
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | ???? …… ???? else : ???????? header = "HTTP/1.1 200 OK\r\n" ???????? header + = "\r\n" ???????? body = "hahahaha" ???????? response = header + body ???????? new_socket.send(response.encode( "utf-8" ) ???? new_socket.close() def run_forever( self ): ???? while True : ???????? new_socket, client_addr = self .tcp_server_socket.accept() ???????? ???????? p = multiprocessing.Process(target = self .service_client, args = (new_socket,)) ???????? p.start() ???????? ???????? new_socket.close() ???????? …… |
運行代碼,則會報錯:文章源自四五設計網-http://www.133122.cn/42230.html
?File "w01.py", line 78
new_socket.close()
^
SyntaxError: invalid syntax文章源自四五設計網-http://www.133122.cn/42230.html
其實,78行并沒有錯誤,這時我們就在78行附近尋找,看是否有成對的符號(如括號)未成對使用的情況。在76行補全右括號后,代碼運行正常。文章源自四五設計網-http://www.133122.cn/42230.html
有些解釋器會有自動補全符號的功能。有些則沒有,這時對于新手朋友要特別注意,在寫成對的符號時(例如括號、引號等)一定要一次把一對符號寫完,再在符號中填寫內容,避免因這種情況出現bUG,后續檢查花費大量時間。文章源自四五設計網-http://www.133122.cn/42230.html
2.代碼縮進問題
python是一種嚴格依賴縮進的語言,如果縮進不正確或縮進格式不統一,一般錯誤信息會明確告訴你,但有時也會出現invalid syntax報錯。文章源自四五設計網-http://www.133122.cn/42230.html
所謂縮進不正確,python的縮進是四個空格或一個TAB,如果縮進三個空格,一定報錯文章源自四五設計網-http://www.133122.cn/42230.html
所謂縮進格式,即不能空格和TAB混用。如果不清楚是否存在混用,可以使用sublime統一調整即可。文章源自四五設計網-http://www.133122.cn/42230.html
invalid syntax——無效語法
錯誤代碼塊
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | num_1 = float ( input (“請輸入第一個數:”)) num_2 = float ( input (“請輸入第二個數:”)) c = ( input (“請選擇運算類型: 1. + 2 - 3. * 4. / 5. % :”)) if c = = + out = num_1 + num_2 if c = = - : out = num_1 - num_2 if c = = * : out = num_1 * num_2 if c = = / : out = num_1 / num_2 if c = = % : out = num_1 % num_2 print (“運算結果是:”,out)` |
出現錯誤:invalid syntax
在此程序中,把“、+、-、、/等運算符直接用在if條件中造成報錯,故字符串類型和數值類型*不一樣,應用“+”、“-”符號作為判斷條件。
調整后代碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | num_1 = float ( input (“請輸入第一個數:”)) num_2 = float ( input (“請輸入第二個數:”)) c = ( input (“請選擇運算類型: 1. + 2 - 3. * 4. / 5. % :”)) if c = = "+" : out = num_1 + num_2 if c = = "-" : out = num_1 - num_2 if c = = "*" : out = num_1 * num_2 if c = = "/" : out = num_1 / num_2 if c = = "%" : out = num_1 % num_2 print (“運算結果是:”,out) |
以上為個人經驗,希望能給大家一個參考


評論