Python 编程笔记(本人出品,必属精品)
文章目錄
- Part.I 準備工作
- Chap.I 下載安裝
- Chap.II 實現快捷鍵清屏
- Chap.III 概念匯編 & 注意事項
- Part.II 基礎知識
- Chap.I 快應用
- Chap.II 輸入輸出
- Chap.III 條件與循環語句
- Chap.IV 關于文件
- Chap.V 關于調試
- Chap.VI 迭代器與生成器
- Part.III 常用功能實現
- Chap.I 大佬的輪子
- Chap.II 自己實現的功能
- Chap.III 問題 & 解決方案
- Reference
Part.I 準備工作
Chap.I 下載安裝
Windows 的下載安裝可以看下面的快應用,也可以看 Ref.3;Linux 下的安裝可以參考 Ref.4,也可以參考下面的操作。
-
St1:從官網上下載源碼包,比如https://www.python.org/downloads/release/python-386/ 下載
-
St2:將壓縮包放到想安裝的目錄下,然后終端cd到此目錄下,之后tar -zxvf Python-3.8.6.tgz解壓縮
-
St3:./configure --prefix=/Adirectory注意,這里的Adirectory是一個目錄的名字(可省,這就是默認安裝了),比如:/usr,意思是將該軟件安裝在 /usr 下面,執行文件就會安裝在 /usr/bin (而不是默認的 /usr/local/bin),資源文件就會安裝在 /usr/share(而不是默認的/usr/local/share)
-
St4:make 編譯
-
St5:make install
-
St6:設置環境變量,在.bash_profile 文件中加入:export PATH=$PATH:/yourdirectory/bin這個和上面St3的Adirectory是一樣的。
Python 之所以如此受歡迎原因之一就是它有很多好用的三方庫,下載這些三方庫一般用pip指令(windows 用 powershell或cmd都行,Linux 用終端),下面是常用的pip指令:
pip -V # 查看 pip 版本 pip install numpy # 示例:安裝 numpy pip list # 查看安裝的三方庫有哪些 py -0p # 查看 python 的安裝路徑Chap.II 實現快捷鍵清屏
當然,這里指的是windows,Python 并沒有自帶清屏快捷鍵,網上這招也許是大佬自己搞出來的。有很多文章都講如何操作的,操作方法大同小異,本質上都是一樣的,這里挑了個簡潔的,鏈接參上
大致分為這幾步:
1.在Python\Lib\idlelib下,新建一個ClearWindow.py文件(沒有時就新建)
2.Python\Lib\idlelib下修改config-extensions.def ,在末尾添加如下內容
關于第二步,若改不了的話,可以以管理員的身份打開powershell,然后輸入 notepad xx\Python\Lib\idlelib\config-extensions.def 進行修改,之后保存。
Chap.III 概念匯編 & 注意事項
- Anaconda 指的是一個開源的 Python 發行版本,其包含了conda、Python等180多個科學包及其依賴項。 因為包含了大量的科學包,Anaconda 的下載文件比較大(約 531 MB),如果只需要某些包,或者需要節省帶寬或存儲空間,也可以使用Miniconda這個較小的發行版(僅包含conda和 Python)。
- 虛擬環境是一個將不同項目所需求的依賴分別放在獨立的地方的一個工具,它給這些工程創建虛擬的Python環境。它解決了“項目X依賴于版本1.x,而項目Y需要項目4.x”的兩難問題,而且使你的全局site-packages目錄保持干凈和可管理。
- 當 python2 和 python3 共存時,一般 python 指 python2,想用python3 需用命令 python3。
- Python List:append 方法向列表的尾部添加一個新的元素;extend方法將參數的每個元素都添加到原有的列表中。
Part.II 基礎知識
Chap.I 快應用
這部分記錄一下筆者本篇博客的分博客和其他優秀的博客:
- VS 2015 配置 Python
- VSCode 搭建 Python 環境
- Python 格式化輸出
- Python 常用符號含義 + 常用數學函數
- Python 數據類型及其相互轉換
- Python List 操作筆記(里面有一些子博客,主要是對三維列表的操作)
- Python 函數使用
- Python 跨文件調用函數
- Python 如何用 shell 調用腳本中的函數+參數傳遞
Python 很強大的功能之一就是它的繪圖功能,這也是筆者使用 Python 最最常用的功能之一。之前用Matlab,對圖形的繪制用到很熟練,python 其實和 Matlab 差不多,下面是一些總結
- Python 各種畫圖(這個是繪圖的主博客,有關繪圖的里面基本都可以找到)
- Python 常用線型 + 點符號 + 顏色匯總
- Python 中圖例 Legend 的調整
- Python 修改 x/y ticks
- Python 繪圖字體控制 + 文字在圖片中的位置調整
- Python 讓多圖排版更加美觀
- Python 箱型圖的繪制并提取特征值
下面是Python的一些強大的模塊 / 類:
- Python 導入模塊
- Python 之 subprocess 調用其他程序模塊
- Python 之 Logging 日志記錄模塊
- Python 之 argparse 解析命令行參數模塊
- Python 之 xml.etree.ElementTree 解析 xml 模塊
- Python 之 subprocess 調用程序運行指令
隨機數函數
import random| choice(seq) | 從序列的元素中隨機挑選一個元素,比如random.choice(range(10)),從0到9中隨機挑選一個整數。 |
| randrange ([start,] stop [,step]) | 從指定范圍內,按指定基數遞增的集合中獲取一個隨機數,基數默認值為 1 |
| random() | 隨機生成下一個實數,它在[0,1)范圍內。 |
| seed([x]) | 改變隨機數生成器的種子seed。如果你不了解其原理,你不必特別去設定seed,Python會幫你選擇seed。 |
| shuffle(lst) | 將序列的所有元素隨機排序 |
| uniform(x, y) | 隨機生成下一個實數,它在[x,y]范圍內。 |
Chap.II 輸入輸出
python 簡單的輸入輸出如下:
>>> a=input('please input the value of a: ') please input the value of a: 12 >>> print(a) 12當你想知道一個變量的值是多少時,可能會對它是整型還是長整型感興趣。這可以通過兩種機制來實現,實際上是值被轉換為字符串的兩種機制。可以通過以下兩個函數來使用這兩種機制:一是通過str函數,它會把值轉換為合理形式的字符串,以便用戶可以理解,而repr會創建一個字符串,它以合法的Python表達式的形式來表示值。下面是一些例子
>>> 'hello world!' 'hello world!' >>> print('hello world!') hello world! >>> print(repr('hello world!')) 'hello world!' >>> print(str('hello world!')) hello world!關于兩個input (input 和 raw_input) ,假設有這樣一個腳本:
name = input( "what is your name? ") print "He11o. " + name + " !" ------------------ What is your name? "Gumby" #輸入需加引號,用raw_input()則不需 He11o. Gumby! ++++++++++++++++++++++++++++ >>input( "Enter a number: ")Enter a number: 3 3 >>>raw_input( "Enter a number: ")Enter a number: 3 '3'raw_input 會把所有數據當作原始輸入存放在字符串中。也就是說,使用這倆input的時候,可以按照如下規則:input 對值進行操作,raw_input 對字符串進行操作。
'''跨行書寫字符串,當然最后也得用'''將其引起來。普通字符串也可以跨行(換行的時候加個\)。如果一行之中最后一個字符是反斜線\,那么,換行符本身就“轉義”了,也就是被忽略了。
>>> print('C:\nowhere') C: owhere >>> print(r'C:\nowhere') C:\nowhere原始字符串,其最后一個字符不可以是反斜杠\
格式化輸出見上面。
Chap.III 條件與循環語句
Python程序語言指定任何非0和非空(null)值為true,0 或者 null為false。
A. 條件判斷 - if 語句
- Python 中用 elif 代替了 else if,所以if語句的關鍵字為:if – elif – else。
- 每個條件后面要使用冒號 :,表示接下來是滿足條件后要執行的語句塊。
- 使用縮進來劃分語句塊,相同縮進數的語句在一起組成一個語句塊。
- 在Python中沒有switch – case語句。
B. 循環語句 - while
while 判斷條件(condition):執行語句(statements)……while … else :在條件語句為 false 時執行 else 的語句塊。
while <expr>:<statement(s)> else:<additional_statement(s)>C. 循環語句 - for
for <variable> in <sequence>:<statements> else:<statements>python 中使用 for 循環的幾種方式:
# c 是 lst 中的元素 for c in lst: # 使用 range, for i in range(n): # 使用 enumerate, i 和 x 分別是索引和 lst 中的值 for i,x in enumerate(lst): # 使用 zip 可以獲取多個 lst 的值 for x,y in zip(lst1,lst2):其他控制語句:
| break | break 語句可以跳出 for 和 while 的循環體。如果你從 for 或 while 循環中終止,任何對應的循環 else 塊將不執行。 |
| continue | continue 語句被用來告訴 Python 跳過當前循環塊中的剩余語句,然后繼續進行下一輪循環。 |
| pass | pass是空語句,是為了保持程序結構的完整性。pass 不做任何事情,一般用做占位語句。 |
Chap.IV 關于文件
1、open函數用來打開文件,語法如下:open(name[, mode[, buffering]])
其使用文件名(name)作為一個強制參數,模式(mode)和緩沖(buffering)參數都是可選的。
1)open 函數中模式參數常用值
| 'r' | 讀模式 ,默認參數 |
| 'x' | 寫模式,新建一個文件,如果該文件已存在則會報錯。 |
| 'w' | 寫模式 |
| 'a' | 追加模式 |
| 'b' | 二進制模式(可添加到其他模式中使用) |
| '+' | 讀/寫模式(可添加到其他模式中使用) |
注:'b'模式改變處理文件的方法。一般來說,Python 假定處理的是文本文件(包含字符)。若要處理二進制文件,那么應該在模式參數中增加'b',例如'rb'。
2)open函數的第3個參數(可選)控制著文件的緩沖。如果參數是0(或者是False),IO(輸入/輸出)就是無緩沖的(所有的讀寫操作都直接針對硬盤)﹔如果是1(或者是True),IO就是有緩沖的(意味著Python使用內存來代替硬盤,讓程序更快,只有使用flush或者close時才會更新硬盤上的數據。大于1的數字代表緩沖區的大小(單位是字節),-1(或者是任何負數)代表使用默認的緩沖區大小。
讀寫簡單示例:
# write f=open('somefile.txt','w') f.write('Hello, ') f.write('World!') f.close(); ----------------------- # read f=open('somefile.txt','r'); f.read(4) #讀取4個字符 f.read() #讀取剩下的字符 f.close()2、seek 函數來隨機訪問,seek函數的一般用法為:seek(offset[, whence]) 這個方法把當前位置(進行讀和寫的位置)移動到由offset 定義的位置。
offset:從開始位置的偏移量,也就是代表需要移動偏移的字節數。
whence:給offset參數一個定義,表示要從哪個位置開始偏移;0代表從文件開頭開始算起,1代表從當前位置開始算起,2代表從文件末尾算起。
tell()返回當前游標在文件中的位置。
3、讀寫行
file.readline() 讀取單獨的一行(從當前位置開始直到一個換行符出現,也讀取這個換行符。file.readline(5) 讀取這一行中前五個字符。file.readlines()讀取一個文件中所有行并將其作為列表返回。
writelines方法和readlines相反:傳給它一個字符串的列表(實際上任何序列或者可迭代的對象都行),它會把所有的字符串寫人文件(或流)。注意,程序不會增加新行,需要自己添加。沒有writeline方法,因為能使用write。
Chap.V 關于調試
1 在所需要調試的地方加入如下代碼:
import pdb pdb.set_trace()2 調試代碼常用命令:
| break / b | 設置斷點 |
| command / c | 繼續執行程序 |
| list / l | 查看當前行的代碼段 |
| step / s | 進入函數 |
| return / r | 執行代碼直到從當前函數返回 |
| exit / q | 中止并退出 |
| next / n | 執行下一行 |
| pp | 打印變量的值 |
| help | 幫助 |
Chap.VI 迭代器與生成器
這塊參考:https://www.runoob.com/python3/python3-iterator-generator.html
迭代器
迭代是Python最強大的功能之一,是訪問集合元素的一種方式。
- 迭代器是一個可以記住遍歷的位置的對象。
- 迭代器對象從集合的第一個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會后退。(人生如棋,我當為卒,可誰曾見我后退一步!)
- 迭代器有兩個基本的方法:iter() 和 next()。
- 字符串,列表或元組對象都可用于創建迭代器:
- 迭代器對象可以使用常規for語句進行遍歷:
- 也可以使用 next() 函數:
生成器
- 使用了 yield 的函數被稱為生成器(generator)。
- 跟普通函數不同的是,生成器是一個返回迭代器的函數,只能用于迭代操作,更簡單點理解生成器就是一個迭代器。
- 在調用生成器運行的過程中,每次遇到 yield 時函數會暫停并保存當前所有的運行信息,返回 yield 的值, 并在下一次執行 next() 方法時從當前位置繼續運行。
- 調用一個生成器函數,返回的是一個迭代器對象。
以下實例使用 yield 實現斐波那契數列:
Part.III 常用功能實現
這塊記錄一下一些小功能的實現。
Chap.I 大佬的輪子
筆者收集的大佬們分享的『輪子』如下:
Chap.II 自己實現的功能
Chap.III 問題 & 解決方案
這部分是筆者使用 Python 過程中所遇到的問題以及得到的解決方案。
避免 VisibleDeprecationWarning 警告的方法:
import warnings warnings.filterwarnings("ignore", category=Warning)Python 內部的 line.split() 函數只支持一種分隔符輸入,使用re.split()函數可以指定多個分隔符分割字符串,下面是一個示例。
import re.split(r'[;,\s]',line) split_list = list(filter(None, re.split(r'[.,!#$?%^]', text)))注:
- 第二行中\s:表示空格,第二行指定了三種分隔符;、,和空格
- 第三行可以去除分割后的空串。
分割文件絕對路徑,獲得字符串中的文件路徑和文件名
tmp = os.path.split(file) # tuple path = tmp[0] file = tmp[1]得到的是一個列表,有倆元素,第一個是文件路徑,第二個是文件名
Reference
總結
以上是生活随笔為你收集整理的Python 编程笔记(本人出品,必属精品)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ipv6 无状态地址管理
- 下一篇: java基础巩固-宇宙第一AiYWM:为