摘要:它是一門解析型的語言,何為解析型語言呢就是在運行時通過解析器將源代碼一行行解析成機器碼。而像語言,等則是編譯型的語言,即通過編譯器將所有的源代碼一次性編譯成二進制指令,生成一個可執行的程序。
我從2021年6月13號寫下第一篇Python的系列專欄算起,陸續更新了二十七篇Python系列文章。在此感謝讀者朋友們的支持和閱讀,特別感謝一鍵三連的小伙伴。
本專欄起名【Python從入門到精通】,主要分為基礎知識和項目實戰兩個部分,目前基礎知識部分已經完全介紹完畢。下一階段就是寫Python項目實戰以及爬蟲相關的知識點。
為了對前期學習的Python基礎知識做一個總結歸納,以幫助讀者朋友們更好的學習下一部分的實戰知識點,故在此我寫下此文,共勉,同進。
同時為了方便大家交流學習,我這邊還建立了一個Python的學習群。群里都是一群熱愛學習的小伙伴,不乏一些牛逼的大佬。大佬帶飛,我相信進入群里的小伙伴一定會走的更快,飛的更高。 歡迎掃碼進群。
下面就通過一個思維導圖,展示本專欄Python基礎知識部分的總覽圖。
本專欄從零基礎出發,從環境的搭建到高級知識點的學習,一步步走來,相信各位讀者朋友們早已掌握相關的知識點。接下來就做一個詳細的回顧。
Python是一門開源免費的,通用型的腳本編程語言。它需要在運行時將代碼一行行解析成CPU能識別的機器碼。它是一門解析型的語言,何為解析型語言呢?就是在運行時通過解析器將源代碼一行行解析成機器碼。而像C語言,C++等則是編譯型的語言,即通過編譯器將所有的源代碼一次性編譯成二進制指令,生成一個可執行的程序。解析型語言相對于編譯型語言的好處就是天然具有跨平臺的特點,一次編碼,到處運行。
python3
驗證安裝的結果,如果出現如下結果就表明安裝Python編譯器安裝成功了。工欲善其事必先利其器,在實際開發中我們都是通過IDE(集成開發環境)來進行編碼,為啥要使用IDE呢?這是因為IDE集成了語言編輯器,自動建立工具,除錯器等等工具可以極大方便我們快速的進行開發。打個比方 我們可以將集成開發環境想象成一個臺式機。雖然只需要主機就能運行起來,但是,還是需要顯示器,鍵盤等才能用的爽。
PyCharm就是這樣一款讓人用的很爽的IDE開發工具。下面就簡單介紹一下它的安裝過程
點擊鏈接 https://www.jetbrains.com/pycharm/download/
進入下來頁面,PyCharm 有專業版和社區版。其中,專業版需要購買才能使用,而社區版是免費的。社區版對于日常的Python開發完全夠用了。所以我們選擇PyCharm的社區版進行下載安裝。點擊如下圖所示的按鈕進行安裝包的下載。
安裝包下載好之后,我們雙擊安裝包即可進行安裝,安裝過程比較簡單,基本只需要安裝默認的設置每一步點擊Next按鈕即可,不過當出現下圖的窗口時需要設置一下。
設置好之后點擊 Next 進入下一步的安裝,知道所有的安裝都完成。
這里使用只需要注意一點,就是設置解釋器,默認的話在Project Interpreter的選擇框中是提示的是 No interpreter,即沒有選中解釋器,所以,我們需要手動添加。
所以需要點擊設置按鈕設置解釋器,這里選擇 Add Local 設置本地的解釋器。
打開解釋器的設置頁面之后,默認選中的是Virtualenv Environment 這個tab頁,
這里Location是用來設置項目的虛擬環境,具體可以參考pycharm的使用小結,設置虛擬環境,更換鏡像源
Base interpreter 用來設置解釋器的路徑。
至此,開發Python的腳手架已經弄好,接下來就是編碼了。
如下創建了一個名為demo_1.py的文件,然后在文件中寫入了如下幾行代碼
print("你好,世界")a = 120b = 230print(a + b)
運行這些代碼只需要簡單的右鍵選中 Run ‘demo_1’ 或者 Debug ‘demo_1’ ,這兩者的區別是Run demo_1是以普通模式運行代碼,而 Debug ‘demo_1’ 是以調試模式運行代碼。
運行結果就是:
詳細內容可以查看【Python從入門到精通】(二)怎么運行Python呢?有哪些好的開發工具
首先介紹的是Python的注釋,Python的注釋分為兩種:單行注釋和多行注釋。
#注釋內容
從#號開始直到這行結束為止的所有內容都是注釋。例如:# 這是單行注釋
"""三個連續的單引號的多行注釋注釋多行內容"""
或者
"""三個連續的雙引號的多行注釋注釋多行內容"""
多行注釋通常用來為Python文件、模塊、類或者函數等添加版權或者功能描述信息(即文檔注釋)
不同于其他編程語言(如Java,或者C)采用大括號{}
分割代碼塊,Python采用代碼縮進和冒號 : 來區分代碼塊之間的層次。如下面的代碼所示:
a = -100 if a >= 0: print("輸出正數" + str(a)) print("測試")else: print("輸出負數" + str(a))
其中第一行代碼a = -100
和第二行代碼if a >= 0:
是在同一作用域(也就是作用范圍相同),所以這兩行代碼并排。而第三行代碼print("輸出正數" + str(a))
的作用范圍是在第二行代碼里面,所以需要縮進。第五行代碼也是同理。第二行代碼通過冒號和第三行代碼的縮進來區分這兩個代碼塊。
Python的縮進量可以使用空格或者Tab鍵來實現縮進,通常情況下都是采用4個空格長度作為一個縮進量的。
這里需要注意的是同一個作用域的代碼的縮進量要相同,不然會導致IndentationError異常錯誤,提示縮進量不對,如下面代碼所示:第二行代碼print("輸出正數" + str(a))
縮進了4個空格,而第三行代碼print("測試")
只縮進了2個空格。
if a >= 0: print("輸出正數" + str(a)) print("測試")
在Python中,對于類定義,函數定義,流程控制語句就像前面的if a>=0:
,異常處理語句等,行尾的冒號和下一行縮進,表示下一個代碼塊的開始,而縮進的結束則表示此代碼的結束。
詳細內容可以查看【Python從入門到精通】(三)Python的編碼規范,標識符知多少?
Python3中的整數是不分類型,也就是說沒有長整數類型(Long)或者短整數類型(short)之分,它的取值范圍是是無限的,即不管多大或者多小的數字,Python都能輕松的應對。如下就是兩個極大或者極小的整數。
>>> 100000-00000000000000000000000000000000000000001000000000000000000000000000000000000000000000>>> print(-1000000000000000000000000000000000000000000000)-1000000000000000000000000000000000000000000000
可以看出再大或者再小的數字都不會出現溢出的情況,這說明了Python對整數的處理能力非常強。
Python中可以用多種進制的來表示整數。
# 二進制a=0b1001print("a=",a)# 八進制b=0o207print("b=",b)# 十六進制c=0x45print("c=",c)
運行結果是:
a= 9b= 135c= 69
Python 3.x允許使用下劃線_作為數字(包括整數和小數)的分隔符,通常每隔三個數字添加一個下劃線,比如:click = 1_301_547
在編程語言中,小數通常以浮點數的形式存儲,浮點數和定點數是相對的;小數在存儲過程中如果小數點發生移動,就稱為浮點數;如果小數點不動,就稱為定點數。
Python中的小數有兩種書寫形式:
aEn或aen
x=10.01print("x=",x)y=-0.031print("y=",y)z=2.3E10print("z=",z)w=-0.00000001print("w=",w)
運行結果是:
x= 10.01y= -0.031z= 23000000000.0w= -1e-08
布爾類型用來表示真(對)或假(錯),比如常見的3>2 比較算式,這個是正確的,Python中使用True來代表;再比如2>3 比較算式,這個是錯誤的,用False來代表。
print(3>2)print(2>3)print("True==1的結果是:",True==1)print("False==0的結果是:",False==0)
運行結果是:
TrueFalseTrue==1的結果是: TrueFalse==0的結果是: True
詳細內容可以查看【Python從入門到精通】(四)Python的內置數據類型有哪些呢?數字了解一下
序列(sequence)指的是一塊可存放多個元素的內存空間,這些元素按照一定的順序排列。每個元素都有自己的位置(索引),可以通過這些位置(索引)來找到指定的元素。如果將序列想象成一個酒店,那么酒店里的每個房間就相當于序列中的每個元素,房間的編號就相當于元素的索引,可以通過編號(索引)找到指定的房間(元素)。
了解完了序列的基本概念,那么在Python中一共有哪些序列類型呢?如下圖所示:
從圖中可以看出在Python中共有7種序列類型,分別是文本序列類型(str);二進制序列類型 bytes和bytearray;列表(list);元組(tuple);集合類型(set和frozenset);范圍類型(range)以及字典類型(dict)。
按照能存儲的元素可以將序列類型劃分為兩大類:分別是:容器序列和扁平序列
容器序列:即可容納不同數據類型的元素的序列;有 list;tuple;set;dict
舉個栗子:
list=["runoob",786,2.23,"john",70.2]
這里的list保存的元素有多種數據類型,既有字符串,也有小數和整數。
扁平序列:即只能容納相同數據類型的元素的序列;有bytes;str;bytearray,以str為例,同一個str只能都存儲字符。
按照序列是否可變,又可分為可變序列和不可變序列。
這里的可變的意思是:序列創建成功之后,還能不能進行修改操作,比如插入,修改等等,如果可以的話則是可變的序列,如果不可以的話則是不可變序列。
可變序列有列表( list);字典(dict)等,
不可變的序列有元祖(tuple),后面的文章會詳細的對這些數據類型做詳細介紹。
在介紹序列概念的時候,說到了序列中元素的索引,那么什么是序列的索引呢?其實就是位置的下標。 如果對C語言中的數組有所了解的話,我們知道數組的索引下標都是從0開始依次遞增的正數,即第一個元素的索引下標是0,第n個元素的索引下標是n-1。序列的索引也是同理,默認情況下都是從左向右記錄索引,索引值從0開始遞增,即第一個元素的元素的索引值是0,第n個元素的索引值是n-1。如下圖所示:
當然與C語言中數組不同的是,Python還支持索引值是負數,該類的索引是從右向左計數。換句話說,就是從最后一個元素開始計數,從索引值-1開始遞減,即第n個元素的索引值是-1,第1個元素的索引值是-n,如下圖所示:
切片操作是訪問序列元素的另一種方式,它可以訪問一定范圍內的元素,通過切片操作,可以生成一個新的序列。切片操作的語法格式是:
sname[start : end : step]
各個參數的含義分別是:
str1="好好學習,天天向上"# 取出索引下標為7的值print(str1[7])# 從下標0開始取值,一直取到下標為7(不包括)的索引值print(str1[0:7])# 從下標1開始取值,一直取到下標為4(不包括)的索引值,因為step等于2,所以會隔1個元素取值print(str1[1:4:2])# 取出最后一個元素print(str1[-1])# 從下標-9開始取值,一直取到下標為-2(不包括)的索引值print(str1[-9:-2])
運行的結果是:
向好好學習,天天好習上好好學習,天天
Python支持類型相同的兩個序列使用"+"
運算符做想加操作,它會將兩個序列進行連接,但是不會去除重復的元素,即只做一個簡單的拼接。
str="他叫小明"str1="他很聰明"print(str+str1)
運行結果是:他叫小明他很聰明
Python支持使用數字n乘以一個序列,其會生成一個新的序列,新序列的內容是原序列被重復了n次的結果。
str2="你好呀"print(str2*3)
運行結果是:你好呀你好呀你好呀
,原序列的內容重復了3次。
Python中可以使用in
關鍵字檢查某個元素是否為序列中的成員,其語法格式為:
value in sequence
其中,value表示要檢查的元素,sequence表示指定的序列。
舉個栗子:查找天
字是否在字符串str1中。
str1="好好學習,天天向上"print("天" in str1)
運行結果是:True
*由若干個字符組成的集合就是一個字符串(str)**,Python中的字符串必須由雙引號""或者單引號’"包圍。其語法格式是:
"字符串內容""字符串內容"
如果字符串中包含了單引號需要做特殊處理。比如現在有這樣一個字符串
str4="I"m a greate coder"
直接這樣寫有問題的。
處理的方式有兩種:
/
進行轉義即可:str4="I/"m a greate coder"
str4="I"m a greate coder"
這里外層用雙引號,包裹字符串里的單引號。
通過+
運算符
現有字符串碼農飛哥好,
,要求將字符串碼農飛哥牛逼
拼接到其后面,生成新的字符串碼農飛哥好,碼農飛哥牛逼
舉個例子:
str6 = "碼農飛哥好,"# 使用+ 運算符號print("+運算符拼接的結果=",(str6 + "碼農飛哥牛逼"))
運行結果是:
+運算符拼接的結果= 碼農飛哥好,碼農飛哥牛逼
切片操作是訪問字符串的另一種方式,它可以訪問一定范圍內的元素,通過切片操作,可以生成一個新的字符串。切片操作的語法格式是:
sname[start : end : step]
各個參數的含義分別是:
str1="好好學習,天天向上"# 取出索引下標為7的值print(str1[7])# 從下標0開始取值,一直取到下標為7(不包括)的索引值print(str1[0:7])# 從下標1開始取值,一直取到下標為4(不包括)的索引值,因為step等于2,所以會隔1個元素取值print(str1[1:4:2])# 取出最后一個元素print(str1[-1])# 從下標-9開始取值,一直取到下標為-2(不包括)的索引值print(str1[-9:-2])
運行的結果是:
向好好學習,天天好習上好好學習,天天
Python提供了split()方法用于分割字符串,split() 方法可以實現將一個字符串按照指定的分隔符切分成多個子串,這些子串會被保存到列表中(不包含分隔符),作為方法的返回值反饋回來。該方法的基本語法格式如下:
str.split(sep,maxsplit)
此方法中各部分參數的含義分別是:
str = "https://feige.blog.csdn.net/"print("不指定分割次數", str.split("."))print("指定分割次數為2次",str.split(".",2))
運行結果是:
不指定分割次數 ["https://feige", "blog", "csdn", "net/"]指定分割次數為2次 ["https://feige", "blog", "csdn.net/"]
合并字符串與split的作用剛剛相反,Python提供了join() 方法來將列表(或元組)中包含的多個字符串連接成一個字符串。其語法結構是:
newstr = str.join(iterable)
此方法各部分的參數含義是:
list = ["碼農飛哥", "好好學習", "非常棒"]print("通過.來拼接", ".".join(list))print("通過-來拼接", "-".join(list))
運行結果是:
通過.來拼接 碼農飛哥.好好學習.非常棒通過-來拼接 碼農飛哥-好好學習-非常棒
startswith()方法用于檢索字符串是否以指定字符串開頭,如果是返回True;反之返回False。其語法結構是:
str.startswith(sub[,start[,end]])
此方法各個參數的含義是:
str1 = "https://feige.blog.csdn.net/"print("是否是以https開頭", str1.startswith("https"))print("是否是以feige開頭", str1.startswith("feige", 0, 20))
運行結果是:
是否是以https開頭 True是否是以feige開頭 False
endswith()方法用于檢索字符串是否以指定字符串結尾,如果是則返回True,反之則返回False。其語法結構是:
str.endswith(sub[,start[,end]])
此方法各個參數的含義與startswith方法相同,再此就不在贅述了。
Python中提供了3種方法用于字符串大小寫轉換
str.title()
str.lower()
str.upper()
。str = "feiGe勇敢飛"print("首字母大寫", str.title())print("全部小寫", str.lower())print("全部大寫", str.upper())
運行結果是:
首字母大寫 Feige勇敢飛全部小寫 feige勇敢飛全部大寫 FEIGE勇敢飛
Python中提供了三種方法去除字符串中空格(刪除特殊字符)的3種方法,這里的特殊字符,指的是指表符(/t)、回車符(/r),換行符(/n)等。
str = "/n碼農飛哥勇敢飛 "print("去除前后空格(特殊字符串)", str.strip())print("去除左邊空格(特殊字符串)", str.lstrip())print("去除右邊空格(特殊字符串)", str.rstrip())
運行結果是:
去除前后空格(特殊字符串) 碼農飛哥勇敢飛去除左邊空格(特殊字符串) 碼農飛哥勇敢飛 去除右邊空格(特殊字符串) 碼農飛哥勇敢飛
最早的字符串編碼是ASCll編碼,它僅僅對10個數字,26個大小寫英文字母以及一些特殊字符進行了編碼,ASCII碼最多只能表示256個字符,每個字符只需要占用1個字節。為了兼容各國的文字,相繼出現了GBK,GB2312,UTF-8編碼等,UTF-8是國際通用的編碼格式,它包含了全世界所有國家需要用到的字符,其規定英文字符占用1個字節,中文字符占用3個字節。
str.encode([encoding="utf-8"][,errors="strict"])
bytes.decode([encoding="utf-8"][,errors="strict"])
str = "碼農飛哥加油"bytes = str.encode()print("編碼", bytes)print("解碼", bytes.decode())
運行結果是:
編碼 b"/xe7/xa0/x81/xe5/x86/x9c/xe9/xa3/x9e/xe5/x93/xa5/xe5/x8a/xa0/xe6/xb2/xb9"解碼 碼農飛哥加油
默認的編碼格式是UTF-8,編碼和解碼的格式要相同,不然會解碼失敗。
在實際工作中我們經常要將一個數據對象序列化成字符串,也會將一個字符串反序列化成一個數據對象。Python自帶的序列化模塊是json模塊。
import jsondict = {"學號": 1001, "name": "張三", "score": [{"語文": 90, "數學": 100}]}str = json.dumps(dict,ensure_ascii=False)print("序列化成字符串", str, type(str))dict2 = json.loads(str)print("反序列化成對象", dict2, type(dict2))
運行結果是:
序列化成字符串 {"name": "張三", "score": [{"數學": 100, "語文": 90}], "學號": 1001} 反序列化成對象 {"name": "張三", "score": [{"數學": 100, "語文": 90}], "學號": 1001}
詳細內容可以查看
【Python從入門到精通】(五)Python內置的數據類型-序列和字符串,沒有女友,不是保姆,只有拿來就能用的干貨
【Python從入門到精通】(九)Python中字符串的各種騷操作你已經爛熟于心了么?【收藏下來就挺好的】
列表作為Python序列類型中的一種,其也是用于存儲多個元素的一塊內存空間,這些元素按照一定的順序排列。其數據結構是:
[element1, element2, element3, ..., elementn]
element1~elementn表示列表中的元素,元素的數據格式沒有限制,只要是Python支持的數據格式都可以往里面方。同時因為列表支持自動擴容,所以它可變序列,即可以動態的修改列表,即可以修改,新增,刪除列表元素。看個爽圖吧!
首先介紹的是對列表的操作:包括列表的創建,列表的刪除等!其中創建一個列表的方式有兩種:
第一種方式:
通過[]
包裹列表中的元素,每個元素之間通過逗號,
分割。元素類型不限并且同一列表中的每個元素的類型可以不相同,但是不建議這樣做,因為如果每個元素的數據類型都不同的話則非常不方便對列表進行遍歷解析。所以建議一個列表只存同一種類型的元素。
list=[element1, element2, element3, ..., elementn]
例如:test_list = ["測試", 2, ["碼農飛哥", "小偉"], (12, 23)]
PS: 空列表的定義是list=[]
第二種方式:
通過list(iterable)
函數來創建列表,list函數是Python內置的函數。該函數傳入的參數必須是可迭代的序列,比如字符串,列表,元組等等,如果iterable
傳入為空,則會創建一個空的列表。iterable
不能只傳一個數字。
classmates1 = list("碼農飛哥")print(classmates1)
生成的列表是:["碼", "農", "飛", "哥"]
向列表中新增元素的方法有四種,分別是:
第一種: 使用**+運算符將多個列表**連接起來。相當于在第一個列表的末尾添加上另一個列表。其語法格式是listname1+listname2
name_list = ["碼農飛哥", "小偉", "小小偉"]name_list2 = ["python", "java"]print(name_list + name_list2)
輸出結果是:["碼農飛哥", "小偉", "小小偉", "python", "java"]
,可以看出將name_list2中的每個元素都添加到了name_list的末尾。
第二種:使用append()方法添加元素
append()方法用于向列表末尾添加元素,其語法格式是:listname.append(p_object)
其中listname表示要添加元素的列表,p_object表示要添加到列表末尾的元素,可以是字符串,數字,也可以是一個序列。舉個栗子:
name_list.append("Adam")print(name_list)name_list.append(["test", "test1"])print(name_list)
運行結果是:
["碼農飛哥", "小偉", "小小偉", "Adam"]["碼農飛哥", "小偉", "小小偉", "Adam", ["test", "test1"]]
可以看出待添加的元素都成功的添加到了原列表的末尾處。并且當添加的元素是一個序列時,則會將該序列當成一個整體。
第三種:使用extend()方法
extend()方法跟append()方法的用法相同,同樣是向列表末尾添加元素。元素的類型只需要Python支持的數據類型即可。不過與append()方法不同的是,當添加的元素是序列
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/122579.html
文章目錄 強烈推薦系列教程,建議學起來!! 一.pycharm下載安裝二.python下載安裝三.pycharm上配置python四.配置鏡像源讓你下載嗖嗖的快4.1pycharm內部配置 4.2手動添加鏡像源4.3永久配置鏡像源 五.插件安裝(比如漢化?)5.1自動補碼神器第一款5.2漢化pycharm5.3其它插件 六.美女背景七.自定義腳本開頭八、這個前言一定要看九、pyt...
摘要:時間永遠都過得那么快,一晃從年注冊,到現在已經過去了年那些被我藏在收藏夾吃灰的文章,已經太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...
摘要:一個軟件測試在職老人幫你詳細分析一下。在軟件測試行業,前兩點可以結合起來說,就是大環境和前景以及人才缺口的問題。軟件測試屬于互聯網技術的一個分支,就是經常被提到的行業。你零基礎轉行嗷,良心奉勸你不要自學。 一個軟件測試在職老人幫你詳細分析一下。先不說軟件測試領域,你想轉行的話,得知道這個行...
閱讀 803·2021-10-14 09:43
閱讀 2129·2021-09-30 09:48
閱讀 3451·2021-09-08 09:45
閱讀 1101·2021-09-02 15:41
閱讀 1893·2021-08-26 14:15
閱讀 779·2021-08-03 14:04
閱讀 2982·2019-08-30 15:56
閱讀 3077·2019-08-30 15:52