最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

python筆記 (學(xué)習(xí)系列第二篇筆記 這篇會比較長)

2023-09-07 16:23 作者:是瀧瀧喲  | 我要投稿

建議初學(xué)者到本站其他up那安裝好環(huán)境 開心的學(xué)下去 希望我的筆記會對你有用

Python

單純的學(xué)好一門語言并不能讓你有太多的成長 你要清楚 我先要做什么事 什么語言最適合 提出問題 選好語言 讓語言去協(xié)助你完成你想完成的事 大型的比賽 能讓你對語言的理解更上一層 給自己壓力吧 面向于一門語言 它最深奧的那種壓力 能夠繼續(xù)自己所愛的事 所獲的不僅只有[快樂]而已 永不放棄+發(fā)掘自己 發(fā)掘你的才能并且利用它 成家立業(yè) ——> 你可以到過來讀 始終不渝地去堅持學(xué)習(xí) 耐心是生活的關(guān)鍵,你知道的,一步一個腳印 逐漸實現(xiàn)自己的目標(biāo),你知道的 那些讓你痛苦地 要迎難而上 去他媽的 干就完了 # python 的數(shù)據(jù)類型 以及一個判斷函數(shù)的 print("Hello World!") ? age = 30 name = "瀧瀧" money = 99999 print(name,age,money) # 全部寫一行 它會統(tǒng)一的輸出 當(dāng)然是一行??????????????????????????????????????????????????????????????????????????????????????? print(name,end="\t") # print 你要是不修改 end后面的東西 它默認(rèn)是\n 就是換行符 你要是修改了 end 改成了\t 或者就簡單的幾個空格 結(jié)果就截然不同了 print(money) ? a = (1,2,3,4) #?a[0] = 5?定義了后再改變 就會出錯 # 元組的定義 一旦定義了初始的值 其值就不會發(fā)生改變了 print(a) # 輸出結(jié)果 (1,2,3,4) ? p = {3,3,45,5,5,51,2,1,1} print(p) # 集合類型 自動刪除重復(fù)的數(shù)據(jù) 集合類型就是吊 ? b= [1,2,3,4] b[0] = 4 print(b) ? print(type(b)) dict= {'name':"張三",'age':13,'addre ss':"北京市朝陽區(qū)"} print(dict) ? d = 'Hello World!' print(isinstance(d,str)) #isinstance 是一個判斷函數(shù) 判斷是否為某種類型 返回結(jié)果true 或者false ? #python的運算符 以及分支語句 還有 random庫 #格式化輸出 name = "瀧瀧" age = 19 address = "你心里" ? print("我的名字是%s,我今年%d歲了,我在%s"%(name,age,address)) # 有c語言中的%06d 這種的 也有%.2f 或者其它的一系列 填充的東西 ? ? # format 方法輸出 print(f'我的名字是{name},我?guī)啄陒age}歲了,我在{address}') ? # 輸入方法 number=int(input("請輸入一個數(shù)字:")) print(f'你輸入的數(shù)字為:{number}')?# 這里稍微解釋下 如何像上面的格式化輸出一樣?s是 一個浮點數(shù)據(jù) {s:.2f} 就能把結(jié)果以小數(shù)點兩位的形式輸出出來 #python 支持賦值運算符 # python 中的邏輯運算符 或者語句 也要遵守短路運算符 ? # python中可以定義外部函數(shù) 可以帶到隨機(jī)的效果? import random random.randint(0,2) # 產(chǎn)生0-2之間的隨機(jī)數(shù)?這個可以用于與用戶進(jìn)行猜拳 讓電腦輸出隨機(jī)數(shù)? ? #python中的三目運算符 num1 = 1 num2 = 2 max =?num1 if num1>num2 else num2?#解釋一下 相當(dāng)于就是if else 把真值放在前面 為假的放在后面 不要跟C語言的三目運算符混淆 ? max =?1 if 1>2 else 2 print(max) # for 循環(huán)的不同之處 # for i in range(0,101): in 后面可以是不一樣的東西 比如數(shù)組 比如在字典 比如~~~~~~~ 寫法就大不相同了 不要被語言限制了頭腦 要敢于思考 # break?和 continue 之間的區(qū)別 一個直接退出for循環(huán)跳到下一次的循環(huán) # while和else 的綜合應(yīng)用 i =?0 while i<10 : ??print(i) ??i+=1 else : ??print("程序正常結(jié)束,這次題例用于測試是否正常結(jié)束后返回else語句后面的值") # 輸出0-9 輸出完畢之后正常返回else后面的值 # 這個可以用于檢測一些情況是否合法輸出完整 后面的else后面的語句也不用是一個固定的輸出 也可以是賦值 有奇效? # 用上 continue else語句內(nèi)容還是照樣會出現(xiàn) 要是有break語句的話 else后面的語句就不會輸出 因為不是正常結(jié)束 、 ? ? #王八庫 (就是烏龜庫 叫i這個名字比較喜感) # import turtle # 專門用來繪制圖形圖像的 # import time # 讓計算機(jī)休眠的 這樣計算機(jī)就有時間去 畫圖 # turtle.forward(100)?#畫橫線 # time.sleep(12)??# 讓計算機(jī)休眠 中間不能做其他任何的操作 ? # import turtle # import time ? # for i in range (5): #??turtle.pencolor("red") # 用于設(shè)置畫筆的顏色 #??turtle.forward(200) #??turtle.right(144) # 讓線條的方向發(fā)生偏轉(zhuǎn) #??# 這一個整體 能夠畫出五角心 ? ? # len 計算最大索引下標(biāo) # 截取操作 變量名稱[起始位置]?可以是?起始位置 結(jié)束位置 步長為多少 這樣就可以配合某種條件方法進(jìn)行判斷一類的活? # 只有冒號的話 相當(dāng)于復(fù)制操作 這種的也可以弄成反向移動?就是 [-4:-1:-1]?就可以實現(xiàn)從后面開始 往前面截取 ? ? ? # 字符串.find(你要查找的子串的位置 可以說是下標(biāo) ) 找到 返回下標(biāo) 沒有找到直接返回 -1 ? # index 跟上面的差不多 但是假如沒有找到的話 會直接報錯?跟上面的對比的話 在報錯層面返回的不一樣 ? ? ? # 如何截取文件的名稱 或者文件后綴名 filername =?input("請輸入你要上傳的文件的名稱:")?# 流程化設(shè)計 1 第一步我要輸入我想要的文件 包括后綴 index = filername.find('.')????# 用 find 將關(guān)鍵下標(biāo)給計算出來 print("你的文件名稱為:",filername[:index])?# 可以利用截取 或者可以說切片的操作 將你想要的文件名 或者其后綴給截取下來 print("你的文件后綴名為:",filername[index:])?# +1 的話 就不是.txt的后綴了 ? ? # 字符串各種函數(shù)的應(yīng)用 str1 =?'Hello World' str2 = str1.replace("Hello","longlong") # 假如說有兩個Hello 你可以在后面定義其個數(shù) print(str2) ? #簡單來說 就是替換 再重新賦值 ? #split 簡單來說就是按某種標(biāo)識來切割 比如 longlong-wuzhi-19-2003 可以用’-‘ 來切割 #join 可以把散開的列表用-來拼合起來 這一點跟php里面的那兩個函數(shù)有點像 這個都是針對列表的 可以說很有作用的東西 # 簡單帶一下另外兩個函數(shù) upper與lower方法 一個全部轉(zhuǎn)換成大寫 一個全部轉(zhuǎn)換成小寫 #簡單提一些上面的兩個函數(shù) 在用戶進(jìn)行密碼登記的時候 可以可以把用戶輸入的數(shù)據(jù)進(jìn)行轉(zhuǎn)換 這樣就不用擔(dān)心 用戶因為大小寫問題出錯 ? #startswith 檢查字符串是否以什么什么字符開頭 其實作用是用于檢查 避免出錯】 #endswith 檢查字符串是否以指定的字符來結(jié)尾 跟上面的一樣 對返回true 錯就返回false ? # 字符串的相加 具體操作是隨機(jī)數(shù) import random mystr = "qwertyuiopasdfghjklzxcvbnm1234567890" code = "" #空字符串用于后面縫合上去隨機(jī)數(shù) #for i in range(4): #?index=random.randint(0,len(mystr)-1) ?# code+=mystr[index] #print(f"你要輸入的4位隨機(jī)數(shù)是:{code}") ? #到目前為止 隨機(jī)數(shù)搞定 其中涉及到字符的相加 隨機(jī)函數(shù)的使用 len函數(shù)的使用?要是題目說隨機(jī)一個數(shù)把它 前兩位數(shù) 和 后兩位數(shù)組合成一個隨機(jī)數(shù) 可以讓給index保存其下標(biāo) # 使用字符串你截取對這個大的字符串進(jìn)行切割 最后再拼接起來 ? index= random.randint(0,len(mystr)-1) print(index) code+=mystr[index-2:index]??#記住這里要寫:而不是, 而且這種截取 左閉合右半開 所以要對下標(biāo)進(jìn)行修飾 code+=mystr[index+1:index+3] print(f"你要輸入的4位隨機(jī)數(shù)是:{code}") name_list=['Jerry','Tom','LongLong'] # 可以用下標(biāo)對每個元素進(jìn)行編號 列表在計算機(jī)內(nèi)存中的存儲結(jié)構(gòu)與字符串類似 都是占用一段來連續(xù)的內(nèi)存地址 簡單來說就是和字符串是同母異父的兄弟 print(name_list) for i in name_list : ??print(i)?# 這里面不能寫成字符串形式的那種 左邊這種循環(huán)相當(dāng)于name_list中的每一個元素給到了變量i 讓這個變量i來存儲每次循環(huán)的值 ??#列表中有多少個元素,則for循環(huán)就會自動的循環(huán)多少次 ?? # 在字符串中查找元素 用列表來舉例 # fruit_list = ['apple','banana','pear'] # 其中的pear的這種是一個整體 你不能像查找字符串一樣 就簡單輸入一個字符 大哥你把所有的都輸入進(jìn)去可以嗎 # print(fruit_list.index('pear'))?# 里面的這個pear這個一定要寫完整 這個就跟身子缺了一半一樣的 你特么一個殘缺的身體 你怎么做一個完整的事 你說對不對 ? people_list = ['劉備','劉備','關(guān)羽','張飛','曹操','張三']?# 少了啥都不能少了曹操和張三 print("劉備出現(xiàn)的次數(shù)為:",people_list.count("劉備"))?# 這個前綴一定要寫完 不然你都不知道哪個是哪個的 ? # in 和 not in 方法?判斷指定數(shù)據(jù)在不在列表中?注意這里是 “判斷” 既然牽扯到判斷這一類的東西就會牽扯到 真假值 這個也可以用到字典里? # 簡單來說就是可以配合著if 來判斷類似于字典 列表這一類的有沒有重復(fù)的值?還是很有必要的 要理解清楚if 和 in 組合使用的奇妙之處 然后就沒有然后了 # 比如 if people_list in 數(shù)據(jù)列表中?就可以查找你想要的結(jié)果是否在數(shù)據(jù)列表中 直接一手驚不驚喜意不意外 爽就完事了 ? print("以下操作進(jìn)行是添加數(shù)據(jù)") #在列表中追加數(shù)據(jù) people_list.append("瀧瀧")??# 直接在后面追加就可以 print(people_list) ? # 使用extend把兩個列表進(jìn)行合并操作 list1 = ["羅翔","夢夢"] people_list.extend(list1)?# 如果要添加的數(shù)據(jù)是一個列表的話 這些數(shù)據(jù)它會逐一添加 print([people_list]) ? # 特殊的情況 假如插入的是一個字符串 # 估計就是專門給列表準(zhǔn)備的 適合處理一些序列的數(shù)據(jù) 要是字符的話 它也會看作是序列的數(shù)據(jù) # 比如 ”python“ 它假如插入進(jìn)去就是逐一添加”p“ ”y“ ~~~~ 就是很麻煩 所以最好不要對字符串進(jìn)行這樣的操作 出來問題別找我 ? # 在指定的位置插入數(shù)據(jù) long_list = ['瀧瀧','夢夢'] long_list.insert(1,"瀧寶") long_list.insert(2,"夢寶") print(long_list) ? print("以下操作是刪除數(shù)據(jù)") #刪除列表中的某個元素? name_list = ['Tom','Jerry','longlong'] del name_list[2]?#del 函數(shù) 后面跟上列表索引下標(biāo)就行 print(name_list) ? list1 = ['呂布','貂蟬','大喬'] # list1.pop()?pop函數(shù)默認(rèn)會刪除列表中的最后一個元素 也可以配合數(shù)字索引下標(biāo) ? #remove 你如果知道要刪除元素的值 你可以通過刪除“瀧瀧”這種值的元素直接刪除 ? #清空列表 name_list.clear()?#清空所有元素的值 返回一個空列表 ? print("以下操作是修改數(shù)據(jù)") ? #第一種 你可以通過 列表[索引] = 修改后的值 ? #reverse?可以對列表中的數(shù)據(jù)進(jìn)行倒敘排序 簡單來說就是 瀧瀧 夢夢 張三?最后通過函數(shù)的改變 直接變成了 張三 夢夢 瀧瀧 #也可以用其它的操作來改變列表中元素的排列?print(list1[::-1]) ? #使用sort函數(shù)對數(shù)據(jù)進(jìn)行排序(針對數(shù)值居多) #sort 從小到大?sort(reverse=True) 從小到大 ? ? #列表的嵌套 biglsit = [['瀧瀧','夢夢'],['張三','羅翔'],['瀧寶','夢寶']] print(biglsit[2][1],"kiss kiss")?#里三層外三層 邏輯來理清楚 #元組 #存儲只有一個元素的元組 t1 = (1,)?# 記住這里一定要用括號括起來 這是元組的標(biāo)識 單個元素后面也要跟上一個 ',' 這樣計算機(jī)就不會認(rèn)偏 #多元素的元組照著打就行?元組內(nèi)的數(shù)據(jù)一旦定義就不能修改? #元組中的數(shù)據(jù)也可以通過使用count len 一些操作來對其中的數(shù)據(jù)進(jìn)行使用? ? #元組內(nèi)的數(shù)據(jù)直接修改會出錯 但是元組中要是有列表的元素 那你就可以對列表中的元素進(jìn)行修改 (記住這個是列表中元素 而不是列表本身) ? # 比如(10,20,['aa','bb','cc'],50,30) ? # 你可以 tuple2[2][0]='qqqq' 這樣都可以 絕對不會報錯 不能直接修改元組內(nèi)的數(shù)據(jù) 但是有些特性 可以修改 ? # 比較重要的一個章節(jié) 字典 ? # 為什么需要字典 這就跟PHP中的name=>Jerry 一樣的 比較適合鍵值對形式對數(shù)據(jù)進(jìn)行存儲 ? #字典的實際使用?索引可以是字符串類型的也可以是數(shù)值類型的 ? #有數(shù)據(jù)的字典 dict1 = {'name':"Tom",'age':'20','sex':'男'} #空字典 dict2 = {} ? dict3 = dict()?#這兩種都可以創(chuàng)建空字典? ? #字典的增加操作 字典中key的值是唯一的 不能重復(fù) person = {} person['name']="趙云" person["age"]=19 print(person) person["name"]="瀧瀧" print(person) ? str_dict={} str1 = 'aassddeewwwffffooossss' for i in str1 :?#使用遍歷字符串中的元素? ??if i in str_dict :??#找一下這個元素是否在字典中 ????str_dict[i]+=1??#在的話就+=1 就是記錄個數(shù) ??else : ????str_dict[i]=1???#沒有的話就賦初值 記住一定要是1 否則你的元素的個數(shù)每個都會少個數(shù)字 print(str_dict) ? #字典的操作 [key] = value #字典中沒有這個key表示的就是新增操作 #字典中存在這個key表示的就是更新操作 很好理解 也是比較實用的 ? # 字典的刪除操作 其實跟列表差不多 del person['gender'] 就可以?因為字典是鍵值對形式的 所以索引能包容字符這種的 不像列表一樣 只能使用數(shù)字索引下標(biāo) # person['address'] = '東土大唐'?這樣就可以該改變其中的值 ? ? #字典的查找操作 cat = {'name':"Tom",'age':5,'address':"美國紐約"} name = cat.get("name","你要查詢的key不存在") # 使用get 可以獲取字典中某個key的value值?get有第二個參數(shù) 可以自己輸入未查找到返回值? print("cat的名字是:",name) ? ? #使用keys獲取字典中所有的key print("cat的所有key的值為:",cat.keys()) ? #values() 獲取所有的value值并返回一個列表 ? ? #items 元組和列表的配合 [(),(),()] 最外面是個列表 不過里面的每個都是元組 for key,value in cat.items() :??#返回的是鍵值對形式的值 ??print(f"{key}:{value}") ??#相當(dāng)于php數(shù)組中的元素 $a as $b 不過python中的有帶奇葩 相較于php來說 python是反著來的 完全不按套路出牌 #技巧 pass 執(zhí)行到有pass的語句的時候直接跳過 ? ? #append 在列表的后面追加數(shù)據(jù) ? #學(xué)生管理系統(tǒng) import time students = [{"name":"Tom","age":5,"address":"NewYork"},{"name":"Jerry","age":3,"address":"NewYork"}] while True: ??print() ??print("*"*25) ??print("你好這是瀧瀧的學(xué)生管理系統(tǒng):") ??print() ??print("[1]添加學(xué)生信息") ??print("[2]刪除學(xué)生的信息") ??print("[3]查詢所有學(xué)生的信息") ??print("[5]退出系統(tǒng)") ??print("*"*25) ??print() ??operation = int(input("請輸入你要操作的,瀧瀧將會幫你:")) ??if operation == 1 : ????student = {} ????name=input("請輸入學(xué)生姓名:") ????age=input("請輸入學(xué)生的年齡:") ????address=input("請輸入學(xué)生的家庭住址:") ????student["name"]=name?? ????student["age"]=age ????student["address"]=address?? ????students.append(student) ????print("你好,瀧瀧已經(jīng)幫你添加完畢!") ????continue ??elif operation == 2 : ????name=input("請輸入要刪除的學(xué)生的名字:") ????for name in students : ??????students.remove(name) ??????print("刪除完畢!") ??????break ????else : ??????print("不好意思沒有找到該學(xué)生的信息") ????continue ??elif operation == 3 : ????for i in students : ??????print(i) ????else : ??????print("所有學(xué)生的信息輸出完畢!") ????continue ??elif ( operation!=1 and operation!=2 and operation!=3 ) or operation == 5 : ????print("本系統(tǒng)檢測到你輸入了錯誤的操作,或者輸入了[5]退出系統(tǒng),將在5秒后退出系統(tǒng)!") ????time.sleep(5) ????break ?? print("*"*25) print("歡迎下次再找瀧瀧來幫忙,瀧瀧這里每時每刻都?xì)g迎你,嘿嘿!") print("*"*25) ? ? # 其實還可以升級 我太懶了 懶得寫 嘿嘿 # 集合 : 集合和字典的括號是一樣的 { }?但是需要注意的是集合是 {1,2,3,4,5,6} 這樣一類的形式?字典是{"name":"瀧瀧"} 這樣一類 于是乎在某種情況下 不能隨定義空集合 ? # 我們可以使用函數(shù)去完成這一操作 # 創(chuàng)造集合使用 {} 但是不能這樣直接的定義空集合 我們一般用到 set() 這個是專門用于空集合定義的 因為{} 是用來創(chuàng)建空字典的 set1 = {10,20,30,40,50,20,30,20} print(set1,end="\t")?#集合天生去重而且輸出無序 print() ? #集合的增加操作 ? #集合中添加單一元素 add set2 = set() #可以這樣定義空集合 set2.add("張三") print(set2) ? #集合中添加序列類型的數(shù)據(jù)(比如說 字符串 列表 元組 字典) update ? student = set() list2 = ['瀧瀧','夢夢','瀧寶','夢寶'] student.update(list2)? print(student) ? #注意這里字符串的添加還是用add比較好原因嘛 很簡單 因為它增加的是單一元素 如果用update傳輸字符串類型的話 字符串中的每一個單一的字符會被分開逐一添加到數(shù)據(jù)的后面 ? #集合的刪除操作 # 首先登場的是我們的老朋友 remove 不多解釋 #discard 刪除集合中的指定數(shù)據(jù) 如果數(shù)據(jù)不存在也不會報錯 簡稱懶得一批 上面的老朋友都會報錯 這個一聲不吭 真他媽現(xiàn)實 # pop 懶散之王 使用pop方法是隨機(jī)刪除某個元素?刪除什么不知道 刪他媽的就完事了 print("集合中的交集,并集,差集") #具體的實例大概可以這么說 比如說 qq群里面 你和誰誰誰有幾個共同好友 基本上這就是集合中 交集在語言的運用 ? st1 = {"小紅","小明","小強(qiáng)",} st2 = {"小剛","小明","小夏"} print("交集為:",st1 & st2) print("并集為:",st1 | st2) print("差集為:",st1 - st2) ? #重點強(qiáng)調(diào)下差集的不同 哪個在前面 就會把后者沒有的給輸出出來 經(jīng)此而已 無所吊謂 # python中的奇葩方法 enumerate 簡單來說就是把字符串、列表、元組轉(zhuǎn)換成key:value的鍵值對結(jié)構(gòu) list1 = [10,20,30,40,50] for key,value in enumerate(list1) : ??print(f"{key}:{value}") #這個鍵值對形式還是蠻厲害的? #items 元組和列表的配合 [(),(),()] 最外面是個列表 不過里面的每個都是元組?items也可以達(dá)到類似的效果?? ? #推導(dǎo)式 比較牛逼的寫法 list1 = [i for i in range(10)]?#for 前面的i 是每次需要返回的值 list2 = [i for i in range(10) if i%2==0]??#最前面的是返回的值 print(list2) list3 = [(i,j) for i in range(1,3) for j in range(0,3)] print(list3) # 總結(jié) 這種[結(jié)果 + 推導(dǎo)結(jié)果] 輸出的是結(jié)果 推導(dǎo)結(jié)果前面是什么樣的 最后就會是什么樣的結(jié)果 ? #字典推導(dǎo)式 #把兩個序列合并在一起 [key:value + 推導(dǎo)過程] #list1 = ["name","age","gender"] #list2 = ["Tom",20,:male] #person ={list1[i]:list2[i] for i in range(3)} 最后輸出 person的結(jié)果即可 ? #提取字典中的目標(biāo)數(shù)據(jù) counts = {'BMP':286,"HP":125,"DELL":201,"Lenovo":199,"ACER":99} counts = {key:value for key,value in counts.items() if value>200}?#用到了上面的讀取函數(shù) 把所有讀取到的數(shù)據(jù)轉(zhuǎn)換成鍵值對的形式 print(counts) #python函數(shù)的使用 # 基本上是 跟C語言差不多 只是換了個頭?def 函數(shù)() 大致是這個邏輯 函數(shù)中可以傳參 可以干一些事 對于集成化很有幫助? #return 返回值 ? #重點 在python中函數(shù)需要先定義再使用 ? def return_num(): ??return (1,2)?#python 函數(shù)理論上只能返回一個值 但是我們可以借助元組同時返回多個結(jié)果 當(dāng)然你輸出出來也是元組 也不能返回兩個return 不過你可以把這些在一排返回回來 ? #如果一個函數(shù)沒有返回值 那這個函數(shù) 會默認(rèn)返回一個 None 就是本來事要返回一個值 return 返回的 可是 它沒有return 轉(zhuǎn)而輸出了一個print 語句 ? ? #函數(shù)內(nèi)部可以用 三引號的形式 類似于 Java中的 /**?可以使用這個來描述注解 def max_num(num1,num2,num3): ??""" ?max_nummax_num: 這個函數(shù)主要用于求出三個數(shù)的最大值 ???num1 (_type_): 數(shù)字1 ???num2 (_type_): 數(shù)字2 ???num3 (_type_): 數(shù)字3 ?""" ??list_ = [num1,num2,num3] ??return max(list_) max_num=max_num(1,2,3) print(max_num) ? ? # python中全局變量的聲明 可以嘗試在函數(shù)中使用 global 將函數(shù)中的局部變量 聲明成 全局變量 ? ? # 關(guān)鍵字參數(shù)(python 中特有)? ? def user_info(name,age,address): ??print(f"我的名字{name},今年{age}歲了,家在{address}") ?? user_info(name="Tom",age=23,address="美國紐約") # 原來直接傳參數(shù) 要形參和實參一一對應(yīng) 一個個都不能打亂 # 把這種值放在變量內(nèi)這種的形式你就可以隨便傳遞實參 反正都是變量 讓他們自己去找就行了 ? #可以在形參的位置設(shè)置一個默認(rèn)值 要i是沒有傳遞這個參數(shù)就是默認(rèn)值 要是傳遞了這個參數(shù)就是實參的值 ? #傳參數(shù) 懶惰寫法? # def user_info(*args) :?#?*號后面的名字可以隨意改動?這個帶星號的 可以無限接受參數(shù) 就是能接受很多個參數(shù) 沒有你想不到只有它傳不到? ??# print()? ?? # def user_info(**args) : #?兩個星號接受的是字典類型的類型的值 鍵值對形式的值 ? ? ? # 偷懶參數(shù) def func(*args,**kwargs) : #???????print(args) #???????print(kwargs) #func(10,20,30,num1=40,num2=50) #可以一次性混合傳遞?既能接受元組類型的數(shù)據(jù),也可以接受字典類型的數(shù)據(jù) #就是可以混合的傳遞參數(shù) 你想咋傳就咋傳 ? ? #也可以先定義再傳遞值 也就是 dict=[1,2,3] # fun(*dict) 這樣的也是可以的? ? ? # a,b =(b,a) 括號可寫可不寫 右邊的值也可以是一個列表或者說字典 ? ? #重點 字典的拆包會不同 #字典拆包 # dict1 = ["name":"小明","age":18] # a,b=dict1 這樣讀取輸出 print(a) 只會輸出鍵值對形式的 想要獲取value的值 你要print(dict1[a]) 才能讀取到字典中的value值 ? # pass 簡單來說 就是傷害面板的python # python 基礎(chǔ)加強(qiáng) list1 = []?#先定義一個空列表 for i in range(5):?#循環(huán)5次 因為是個二維列表 ??list2 = [] # 定義另一個空列表 ??for j in range(5): # 循環(huán)5次因為每個列表中有5個元素 ????list2.append(i*j)?#依次往后追加元素 ??list1.append(list2)?#將一個列表當(dāng)成元素追加到另外一個列表中 print(list1)?#最后輸出列表 ? #推導(dǎo)式寫法 list1 = [[i*j for j in range(5)] for i in range(5)] ? ? # 將列表中每個元素的都增加100 list3 = [1,2,3,4,5,6,7,8,9] list4 = [] for h in list3 : ??list4.append(h+100) print(list4) ? #推導(dǎo)式寫法 # list3 = [1,2,3,4,5,6,7,8,9] # list4 = [h+100 for h in list3] #print(list4) ? list5 = ['A','B','C'] list6 = ['X','Y','Z'] list7 = [] for t in list5 : ??for k in list6 : ????list7.append(t+k) print(list7) ? # 推導(dǎo)式寫法? # list5 = ['A','B','C'] # list6 = ['X','Y','Z'] # list7 = [t+k for t in list5 for k in list6]?測試 完美實現(xiàn) ? ? # 你想在程序中 輸出50% 想輸出后面的% 號 ? ? # 重點 在字典中 key如果是數(shù)字類型?你比如說前面的是1?后面的是1.0 他們在字典中就是同一個key 千萬不要這么寫 數(shù)據(jù)的值會被改變的 ? ? # id?print(id(a)) 顯示內(nèi)存地址?a = 10 b=a?這時候a b 指向的是同一個地址?要是這時候 a = 100 此時a 和 b 共有的地址 a 原來的就會直接賦予給 b 簡單來說就是a原來的東西 直接送給b了 # 相當(dāng)于a和b 兩人一起籌錢買了個手機(jī) 后面a 又得到了100塊 剛好夠買一部新的手機(jī) a就說 原來的手機(jī)(地址)送你了 我去用新手機(jī)(新地址)去了 簡單粗暴的理解 ? ? #可變類型與非可變類型解釋 # 簡單來說就是 a = [1,2,3] 然后你a[2]=4 一旦定義之后 只要你不增加或者減少它的長度一般來說就是原來的地址 要是你一旦改了它的長度 它就不是原來的東西了 ? #通俗的講的話就是 你們學(xué)校的督導(dǎo)來檢查你班級的學(xué)生人數(shù) 你們班是45人 你督導(dǎo)查人肯定是看人數(shù)夠不夠 誰會看你里面都是什么人 只要人數(shù)是齊的就行 這是前者“可變類型”?、 #”非可變類型“就是 你督導(dǎo)過來差人了 發(fā)現(xiàn)人數(shù)多了 它就會認(rèn)為你是一個新的班級 要給你打上個新的標(biāo)簽(地址) 所以一一旦定義之后 你該內(nèi)部的值 不會改變其值(地址) 但是一但讓兩人同時使用一個名字(地址) 或者添加長度 或者刪除長度 它就不是原來的它了所以地址會發(fā)生改變 ? ? # lambda 表達(dá)式 # 定義匿名函數(shù) # 函數(shù)名(變量名) = lambda 參數(shù)(可能很多) : 表達(dá)式(返回的啥) fn1 = lambda a,b,c=100 : a+b+c?#可以有默認(rèn)值、 # 可以不定長傳參 也可以定長傳參 print(fn1(10,20)) print(fn1(10,20,30)) # 三目運算符 很簡單 if 和else 為真則前面 為假則后面 fn2 = lambda a,b : a if a>b else b print(fn2(12,7)) ? # 字典排序? #students.sort(key=lambda x :x['name'] reverse=True) sort 簡單來說就是將列表中的三個字典通過遍歷的方式取出 # x 就是每個字典 key = kambda x 這句話是讀取鍵值 :x["name"] 后面這個才是真正排序的條件 # reverse=True 降序排序 要是不寫默認(rèn)就是升序排序 ? ? # 文件的基本操作 三步驟 1.打開文件 2.讀寫文件 3.關(guān)閉文件 第二步看情況 你可以不讀寫文件都行 ? #open() 打開函數(shù) #open(name,mode) 前者文件名 后者權(quán)限 # 只讀權(quán)限 "r" readonly # 寫入權(quán)限 "w" write(只寫權(quán)限)? # 追加權(quán)限 "a" append 代表在文件的尾部追加內(nèi)容 ? # w 和 a :如果文件不存在就創(chuàng)建文件 ###如果文件存在 w就是先清空再寫入 a,是直接在末尾追加 ? # 打開文件 f = open("Python.txt","r",encoding="utf-8")?# 你可以訪問文件 不過你只有讀取的權(quán)限 ?????????????#代表以utf-8的編碼格式讀取文件 # 文件寫入 # f.write("Hello world") content = f.read() #括號里面的參數(shù)可以寫成 讀取數(shù)據(jù)的長度?把文件里面的內(nèi)容給到content 這個變量 #關(guān)閉文件 print(content)?#打印文件內(nèi)容? f.close()?#關(guān)閉文件 ? # readlines()方法? ? ? ? # 文件路徑 1.絕對路徑 2.相對路徑 # 絕對路徑 : C:\Python\python.txt?弊端:一旦固定了 文件不能隨時移動 遷移會比較麻煩 # 相對路徑 不用從盤符開始 參考對象是當(dāng)前文件 所以你直接創(chuàng)建python.txt 會在同級看到 ? ? # mode 就是文件的讀取權(quán)限? # 簡單的說一下 r 只讀權(quán)限?但是r+ 會不一樣 會有 讀寫的權(quán)限 + 就是賦予讀取的權(quán)限 # f.write("Hello world")?文件寫入就用它就行 ? # f.readline() 讀取文件的第一行 然后會把指針向下移動 全部輸出 這個很重要 可以讀取excel 或者word 或者記事本類型的文檔 # 還是蠻好玩的 創(chuàng)造性很高?但要學(xué)會合理的使用? # 結(jié)合 for i in f.readlines() print(i) 就可以把每行的內(nèi)容獨行顯示出來 ? ? # 移動光標(biāo) f.seek(offset[開始的偏移量 就是從什么位置開始讀],whence[表示從哪個位置開始 0是從頭開始 1代表從當(dāng)前位置開始]) # 看的話先看后面 在文件開頭和文件中間的位置 偏移量就是當(dāng)前位置向后偏移 但是你的文件假如是從末尾開始 它就是向前偏移 ? # 文件備份 #while True : #?content = old_f.read(1024) 讀取的大小 一次讀取太多文件計算機(jī)容易卡死 #?if len(content) == 0: 當(dāng)讀取的為空時 就是文件讀完了 #???break? #?new_f.write(content) #寫入操作 #記得最后把兩個文件都給關(guān)了 占用內(nèi)存 #old_f.close() #new_f.close() # 文件和文件夾操作 ? # os模塊 # os.函數(shù)名() # os.rename(你現(xiàn)在文件的文件名,新的文件名) # os.remove(你要刪除的文件名) ? #os.mkdir(新文件夾名稱) #os.fetcwd() 獲取當(dāng)前的目錄名稱 有帶像Linux里面的pwd #os.chdir(切換后的目錄名稱) 切換目錄 你可以當(dāng)作是 linux的cd命令 #os.listdir(目標(biāo)目錄) 獲取指定文件下面的文件名稱返回的是一個列表哦?可以看作是Linux里面的ls命令 #os.rmdir(目標(biāo)目錄) 刪除一個指定名稱的文件夾 但是這個文件夾必須是空的?就是里面沒有其他的東西(文件)的那種 ? # shutil 模塊? # shutil.rmtree("要刪除的文件夾的路徑") ? #os模塊是Python標(biāo)準(zhǔn)庫中一個重要的模塊,里面提供了對目錄和文件的一般常用操作。而Python另外一個標(biāo)準(zhǔn)庫——shutil庫, # 它作為os模塊的補充,提供了復(fù)制、移動、刪除、壓縮、解壓等操作,這些 os 模塊中一般是沒有提供的。但是需要注意的是:shutil # 模塊對壓縮包的處理是調(diào)用 ZipFile 和 TarFile這兩個模塊來進(jìn)行的。 ? ? 簡單來說就是 os是個基礎(chǔ)的模塊 shutil 它的模塊化比較強(qiáng)??一個用于基礎(chǔ) 一個用于補充 # python中的異常 # 異常 描述 # BaseException 所有異常的基類 # SystemExit 解釋器請求退出 # KeyboardInterrupt 用戶中斷執(zhí)行(通常是輸入^C) # Exception 常規(guī)錯誤的基類 # StopIteration 迭代器沒有更多的值 # GeneratorExit 生成器(generator)發(fā)生異常來通知退出 # StandardError 所有的內(nèi)建標(biāo)準(zhǔn)異常的基類 # ArithmeticError 所有數(shù)值計算錯誤的基類 # FloatingPointError 浮點計算錯誤 # OverflowError 數(shù)值運算超出最大限制 # ZeroDivisionError 除(或取模)零 (所有數(shù)據(jù)類型) # AssertionError 斷言語句失敗 # AttributeError 對象沒有這個屬性 # EOFError 沒有內(nèi)建輸入,到達(dá)EOF 標(biāo)記 # EnvironmentError 操作系統(tǒng)錯誤的基類 # IOError 輸入/輸出操作失敗 # OSError 操作系統(tǒng)錯誤 # WindowsError 系統(tǒng)調(diào)用失敗 # ImportError 導(dǎo)入模塊/對象失敗 # LookupError 無效數(shù)據(jù)查詢的基類 # IndexError 序列中沒有此索引(index) # KeyError 映射中沒有這個鍵 # MemoryError 內(nèi)存溢出錯誤(對于Python 解釋器不是致命的) # NameError 未聲明/初始化對象 (沒有屬性) # UnboundLocalError 訪問未初始化的本地變量 # ReferenceError 弱引用(Weak reference)試圖訪問已經(jīng)垃圾回收了的對象 # RuntimeError 一般的運行時錯誤 # NotImplementedError 尚未實現(xiàn)的方法 # SyntaxError Python 語法錯誤 # IndentationError 縮進(jìn)錯誤 # TabError Tab 和空格混用 # SystemError 一般的解釋器系統(tǒng)錯誤 # TypeError 對類型無效的操作 # ValueError 傳入無效的參數(shù) # UnicodeError Unicode 相關(guān)的錯誤 # UnicodeDecodeError Unicode 解碼時的錯誤 # UnicodeEncodeError Unicode 編碼時錯誤 # UnicodeTranslateError Unicode 轉(zhuǎn)換時錯誤 # Warning 警告的基類 # DeprecationWarning 關(guān)于被棄用的特征的警告 # FutureWarning 關(guān)于構(gòu)造將來語義會有改變的警告 # OverflowWarning 舊的關(guān)于自動提升為長整型(long)的警告 # PendingDeprecationWarning 關(guān)于特性將會被廢棄的警告 # RuntimeWarning 可疑的運行時行為(runtime behavior)的警告 # SyntaxWarning 可疑的語法的警告 # UserWarning 用戶代碼生成的警告 ? ? ? #不想錯誤后面的代碼被終止 也不希望終端提示相關(guān)的錯誤 #可以使用異常捕獲 ? #很好的一個規(guī)避錯誤(可能會出錯) ? #try: #?f = open("python.txt","r") #?print(f,read()) #?f.close() #except: #?f = open("python.txt","w") #?f.close() ? #先執(zhí)行代碼 try下面的代碼如果說執(zhí)行報錯的話 就執(zhí)行 except后面的語句 就是凡是都留個后門 有句古話:留的青山在不怕沒柴燒 (好像竄臺了) ? # 牛逼的寫法 同時捕獲多個錯誤 # try: #?print(8/0) #?f = open("python.txt","r") # except (ZeroDivisionError [除(或取模)零 (所有數(shù)據(jù)類型)], ArithmeticError[所有數(shù)值計算錯誤的基類]) : # 凡是這個括號里面寫的一些東西 計算機(jī)如果察覺到這些東西出錯 它會直接制止錯誤 簡稱自動攔截 ? #終極無敵牛逼的捕獲 #try: #?print(8/0) #except Exception as e : #Exception 使用異常類來捕獲所有的異常 這個類定義別名 e #???print("捕獲所有的異常") 或者print(e) ? # 后面加上else 表示如果沒有異常要執(zhí)行的代碼 ? # 加上finally 表示無論有咩有異常都要執(zhí)行的代碼 比如關(guān)閉文件 關(guān)閉數(shù)據(jù)庫的鏈接等 ? # raise 拋出自定義異常 # number = 6 # if number <= 7 : #??raise Exception("number小于7") #再也不是if 里面加上個print這種了 而是 直接系統(tǒng)出錯 當(dāng)然這個是用戶自己定義的讓他出錯 # python中模塊和包的概念\ # 模塊: 內(nèi)置模塊和自定義模塊 # 模塊的導(dǎo)入方式 import 模塊名 # from 模塊名 import 功能名 # from 模塊名 import* # import 模塊名 as 別名 # from 模塊名 import 功能名 as 別名 ? # from math import * 一次性導(dǎo)入所有 # from math import sqrt,floor 導(dǎo)入其中的幾個 不全部導(dǎo)入進(jìn)去(前者占用空間 ) ? # 導(dǎo)入模塊定義別名 簡單來說就是改個名字? #比如 import time as s?s.sleep() 這樣就可以使用時間函數(shù)?當(dāng)然 使用大駝峰命名法比較好?也可以同時導(dǎo)入多個函數(shù) 多個語句 ? # 自定義模塊 你創(chuàng)建一個.py結(jié)尾的文件 這個文件最好能完成一些任務(wù) 你在另一個文件夾使用的時候就可以直接 import 剛剛的那個文件夾 就可以把那個文件當(dāng)個一個模塊 這就是自定義模塊 你可以直接導(dǎo)入 能達(dá)成一定的效果 \ #不過 你想要自定義模塊所能完成的任務(wù)更多 功能更加齊全的話 你就要寫多點 寫的更加的完整點 import longlong # 導(dǎo)入自定義模塊 完成任務(wù) print(longlong.sum_num(12, 23)) ? """ 我在longlong.py 文件中 輸出了一句print(__name__) 果是在這個longlong.py文件中運行的話 只會輸出__main__ 但我要是在main里導(dǎo)入這個文件 使用這個文件中的東西 這個__name__ 就會實時輸出 __main__ 這個引用的文件名 就是我能知道我引用了什么文件 名字是什么 """ ? ? ? ? def sum_num(num1,num2): ??return num1+num2 #print(__name__) ? #在模塊文件中測試 單純的在本頁面測試程序有沒有問題 在其他文件中引用文件的話 __name__ 就是文件名 不是__main__就不會觸發(fā)底下這句子 nice if __name__ == '__main__' : ??print(sum_num(12, 23)) ? ??#多模塊導(dǎo)入會出現(xiàn)一點小問題 要是多個模塊中有同一個方法的話 你 from 模塊名 import* 找誰? ??# 還有就是 你自定義文件的模塊名 假如跟系統(tǒng)的重名的話 你import 導(dǎo)入進(jìn)來的就是你自己的模塊 那你還玩?zhèn)€得 ? """ 怎么知道你應(yīng)用了什么文件 比如我創(chuàng)建了一個random文件 系統(tǒng)也有這樣一個文件 如何查看到底引用了啥 你可以輸入 print(random.__file__) print(random.randint(0,100)) 你就可以知道它到底是引用了你創(chuàng)建的文件 還是這個pycharm 自帶的文件 """ ? """ 魔術(shù)變量 __all__ 導(dǎo)入時這能導(dǎo)入這個模塊列表中的元素 __all__ = ['func1']?這樣只會導(dǎo)入func1 def func1(): ?print("我是func1方法") ?? def func2(): ?print("我是func2方法") """ ? ? """ 在項目代碼中導(dǎo)入包package !!!使用import導(dǎo)入 import 包名.模塊名 # 不過使用起來就會多寫一點 包名.模塊名.方法名() !!!使用from導(dǎo)入包 # 模塊的方法就會簡單很多 模塊名.方法名 """ """ python 繼承關(guān)系 ? class B(object): ?def show(self): ???print("這是B類中的show方法") class A(B): #這里繼承了B類的放法 B類是A類的父親 ?pass ? a = A a.show() ? #這些就可以實現(xiàn)同步的輸出 ? #python中可以實現(xiàn)多個繼承 簡直不要太牛逼 class cat(Animal,cat_s) 可以同時繼承兩個 其實相當(dāng)于同時有了兩個父親 哈哈哈 真的是絕 """ ? """ 子類中你不想使用父類的方法 你可以直接重寫方法 ? #還得是super # super().__init__(self,brand,color,model) 你這樣可以直接繼承父類的方法和屬性 這個是強(qiáng)制的 就是使用父類的東西 但是可以加上自己的東西 還是很不錯的、 ???selt.batttery = battery """ ? # 比較特殊的MRO 你可以通過類名.__mro__ 或者是類名.mro()?就可以獲得類的層次結(jié)構(gòu) # 就是說你這個是繼承誰的 這個繼承的又是繼承的誰的 它會把這一系列的都輸出出來 ? """ 類方法 你可以直接 @classmethod?這個可以告訴解釋器這是個類方法 有對象的方法 對象的屬性 但是類也可以擁有屬性 所以可以直接 Tool.show_tool_count() 來直接調(diào)用這個類的屬性 或者說這個類獨有的方法 ? ? """ 私有屬性和私有方法的方式其實很簡單:在屬性名和方法名前面加上兩個下劃線即可 “--” 私有方法不能直接訪問 """ class Gril : ??def __init__(self,name): ????self.name = name ????self.__age = 19 # 雖然私有屬性不能直接訪問 但是你可以直接設(shè)置公有方式來返回其值 簡單來說 我不能讓你直接接手這個屬性 怕亂設(shè)置 ??#這里可以設(shè)置權(quán)限 讓不滿足條件的人止步 保證了數(shù)據(jù)的安全 ??#定義公有屬性 用戶可以直接在外部更改其值 要是發(fā)工資的話 用戶可以自己去修改其值 這還得了 這樣的公司請告訴我 我馬上來這個公司面試 ??def get_age(self) : ????return self.__age ? ??def set_age(self,age): ????self.__age = age ? xiaomei = Gril("瀧瀧") xiaomei.set_age(19)?#用戶自己傳值 自己的私有 print(xiaomei.name) print(xiaomei.get_age()) ? # __私有方法 def __func1(self) : #???????print #?~~~~~ 很多的私有方法 #?def withdraw(self): #???self.__func1() ? Python中的staticmethod是一個裝飾器,用于將一個方法轉(zhuǎn)換為靜態(tài)方法。靜態(tài)方法是不需要實例化類就可以調(diào)用的方法,它們與類有關(guān)聯(lián),但不依賴于類的實例。靜態(tài)方法可以在類中使用,也可以在類的實例中使用。使用staticmethod裝飾器可以將一個方法轉(zhuǎn)換為靜態(tài)方法,使其可以在類和類的實例中使用。 classmethod 是 Python 中的一種方法裝飾器,用于修飾類方法。類方法的第一個參數(shù)是類本身,而不是實例,因此可以通過類而不是實例來調(diào)用類方法。類方法常用于定義類級別的操作,如工廠方法。 語法:

python筆記 (學(xué)習(xí)系列第二篇筆記 這篇會比較長)的評論 (共 條)

分享到微博請遵守國家法律
县级市| 巴塘县| 东丽区| 邯郸县| 吉安县| 济阳县| 东至县| 凉城县| 千阳县| 苍山县| 密云县| 宝山区| 台南市| 丹凤县| 阳春市| 大足县| 平罗县| 奈曼旗| 湄潭县| 苍山县| 泰兴市| 株洲县| 莱西市| 曲阳县| 陵川县| 射洪县| 丁青县| 辛集市| 海宁市| 祁连县| 玛沁县| 广饶县| 昆山市| 沅江市| 萨嘎县| 邮箱| 阳新县| 潞城市| 赤城县| 汨罗市| 信阳市|