當前位置:
首頁 > 最新 > 大牛程序員總結了Python入門所需要掌握的知識點!史上超全的總結

大牛程序員總結了Python入門所需要掌握的知識點!史上超全的總結

1.3.2 Python引號

Python接受單引號("),雙引號(「)和三(""或」「」)引用,以表示字元串常量,只要是同一類型的引號開始和結束的字元串。

三重引號可以用於跨越多個行的字元串。

裡面有各種學習資料和我整理的一份2018最新0基礎入門視頻,都無償提供給大家,還有各種資料和開發工具包滿足大家,希望搭建一個好的學習環境,每天裡面更新最新Python市場行情。

1.4.Python的變數和集合

Python有五個標準的數據類型:

a) 數字

b) 字元串

c) 列表

d) 元組

e) 字典

f) set

python中定義變數時不需要顯示指定變數類型,以下為python中變數使用的典型語法:

1.4.5字典

Python字典是一種哈希表型。由「鍵-值」對組成。

鍵可以是任何Python類型,但通常是數字或字元串。

值可以是任意Python的對象。

字典是由花括弧括弧{},可分配值,並用方括弧[]訪問。例如:

1.4.6 set

定義一個set:

a=

print a

a.remove(3)

a.add(6)

a.union(b)

例如:

a=int(『A』,16)

print(a)

結果為: 10

a=tuple(range(1,10,2))

print(a)

b=tuple("hello")

print b

c=complex(1,2)

print c

x=1

e=eval("x+1")

print e

f=dict([(1,2),(3,4),("a",100)])

print f

結果為:

(1, 3, 5, 7, 9)

("h", "e", "l", "l", "o")

(1+2j)

2

{"a": 100, 1: 2, 3: 4}

if else

1.5.2 while循環

1.5.3 for循環

1.6.Python函數

1.6.1 基本形式

默認參數和可變參數

1.6.2 匿名函數

2 可以使用lambda關鍵字來創建小的匿名函數。這些函數被稱為匿名,因為它們不是以標準方式通過使用def關鍵字聲明。

2 Lambda形式可以採取任何數量的參數,但在表現形式上只返回一個值。它們不能包含命令或多個表達式。

2 匿名函數不能直接調用列印,因為需要lambda表達式。

2 lambda函數都有自己的命名空間,並且不能訪問變數高於在其參數列表和那些在全局命名空間的變數。

利用lambda可以實現類似於scala中的高階函數效果:

print_func("Zara")

1.7.2 模塊和包

在python中一個文件可以被看成一個獨立模塊,而包對應著文件夾,模塊把python代碼分成一些有組織的代碼段,通過導入的方式實現代碼重用。

1.7.1 模塊搜索路徑

導入模塊時,是按照sys.path變數的值搜索模塊,sys.path的值是包含每一個獨立路徑的列表,包含當前目錄、python安裝目錄、PYTHONPATH環境變數,搜索順序按照路徑在列表中的順序(一般當前目錄優先順序最高)。

1.7.2.2 使用from-import語句導入模塊的屬性

單行導入

from module import name1,name2,name3

多行導入

from module import name1,name2,

name3

導入全部屬性(由於容易覆蓋當前名稱空間中現有的名字,所以一般不推薦使用,適合模塊中變數名很長並且變數很多的情況)

from module import *

如果你不想某個模塊的屬性被以上方法導入,可以給該屬性名稱前加一個下劃線(_test),如果需要取消隱藏,可以顯示的導入該屬性(from module import _test)

1.7.2.3 擴展的import語句

使用自定義的名稱替換模塊的原始名稱

import simplejson as json

模塊被導入時,載入的時候模塊頂層代碼會被執行,如:設定全局變數、類和函數的聲明等,所以應該把代碼盡量封裝到類和函數中。一個模塊無論被導入多少次,只載入一次,可以防止多次導入時代碼被多次執行。

1.7.2.4 重新導入模塊

reload(module)

內建函數reload可以重新導入一個已經存在的模塊

1.7.3.包結構

1.包定義結構

包將有聯繫的模塊組織在一起,有效避免模塊名稱衝突問題,讓應用組織結構更加清晰。

一個普通的python應用程序目錄結構:

app/

__init__.py

a/

__init__.py

a.py

b/

__init__.py

b.py

app是最頂層的包,a和b是它的子包,可以這樣導入:

from app.a import a

from app.b.b import test

a.test()

test()

上面代碼表示:導入app包的子包a和子包b的屬性test,然後分別調用test方法。

2. __init__.py的作用

每個目錄下都有__init__.py文件,這個是初始化模塊,from-import語句導入子包時需要它,可以在裡面做一些初始化工作,也可以是空文件。

ps:__init__.py定義的屬性直接使用 頂層包.子包 的方式導入,如在目錄a的__init__.py文件中定義init_db()方法,調用如下:

from app import a

a.init_db()

b.py

在這裡a嘗試導入b,而b也嘗試導入a,導入一個先前沒有完全導入的模塊,會導致導入失敗。解決辦法:移除一個導入語句,把導入語句放到函數內部,在需要的時候導入。

b.py

操作文件對象方法

例2:其他文件IO函數的使用

例3:用file(...)替換open(...)

例4:文件的寫操作

指示你正在使用的平台:os.name 對於Windows,它是"nt",而對於Linux/Unix用戶,它是"posix"

重命名:os.rename(old, new)

創建多級目錄:os.makedirs(r「c:pythonest」)

創建單個目錄:os.mkdir(「test」)

獲取文件屬性:os.stat(file)

修改文件許可權與時間戳:os.chmod(file)

終止當前進程:os.exit()

1.9 Python多線程

Python中的多線程是偽線程;不能充分利用cpu中的多核,但是在io等待型的場景下多線程還是可以提高效率

Python中的多線程有多種實現方式,利用threading包實現是比較普遍的做法

示例代碼如下:

1.10面向對象

1.10.1 創建類

使用class語句來創建一個新類,class之後為類的名稱並以冒號結尾,如下實例:

類的幫助信息可以通過ClassName.__doc__查看。

class_suite 由類成員,方法,數據屬性組成。

1.10.2 實例

以下是一個簡單的Python類實例:

empCount變數是一個類變數,它的值將在這個類的所有實例之間共享。你可以在內部類或外部類使用Employee.empCount訪問。

第一個方法__init__()方法是一種特殊的方法,被稱為類的構造函數或初始化方法,當創建了這個類的實例時就會調用該方法

類的方法

使用def關鍵字可以為類定義一個方法,與一般函數定義不同,類方法必須包含參數self,且為第一個參數

1.10.3 創建實例對象

要創建一個類的實例,你可以使用類的名稱,並通過__init__方法接受參數。

訪問屬性

可以使用點(.)來訪問對象的屬性。使用如下類的名稱訪問類變數:

完整實例:

執行以上代碼輸出結果如下:

你可以添加,刪除,修改類的屬性,如下所示:

1.10.4 Python內置類屬性

Python內置類屬性調用實例如下:

執行以上代碼輸出結果如下:

Employee.__doc__: 所有員工的基類

Employee.__name__: Employee

Employee.__module__: __main__

Employee.__bases__: ()

Employee.__dict__: {"__module__": "__main__", "displayCount": , "empCount": 0, "displayEmployee": , "__doc__": "??????????·¥?????o?±?", "__init__": }

1.10.5 私有屬性

1、類的私有屬性

__private_attrs:兩個下劃線開頭,聲明該屬性為私有,不能在類地外部被使用或直接訪問。在類內部的方法中使用時 self.__private_attrs

2、類的私有方法

__private_method:兩個下劃線開頭,聲明該方法為私有方法,不能在類地外部調用。在類的內部調用 self.__private_methods

3、實例

運行結果會報錯:

Python不允許實例化的類訪問私有數據,但你可以使用 object._className__attrName 訪問屬性,將如下代碼替換以上代碼的最後一行代碼:

.........................

print counter._JustCounter__secretCount

執行以上代碼,執行結果如下:

1.10.6 python對象銷毀(垃圾回收)

同Java語言一樣,Python使用了引用計數這一簡單技術來追蹤內存中的對象。

在Python內部記錄著所有使用中的對象各有多少引用。

一個內部跟蹤變數,稱為一個引用計數器。

當對象被創建時, 就創建了一個引用計數, 當這個對象不再需要時, 也就是說, 這個對象的引用計數變為0 時, 它被垃圾回收。但是回收不是"立即"的, 由解釋器在適當的時機,將垃圾對象佔用的內存空間回收。

a = 40 # 創建對象

b = a # 增加引用, 的計數

c = [b] # 增加引用. 的計數

del a # 減少引用 的計數

b = 100 # 減少引用 的計數

c[0] = -1 # 減少引用 的計數

垃圾回收機制不僅針對引用計數為0的對象,同樣也可以處理循環引用的情況。循環引用指的是,兩個對象相互引用,但是沒有其他變數引用他們。這種情況下,僅使用引用計數是不夠的。Python 的垃圾收集器實際上是一個引用計數器和一個循環垃圾收集器。作為引用計數的補充, 垃圾收集器也會留心被分配的總量很大(及未通過引用計數銷毀的那些)的對象。 在這種情況下,解釋器會暫停下來,試圖清理所有未引用的循環。

實例

析構函數 __del__

__del__在對象銷毀的時候被調用,當對象不再被使用時,__del__方法運行:

以上實例運行結果如下:

Point 銷毀

1.10.7 類的繼承

面向對象的編程帶來的主要好處之一是代碼的重用,實現這種重用的方法之一是通過繼承機制。繼承完全可以理解成類之間的類型和子類型關係。

1、語法:

派生類的聲明,與他們的父類類似,繼承的基類列表跟在類名之後,如下所示:

class SubClassName (ParentClass1[, ParentClass2, ...]):

"Optional class documentation string"

class_suite

2、實例:

以上代碼執行結果如下:

調用子類構造方法

調用子類方法 child method

調用父類方法

父類屬性 : 200

你可以繼承多個類

class A: # 定義類 A

.....

class B: # 定義類 B

.....

class C(A, B): # 繼承類 A 和 B

.....

可以使用issubclass()或者isinstance()方法來檢測。

issubclass() - 布爾函數判斷一個類是另一個類的子類或者子孫類,語法:issubclass(sub,sup)

isinstance(obj, Class) 布爾函數如果obj是Class類的實例對象或者是一個Class子類的實例對象則返回true。

3、方法重寫

如果你的父類方法的功能不能滿足你的需求,你可以在子類重寫你父類的方法:

實例:

執行以上代碼輸出結果如下:

4、基礎重載方法

下表列出了一些通用的功能,你可以在自己的類重寫:

1/ __init__ ( self [,args...] )

構造函數

簡單的調用方法: obj = className(args)

2/ __del__( self )

析構方法, 刪除一個對象

簡單的調用方法 : dell obj

3/ __str__( self )

用於將值轉化為適於人閱讀的形式

簡單的調用方法 : str(obj)

4/ __cmp__ ( self, x )

對象比較

簡單的調用方法 : cmp(obj, x)

以上代碼執行結果如下所示:

Vector(7,8)

Python2中,print是一個關鍵字

Python3中,print是一個函數,必須使用print(arg)

1) 函數塊以關鍵字def後跟函數名為定義頭

2) 任何輸入參數或參數應該放在這些括弧內。還可以定義這些括弧內的參數。

3) 函數的第一個語句可以是一個可選的聲明 - 該函數或文檔字元串的文檔字元串。

4) 每個函數中的代碼塊以冒號(:)開頭並縮進。

5) 該語句返回[表達式]退出功能,可選地傳遞迴一個表達式給調用者。不帶參數return語句返回None。


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

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


請您繼續閱讀更多來自 Python 的精彩文章:

TAG:Python |