原创 Python學習筆記(三十一):連接 mysql 數據庫

python 中連接 mysql 數據庫,可以使用 mysql-connector,mysql-connector 是 mysql 官方提供的驅動;是屬於第三方的模塊,所以需要手動安裝; 也可以使用 pymysql 驅動來連接 mysql

原创 Python學習筆記(三十):TCP 通信

TCP 簡介: TCP 協議,傳輸控制協議(英語:Transmission Control Protocol,縮寫爲 TCP)是一種面向連接的、可靠的、基於字節流的傳輸層通信協議; TCP 通信需要經過 創建連接、數據傳送、終止連接 三個

原创 Python學習筆記(二十九):UDP 通信

網絡通信: 本地的進程間通信可以有很多種,比如隊列、同步(互斥鎖)等; 那麼網絡中進程之間如何通信?? 首先要解決的問題是,如何準確標識一個網絡中的進程; 我們知道,網絡中的 ip 地址可以準確的標識一個主機,而 "協議+端口" 可以準確

原创 Python學習筆記(二十八):線程

進程和線程的區別: 進程:是系統進行資源分配和調度的一個獨立單位; 線程:是進程的一個實體,是 CPU 調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本上不擁有系統資源,只擁有一點在運行中必不可少的資源(如程

原创 Python學習筆記(二十五):使用跨平臺的 Process 創建子進程

Process 類: fork() 方法只在類 linux 系統下可以使用,在 windows 下無法使用; 但是 python 是跨平臺的,自然也應該提供一個跨平臺的多進程支持; multiprocessing 模塊就是跨平臺版本的多進

原创 Python學習筆記(二十六):使用進程池 Pool 創建子進程

接上一篇文章:Python學習筆記(二十五):使用跨平臺的 Process 創建子進程 當需要創建的子進程數量不多時,可以直接利用 multiprocessing 模塊中的 Process 類動態生成多個進程;但如果是上百甚至上千個目標,

原创 Python學習筆記(二十七):進程間通信 Queue

進程之間有時候需要通信,可以使用 multiprocessing 模塊中的 Queue 類來實現進程間的數據傳遞,Queue 是一個消息隊列,循序 先進先出 的規則; 初始化 Queue 對象時(q = Queue()),若括號中沒有指定

原创 Python學習筆記(二十二):裝飾器

裝飾器: 如果有一些函數,已經實現了某些功能,要求在不修改這些函數源代碼,並且調用名稱不變的前提下,對這些函數的功能進行一些擴展,就可以使用裝飾器來實現; 比如存在如下兩個函數: # 定義兩個函數 def test1(): pr

原创 Python學習筆記(二十四):在 linux 系統下使用 fork() 創建子進程

進程: 編寫完畢的代碼,在沒有運行的時候,稱之爲程序; 正在運行的代碼,就稱之爲進程; 進程,除了包含代碼以外,還有需要運行的環境等,所以和程序是有區別的;   fork() 方法創建子進程: Python 的 os 模塊,封裝了常見的系

原创 Python學習筆記(二十三):在運行的時候動態添加屬性和方法

動態語言和靜態語言的區別: 靜態語言:先編譯,後運行;像 C、C++、Java 等;編譯之後什麼樣,運行的時候就是什麼樣;並且靜態語言的類中有哪些屬性,以及哪些方法,在定義類的時候就已經指定好了,在使用類的時候不能修改; 動態語言:不需要

原创 Python學習筆記(十八):property 的用法

1、爲私有屬性添加 getter、setter 方法: 有些時候,我們需要設置類中的屬性是私有的,讓外部不能直接操作屬性,而是通過屬性的 getter 和 setter 方法,間接操作私有屬性; # 定義一個類 class Money

原创 Python學習筆記(十七):模塊 和 包

模塊: python 中的模塊相當於 C/C++ 中的頭文件,在 C/C++ 中需要通過 #include 導入頭文件,纔可以使用頭文件中的函數,而在 python 中導入模塊,要使用 import 關鍵字,導入模塊之後,纔可以使用模塊中

原创 Python學習筆記(二十):閉包

接上一篇文章:Python學習筆記(十九):函數引用  閉包: 在一個函數內部再定義一個函數,並且這個函數用到了外部函數的變量,那麼就稱這個內部函數爲閉包; # 定義一個函數 def test(num): print("===

原创 Python學習筆記(二十一):函數名重名

函數名重名: 在其他語言中,如果存在函數名相同,參數也相同,返回類型也相同的情況,會出現錯誤;但是在 python 中不會出錯,而是後定義的函數,會覆蓋掉先定義的函數;如下代碼: # 定義兩個函數,名稱相同 def test():

原创 Python學習筆記(十九):函數引用

函數引用: 先看下面一段代碼: # 定義一個函數 def test(): print("=== test ===") test() print(test) 輸出結果: 從輸出結果可以看出: 當函數名帶有小括號的時候(test