經常能在 python 群裡看到很多新人在問一些非常基礎的問題, 基本每天都在重複的問這些問題,在這裡就總結一下這些問題.
首先宣告, 本文不打算教會你 python, 本文力圖陳列一些新手容易遇到的問題, 並企圖教會你
如何學習 python, 在遇到問題的時候如何提問.
學習 python 的第一步需要選擇版本, python 3.x 和 2.x 的斷層較大, 3.x 不向後相容 2.x.
python 現在主流應該還是 python 2.7, python 2.7 將會是 python 2.x 的最後乙個版本, 並且
會支援到 2020 年. 但是 python 3 也在健康發展, 會慢慢取代 python 2.7 成為主流版本.
在你要開始學習 python 之前就是要確定要學習的版本,不管你是選擇 2 還是 3, 雖然有差別, 但不是很大, 等你熟悉了之後就可以觸類旁通.不必太害怕選擇了乙個版本到時候無法兼顧另乙個版本.
如果你無法確定要學習的版本,可以根據以下方法來確定要學習的版本.
如果你手上已經有了一本關於 python 基礎的書, 那麼書的開頭應該會交代 python 版本.那就根據這個教程選擇要學習的版本.
如果你已經有乙個 python 專案等著你去上手, 那麼先了解專案需要什麼版本. 然後根據
需要的版本找支援對應版本的基礎書籍.
如果你沒有以上的負擔, 那麼推薦你直接學習 python 3, 但是你要找到一本支援 python 3的入門書籍, 不然你前期你會發現所有的都是錯的, 會直接打消你的自信心.
python 3 的底層全部用 unicode 實現, 所以不會遇到 python2 煩人的unicodedecodeerror
類似的異常, 關於這個後面會講到.
python 官網已經有詳細的版本差異(這裡)
這裡簡單列出幾個主要差異
在 python2 裡 print 是乙個語句, 用以下方式輸出
print
'hello world!'
在 python 3 裡 print 變成了乙個 函式
print('hello world')
在 python 2 裡用raw_input
函式獲取輸入
raw_input("enter your name: ")
在 python 3 裡用input
函式代替
input("enter your name: ")
當然還有很多, 這裡不一一枚舉, 如果你以後對 python 有了一定了解, 可以看看
這篇文章
python 是可以多個版本共存的, 如果可以你可以同時安裝 python 2 和 3, 自己
動手親自比較一下.
python shell 就是你在命令列下執行python
指令後出來的乙個互動式 shell,或者執行 windows 下的idle
出來的視窗叫做 python shell, python shell 提供一種 「所見即所得」 的方式來執行 python 語句, 這將是你學習 python的一種重要工具.
但是我見到很多人問像下面那樣執行指令碼為什麼會出錯
>>> python script.py
這樣是錯誤的, python shell 是執行 python 語句的, 而python script.py
是一條命令, 意為執行script.py
這個檔案裡的 python 語句.
我們真正要做的是在命令列下執行這個命令, 所謂命令列就是 windows 下
win+r 輸入 cmd 回車彈出的視窗.
如果你在命令列下執行失敗請上網搜尋了解關於path
的相關知識.
如果你選擇了 python 2, 那麼就有需要面對一些問題.
如果你的 python 原始碼檔案裡出現了中文字元, 你就會發現無法執行出現
syntaxerror: non-ascii character
'\xe5'
infile xx.py on
line
8, but
noencoding
declared; see
fordetails
你只需要在檔案的最上面加上一行
#-*- coding: utf-8 -*-
即可
如果你不幸遇到了這個錯誤, 那麼一般是因為字串連線引起的, 比如下面這樣的**
>>>
'中國' + u'a'
如果你學過了基礎你就會知道u''
包圍的字串是unicode
, python 2 裡有兩種型別的字串str
和unicode
, 上面的'中國'
就是str
型別,u'a'
就是unicode
型別.
如果這兩種型別的字串相連,str
型別的字串會向unicode
做隱式轉化, 而隱式轉換預設的編碼是ascii
, 明顯ascii
編碼不可能包含任何漢字, 所以就會丟擲這個異常.
如果上面反過來就不會丟擲異常, 因為ascii
裡包含a
這個字元
>>>
u'中國' + 'a'
在檔案中使用統一的型別的字串可以規避這個問題, 要麼都使用u''
包圍的字串, 要麼都使用''
包圍的字串
當然上面單引號是可以換成雙引號的.
python 在程式出錯的時候會向終端列印一串略長的資訊叫做traceback
, 像下面這樣:
traceback (most recent call last):
file "test.py", line 16, in
main()
file "test.py", line 14, in main
test()
file "test.py", line 10, in test
'中國' + u'a'
unicodedecodeerror: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
這一段資訊很詳細的描述了出錯的地方和詳細的呼叫資訊, 當然還有錯誤描述.
看懂 traceback 將會有助於你更好的學習 python. 這段 traceback 說明
在 test.py 的第 16 行 main 函式裡, 呼叫了在 14 行的 test 函式,
test 函式裡檔案的第 10 行的語句觸發了 unicodedecodeerror 異常.
簡直太清晰了, 如果你覺得不清晰的話就怪我描述的不好吧.
如果你遇到了問題, 解決不了需要提問的時候, 請盡量的提供你的**和詳細的 traceback.
**直接發出來不是很好的方式, 請盡量貼到支援**高亮的**上, 並保持縮排.
推薦的下面兩個貼**的**:
如果在學習初期並不推薦 ide 作為開發工具, 使用文字編輯器可能有助於你的學習,
按照困難程度由低到高推薦下面幾種文字編輯器:
如果你想要一款功能強大的 ide 那麼推薦你 pycharm
python 基礎書籍有很多: 《簡明 python 教程》, 《python 核心程式設計》《python 學習手冊》《python參考手冊》等都是很不錯的入門書籍.
良好的**規範可以讓你的程式更加的簡潔、美觀和易讀. python 有自己的**
規範, 可以參見 pep8
Python學習指南
摘要 馬爸爸提出dt時代,資料成為了現在高科技企業競爭的最主要資產。python資料型別轉換 python io程式設計 python字串操作 python列表 一種列表建立的簡單方式 python列表生成式 用來解決列表太大導致記憶體問題,這裡使用生成器,可以一次只返回列表中的乙個元素 pytho...
Python入門學習指南
python入門學習指南 對於初學者,入門至關重要,這關係到初學者是從入門到精通還是從入門到放棄。以下是結合python的學習經驗,整理出的一條學習路徑,主要有四個階段 no.1 新手入門階段,學習基礎知識 總體來講,找一本靠譜的書,由淺入深,邊看邊練。網上的學習教程有很多,多到不知道如何選擇。所有...
Python學習指南 環境搭建
python是乙個跨平台 可移植的程式語言,因此可在windows linux和mac os x系統中安裝使用。安裝完成後,你會得到python直譯器環境,可以通過終端輸入python命令檢視本地是否已經按照python以及python版本。這裡有一點需要注意的是,如果沒有將python的安裝目錄新...