Python 學習指南

2021-07-03 12:10:57 字數 3998 閱讀 2069

經常能在 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 裡有兩種型別的字串strunicode, 上面的'中國'就是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的安裝目錄新...