新手在做寫代碼的時候容易卡殼,尤其當接觸的函式以及其他知識比較多的時候,經常會看完需求之后不知道自己該用什么方法來實作它,實作的邏輯可能你有,但怎么該用什么函式給忘了,這其實就是知識的儲備不夠,你記不住哪個函式有什么作用,自然一頭霧水,
這幾天我專門整理了Python常用的一些函式,從最基礎的輸入輸出函式到正則等12個板塊的,總共100多個常用函式,方便小伙伴們進行快速地記憶,每天快速過一遍,用的時候再加深一下,慢慢地你就會擺脫寫代碼卡殼的狀況,
雖說自學編程的時候我們強調更多的東西是理解和實際去敲代碼,但有些東西你是要必須牢記的,否則你寫代碼將寸步難行,老手當然已經爛記于心,新手想要快速得心應手開發,記住高頻使用的函式就是一個好法子,


1.基礎函式
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | print() | 輸出 |
| 2 | input() | 輸入 |
| 3 | int() | 轉整型 |
| 4 | float() | 轉浮點型 |
| 5 | str() | 轉字串 |
| 6 | type() | 回傳物件的型別 |
| 7 | isinstance() | 回傳布林值(True,False) |
案例:將浮點型數值轉換為字串,輸出轉換后的資料型別
f = 30.5
ff = str(f)
print(type(ff))
#輸出結果為 class 'str'
2.流程控制
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | if 陳述句 :執行1 | 條件判斷 |
| 2 | if 條件 :代碼塊1 else:代碼塊2 | 條件判斷 |
| 3 | while | 判斷回圈 |
| 4 | for | 計數回圈 |
| 5 | range() | 范圍函式,可控制開始位置、結束位置和步長 |
| 6 | break | 跳出回圈 |
| 7 | continue | 跳過本次回圈,后面的回圈繼續執行 |
案例:根據用戶輸入的分數判斷成績,低于50分時提示“你的分數低于50分”,5059分時提示“你的分數在60分左右”,大于等于60分為及格,8090分為優秀,大于90分為非常優秀,
s = int(input("請輸入分數:"))
if 80 >= s >= 60:
print("及格")
elif 80 < s <= 90:
print("優秀")
elif 90 < s <= 100:
print("非常優秀")
else:
print("不及格")
if s > 50:
print("你的分數在60分左右")
else:
print("你的分數低于50分")
3.串列
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | append() | 向串列中添加物件,并添加到末尾 |
| 2 | extend(可迭代物件) | 將可迭代物件中資料分別添加到串列中,并添加到末尾 |
| 3 | insert(下標,物件) | 向指定下標位置添加物件 |
| 4 | clear() | 清空串列 |
| 5 | pop() | 洗掉下標指定的元素,如果不加下標則洗掉最后一個元素 |
| 6 | remove(物件) | 洗掉指定的物件 |
| 7 | del | 洗掉變數或指定下表的值 |
| 8 | copy() | 淺拷貝 |
| 9 | count(物件) | 回傳物件在串列中出現的次數 |
| 10 | index(value,開始下標,結束下標) | 元素出現的第一次下標位置,也可自定義范圍 |
| 11 | reverse() | 原地翻轉 |
| 12 | sort(key=None,reverse=False) | 快速排序,默認從小到大排序,key:演算法 |
| 13 | len() | 獲取串列的長度(元素) |
案例:判斷6這個數在串列[1,2,2,3,6,4,5,6,8,9,78,564,456]中的位置,并輸出其下標,
l = [1,2,2,3,6,4,5,6,8,9,78,564,456]
n = l.index(6, 0, 9)
print(n)
#輸出結果為 4
4.元組
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | list(元祖) | 元祖轉換成串列 |
| 2 | tuple(串列) | 串列轉換成元祖 |
| 3 | 元祖的函式操作與串列大致相同相同,不贅述 |
案例:修改元組
#取元組下標在1~4之間的3個數,轉換成串列
t = (1,2,3,4,5)
print(t[1:4])
l = list(t)
print(l)
#在串列下標為2的位置插入1個6
l[2]=6
print(l)
#講修改后的串列轉換成元組并輸出
t=tuple(l)
print(t)
#運行結果為:
(2, 3, 4)
[1, 2, 3, 4, 5]
[1, 2, 6, 4, 5]
(1, 2, 6, 4, 5)
5.字串
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | capitalize() | 把字串的第一個字符改為大寫,后面的小寫 |
| 2 | casefold() | 把整個字串都小寫 |
| 3 | encode() | 編碼 str–bytes(二進制字串) |
| 4 | decode() | 解碼 |
| 5 | count(sub,start,stop) | 回傳字符(sub)出現的次數,star:開始下標,stop:結束下標 |
| 6 | find(sub,start,stop) | 回傳sub第一次出現的下標,查不到回傳-1 |
| 7 | index(sub,start,stop) | 回傳sub第一次出現的下標 |
| 8 | upper() | 將字串轉為大寫 |
| 9 | lower() | 將字串轉為小寫 |
| 10 | format() | 將字串按某種格式輸出 |
案例:用format()的三種方式輸出字串
方式1:用數字占位(下標)
"{0} 嘿嘿".format("Python")
a=100
s = "{0}{1}{2} 嘿嘿"
s2 = s.format(a,"JAVA","C++")
print(s2)
#運行結果為:100JAVAC++ 嘿嘿
方式2:用{} 占位
a=100
s = "{}{}{} 嘿嘿"
s2 = s.format(a,"JAVA","C++","C# ")
print(s2)
#運行結果為:100JAVAC++ 嘿嘿
方式3:用字母占位
s = "{a}{b}{c} 嘿嘿"
s2 = s.format(b="JAVA",a="C++",c="C# ")
print(s2)
#運行結果為:C++JAVAC# 嘿嘿
6.字典
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | clear() | 清空字典 |
| 2 | copy() | 淺拷貝 |
| 3 | fromkeys(可迭代物件,value=None) | 根據可迭代物件中的元素去創建字典 |
| 4 | get(key,[d]) | 獲取鍵所對應的值,key是鍵,d是提示資訊 |
| 5 | items() | 將字典中的鍵值對封裝成元組并放到類集合中 |
| 6 | pop(key,[d]) | 根據鍵洗掉字典中的鍵值對,key是鍵,d是提示資訊 |
| 7 | values() | 回傳字典中的值(類集合物件) |
案例:在字典中查找資料
d = {"name": "小黑"}
print(d.get("name2", "沒有查到"))
print(d.get("name"))
#運行結果為:
沒有查到
小黑
7.函式
函式這塊重頭戲更多的是自定義函式,常用的內置函式不是很多,主要有以下幾個:
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | 函式名.doc | 獲取函式的檔案內容 |
| 2 | help(函式名) | 查看函式檔案 |
| 3 | global 變數 | 宣告變數為全域變數(可用于任何地方) |
| 4 | nonlocal 變數 | 宣告的變數為全域變數(用于函式嵌套,變數存在于上一級函式) |
案例:在函式中定義一個區域變數,跳出函式仍能呼叫該變數
def fun1():
global b
b=100
print(b)
fun1()
print(b)
#運行結果為:
100
100
8.行程和執行緒
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | os.getpid() | 獲取當前行程的編號 |
| 2 | multiprocessing.current_process() | 獲取當前行程的名字 |
| 3 | os.getppid() | 獲取當前父行程的編號 |
| 4 | Thread(target=None,name=None,args=(),kwargs=None) | target:可執行目標,name:執行緒的名字默認Thread-N,args/kwargs:目標引數 |
| 5 | start() | 啟動子執行緒 |
| 6 | threading.current_thread() | 獲取當前行程的名字 |
案例:繼承Thread類實作
#多執行緒的創建
class MyThread(threading.Thread):
def __init__(self,name):
super().__init__()
self.name = name
def run(self):
#執行緒要做的事情
for i in range(5):
print(self.name)
time.sleep(0.2)
#實體化子執行緒
t1 = MyThread("涼涼")
t2 = MyThread("最親的人")
t1.start()
t2.start()
9.模塊與包
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | import 模塊名 | 匯入模塊 |
| 2 | from 模塊名 import 功能1, 功能2… | 匯入模塊特定功能 |
| 3 | from 模塊名 import * | 匯入模塊所有功能 |
| 4 | import 模塊名 as 別名 | 模塊定義別名 |
| 5 | from 模塊名 import 功能 as 別名 | 功能定義別名 |
| 6 | import 包名.模塊名.目標 | 包的匯入方式1 |
| 7 | import 包名.子包名.模塊名.目標 | 包的匯入方式2 |
| 8 | import 包名.模塊名 | 包的使用形式1 |
| 9 | import 包名.模塊名 as 別名 | 包的使用形式2 |
| 10 | from 包名.模塊名 import 功能 | 包的使用形式3 |
| 11 | from 包名 import 模塊名 | 包的使用形式4 |
| 12 | from 包名.模塊名 import * | 包的使用形式5 |
案例:包的使用方式4
from my_package1 import my_module3
print(my_module3.a)
my_module3.fun4()
10.檔案操作
(1)常規檔案操作
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | open(name,mode) | 用于打開一個檔案,回傳一個檔案物件 name:檔案名,–寫全(檔案路徑+檔案名+后綴) mode:打開檔案的方式,默認是r–只讀 |
| 2 | write(“xxx”) | 向檔案中寫入內容 |
| 3 | read() | 讀取檔案中的內容 |
| 4 | close() | 關閉檔案 |
關于檔案操作的常規模式:
| 模式 | 描述 |
|---|---|
| r | 以只讀的形式打開檔案,檔案的指標在開頭 |
| r+ | 讀寫,檔案指標在開頭 |
| rb | 以二進制的形式只讀檔案指標在開頭 |
| w | 只寫,檔案不存在,則創建新的,存在則覆寫,指標在開頭 |
| w+ | 讀寫,檔案不存在,則創建新的,存在則覆寫,指標在開頭 |
| wb | 只寫,以二進制的形式 |
| a | 追加模式,檔案指標在結尾 |
| a+ | 讀寫,不存在則創建,存在直接追加 |
| ab | 以二進制形式追加 |
file的物件屬性
| 序號 | 方法 | 說明 |
|---|---|---|
| 1 | closed | 如果檔案物件已關閉,回傳True,否則回傳False |
| 2 | mode | 回傳檔案物件的訪問模式 |
| 3 | name | 回傳檔案的名稱 |
file物件的方法
| 序號 | 函式 | 方法 |
|---|---|---|
| 1 | close() | 關閉檔案 |
| 2 | read([count]) | 讀取檔案中的內容,count:位元組數量 |
| 3 | readlines() | 讀取所有內容,打包成串列 |
| 4 | readline() | 讀取一行資料,追加讀取,讀取過得不能再次讀取 |
| 5 | seek(offset,[from]) | 修改指標的位置:從from位置移動了offset個位元組 from:0-從起始位置,1-從當前位置開始,2-從末尾開始 soofset:要移動的位元組數 |
| 6 | write() | 向檔案中寫入內容 |
(2)OS模塊
-
關于檔案的功能
序號 方法 說明 1 os.rename(原檔案名,新的檔案名) 檔案重命名 2 os.remove(檔案名) 洗掉檔案 -
關于檔案夾的功能
序號 函式 說明 1 mkdir(檔案夾名字) 創建檔案夾 2 rmdir(檔案夾名字) 洗掉檔案夾 3 getcwd() 獲取當前目錄 4 chdir(目錄) 切換目錄 5 listdir() 獲取當前檔案夾下所有檔案或檔案夾,回傳一個串列
listdir(‘aa’) #獲取aa檔案下所有檔案或檔案夾,回傳一個串列
11.修飾器/裝飾器
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | property | 將方法變為屬性,被修飾的方法名必須和property下方的方法名一樣 |
| 2 | staticmethod | 靜態方法,將被修飾的方法從類中抽離出來,該函式不能訪問類的屬性 |
| 3 | classmethod | 與實體方法的區別是接收的第一個引數不是self,而是cls(當前類的具體型別) 被修飾的方法無法訪問實體屬性,但是可以訪問類屬性 |
案例:classmethod的用法舉例
class B:
age = 10
def __init__(self,name):
self.name = name
@classmethod
def eat(cls): #普通函式
print(cls.age)
def sleep(self):
print(self)
b = B("小賤人")
b.eat()
#運行結果為:10
12.正則
| 序號 | 函式 | 說明 |
|---|---|---|
| 1 | re.compile(正則運算式) | 編譯正則 |
| 2 | match() | 決定re是否在字串剛開始的位置(匹配行首) |
| 3 | search() | 掃描字串,找到這個re匹配的位置(僅僅是第一個查到的) |
| 4 | findall() | 找到re匹配的所有字串,回傳一個串列 |
| 5 | group() | 回傳re匹配的字串 |
| 6 | start() | 回傳匹配開始的位置 |
| 7 | end() | 回傳匹配結束的位置 |
| 8 | span() | 回傳一個元組:(開始,結束)的位置 |
| 9 | findall() | 根據正則運算式回傳匹配到的所有字串 |
| 10 | sub(正則,新字串,原字串) | 替換字串 |
| 11 | subn(正則,新字串,原字串) | 替換字串,并回傳替換的次數 |
| 12 | split() | 分割字串 |
案例:用split()函式分割一個字串并轉換成串列
import re
s = "abcabcacc"
l = re.split("b",s)
print(l)
#運行結果為:['a', 'ca', 'cacc']
文章中所講的所有函式我都已經將它們整理成圖片,有6張,需要的話可以私聊我,我就不再這里重復贅述來增加文章的篇幅了,內容都是一樣的,你們也可以自己去整理屬于自己的函式筆記,在我們沒有網或者收藏夾東西很多的時候,只要有手機,那么我們就可以無障礙進行查閱,非常地便利,

結語
這篇文章的目的,不是為了教大家怎么使用函式,而是為了快速、便捷地記住常用的函式名,所以沒有把每個函式的用法都給大家舉例,你只有記住了函式名字和它的作用之后,你才會有頭緒,至于函式的用法,百度一下就出來,用了幾次你就會了,
如果連函式名和它的用途都不知道,你要花的時間和精力就更多了,必然不如我們帶著目的性地去查資料會更快些,
不禁想起了2010年那會兒Python成為年度最受歡迎語言,自己開始學Python(我之前主用的是Java),光是函式就記了幾十頁的本子,上下班都是隨身帶著,有空就拿出來快速過一遍,后來有一次下班之后和同事吃夜宵喝了點酒,從地下談到天上,結果包都不見了,本子也丟了,第二天把我后悔的…只能重新寫一本,
說句實話,Python挺好玩的,頭也沒有那么冷了,

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/292187.html
標籤:python
下一篇:行程快取和快取服務,如何抉擇?
