Python之路【第一篇】:Python简介和入门
Python之路【第一篇】:Python簡(jiǎn)介和入門(mén)
Python簡(jiǎn)介?
Python前世今生
python的創(chuàng)始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的圣誕節(jié)期間,吉多·范羅蘇姆為了在阿姆斯特丹打發(fā)時(shí)間,決心開(kāi)發(fā)一個(gè)新的腳本解釋程序,作為ABC語(yǔ)言的一種繼承。??
最新的TIOBE排行榜,Python趕超PHP占據(jù)第五!!!
由上圖可見(jiàn),Python整體呈上升趨勢(shì),反映出Python應(yīng)用越來(lái)越廣泛并且也逐漸得到業(yè)內(nèi)的認(rèn)可!!!
Python可以應(yīng)用于眾多領(lǐng)域,如:數(shù)據(jù)分析、組件集成、網(wǎng)絡(luò)服務(wù)、圖像處理、數(shù)值計(jì)算和科學(xué)計(jì)算等眾多領(lǐng)域。目前業(yè)內(nèi)幾乎所有大中型互聯(lián)網(wǎng)企業(yè)都在使用Python,如:Youtube、Dropbox、BT、Quora(中國(guó)知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車(chē)之家、美團(tuán)等。互聯(lián)網(wǎng)公司廣泛使用Python來(lái)做的事一般有:自動(dòng)化運(yùn)維、自動(dòng)化測(cè)試、大數(shù)據(jù)分析、爬蟲(chóng)、Web 等。
注視:上述重點(diǎn)字體表示該公司主要使用Python語(yǔ)言開(kāi)發(fā)
為什么是Python而不是其他語(yǔ)言?
C 和 Python、Java、C#等
? ? C語(yǔ)言: 代碼編譯得到 機(jī)器碼 ,機(jī)器碼在處理器上直接執(zhí)行,每一條指令控制CPU工作
其他語(yǔ)言: 代碼編譯得到 字節(jié)碼 ,虛擬機(jī)執(zhí)行字節(jié)碼并轉(zhuǎn)換成機(jī)器碼再后在處理器上執(zhí)行
Python 和 C ?Python這門(mén)語(yǔ)言是由C開(kāi)發(fā)而來(lái)
對(duì)于使用:Python的類(lèi)庫(kù)齊全并且使用簡(jiǎn)潔,如果要實(shí)現(xiàn)同樣的功能,Python 10行代碼可以解決,C可能就需要100行甚至更多.
對(duì)于速度:Python的運(yùn)行速度相較與C,絕逼是慢了
Python 和 Java、C#等
對(duì)于使用:Linux原裝Python,其他語(yǔ)言沒(méi)有;以上幾門(mén)語(yǔ)言都有非常豐富的類(lèi)庫(kù)支持
對(duì)于速度:Python在速度上可能稍顯遜色
所以,Python和其他語(yǔ)言沒(méi)有什么本質(zhì)區(qū)別,其他區(qū)別在于:擅長(zhǎng)某領(lǐng)域、人才豐富、先入為主。
?
Python的種類(lèi)
- Cpython
? ? Python的官方版本,使用C語(yǔ)言實(shí)現(xiàn),使用最為廣泛,CPython實(shí)現(xiàn)會(huì)將源文件(py文件)轉(zhuǎn)換成字節(jié)碼文件(pyc文件),然后運(yùn)行在Python虛擬機(jī)上。 - Jyhton
? ? Python的Java實(shí)現(xiàn),Jython會(huì)將Python代碼動(dòng)態(tài)編譯成Java字節(jié)碼,然后在JVM上運(yùn)行。 - IronPython
? ? Python的C#實(shí)現(xiàn),IronPython將Python代碼編譯成C#字節(jié)碼,然后在CLR上運(yùn)行。(與Jython類(lèi)似) - PyPy(特殊)
? ? Python實(shí)現(xiàn)的Python,將Python的字節(jié)碼字節(jié)碼再編譯成機(jī)器碼。 - RubyPython、Brython ...
以上除PyPy之外,其他的Python的對(duì)應(yīng)關(guān)系和執(zhí)行流程如下:
?
PyPy,在Python的基礎(chǔ)上對(duì)Python的字節(jié)碼進(jìn)一步處理,從而提升執(zhí)行速度!
Python環(huán)境?
安裝Python
windows:
| 1 2 3 4 5 6 7 | 1、下載安裝包 ????https://www.python.org/downloads/ 2、安裝 ????默認(rèn)安裝路徑:C:\python27 3、配置環(huán)境變量 ????【右鍵計(jì)算機(jī)】--》【屬性】--》【高級(jí)系統(tǒng)設(shè)置】--》【高級(jí)】--》【環(huán)境變量】--》【在第二個(gè)內(nèi)容框中找到 變量名為Path 的一行,雙擊】?--> 【Python安裝目錄追加到變值值中,用 ; 分割】 ????如:原來(lái)的值;C:\python27,切記前面有分號(hào) |
linux:
| 1 2 3 | 無(wú)需安裝,原裝Python環(huán)境 ps:如果自帶2.6,請(qǐng)更新至2.7 |
更新Python
windows:
| 1 | 卸載重裝即可 |
linux:
Linux的yum依賴(lài)自帶Python,為防止錯(cuò)誤,此處更新其實(shí)就是再安裝一個(gè)Python
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 查看默認(rèn)Python版本 python?-V 1、安裝gcc,用于編譯Python源碼 ????yum install gcc 2、下載源碼包,https://www.python.org/ftp/python/ 3、解壓并進(jìn)入源碼文件 4、編譯安裝 ????./configure ????make?all ????make install 5、查看版本 ????/usr/local/bin/python2.7?-V 6、修改默認(rèn)Python版本 ????mv?/usr/bin/python?/usr/bin/python2.6 ????ln?-s?/usr/local/bin/python2.7?/usr/bin/python 7、防止yum執(zhí)行異常,修改yum使用的Python版本 ????vi?/usr/bin/yum ????將頭部?#!/usr/bin/python 修改為 #!/usr/bin/python2.6 |
Python 入門(mén)
一、第一句Python代碼
在 /home/dev/ 目錄下創(chuàng)建 hello.py 文件,內(nèi)容如下:
| 1 | print?"hello,world" |
執(zhí)行 hello.py 文件,即:?python /home/dev/hello.py
python內(nèi)部執(zhí)行過(guò)程如下:
二、解釋器
上一步中執(zhí)行 python /home/dev/hello.py?時(shí),明確的指出 hello.py 腳本由 python 解釋器來(lái)執(zhí)行。
如果想要類(lèi)似于執(zhí)行shell腳本一樣執(zhí)行python腳本,例:?./hello.py?,那么就需要在 hello.py 文件的頭部指定解釋器,如下:
| 1 2 3 | #!/usr/bin/env python print?"hello,world" |
如此一來(lái),執(zhí)行:?./hello.py?即可。
ps:執(zhí)行前需給予 hello.py 執(zhí)行權(quán)限,chmod 755 hello.py
三、內(nèi)容編碼
python解釋器在加載 .py 文件中的代碼時(shí),會(huì)對(duì)內(nèi)容進(jìn)行編碼(默認(rèn)ascill)
ASCII(American Standard Code for Information Interchange,美國(guó)標(biāo)準(zhǔn)信息交換代碼)是基于拉丁字母的一套電腦編碼系統(tǒng),主要用于顯示現(xiàn)代英語(yǔ)和其他西歐語(yǔ)言,其最多只能用 8 位來(lái)表示(一個(gè)字節(jié)),即:2**8 = 256,所以,ASCII碼最多只能表示 256 個(gè)符號(hào)。
顯然ASCII碼無(wú)法將世界上的各種文字和符號(hào)全部表示,所以,就需要新出一種可以代表所有字符和符號(hào)的編碼,即:Unicode
Unicode(統(tǒng)一碼、萬(wàn)國(guó)碼、單一碼)是一種在計(jì)算機(jī)上使用的字符編碼。Unicode 是為了解決傳統(tǒng)的字符編碼方案的局限而產(chǎn)生的,它為每種語(yǔ)言中的每個(gè)字符設(shè)定了統(tǒng)一并且唯一的二進(jìn)制編碼,規(guī)定雖有的字符和符號(hào)最少由 16 位來(lái)表示(2個(gè)字節(jié)),即:2 **16 =?65536,
注:此處說(shuō)的的是最少2個(gè)字節(jié),可能更多
UTF-8,是對(duì)Unicode編碼的壓縮和優(yōu)化,他不再使用最少使用2個(gè)字節(jié),而是將所有的字符和符號(hào)進(jìn)行分類(lèi):ascii碼中的內(nèi)容用1個(gè)字節(jié)保存、歐洲的字符用2個(gè)字節(jié)保存,東亞的字符用3個(gè)字節(jié)保存...
所以,python解釋器在加載 .py 文件中的代碼時(shí),會(huì)對(duì)內(nèi)容進(jìn)行編碼(默認(rèn)ascill),如果是如下代碼的話(huà):
報(bào)錯(cuò):ascii碼無(wú)法表示中文
| 1 2 3 | #!/usr/bin/env python print?"你好,世界"? |
改正:應(yīng)該顯示的告訴python解釋器,用什么編碼來(lái)執(zhí)行源代碼,即:
| 1 2 3 4 | #!/usr/bin/env python # -*- coding: utf-8 -*- print?"你好,世界" |
四、注釋
當(dāng)行注視:# 被注釋內(nèi)容
多行注釋:""" 被注釋內(nèi)容 """
五、執(zhí)行腳本傳入?yún)?shù)
Python有大量的模塊,從而使得開(kāi)發(fā)Python程序非常簡(jiǎn)潔。類(lèi)庫(kù)有包括三中:
- Python內(nèi)部提供的模塊
- 業(yè)內(nèi)開(kāi)源的模塊
- 程序員自己開(kāi)發(fā)的模塊
Python內(nèi)部提供一個(gè) sys 的模塊,其中的 sys.argv 用來(lái)捕獲執(zhí)行執(zhí)行python腳本時(shí)傳入的參數(shù)
| 1 2 3 4 5 6 | #!/usr/bin/env python # -*- coding: utf-8 -*- import?sys print?sys.argv? |
六、 pyc 文件
執(zhí)行Python代碼時(shí),如果導(dǎo)入了其他的 .py 文件,那么,執(zhí)行過(guò)程中會(huì)自動(dòng)生成一個(gè)與其同名的 .pyc 文件,該文件就是Python解釋器編譯之后產(chǎn)生的字節(jié)碼。
ps:代碼經(jīng)過(guò)編譯可以產(chǎn)生字節(jié)碼;字節(jié)碼通過(guò)反編譯也可以得到代碼。
七、變量
1、聲明變量
| 1 2 3 4 | #!/usr/bin/env python # -*- coding: utf-8 -*- name?=?"wupeiqi" |
上述代碼聲明了一個(gè)變量,變量名為: name,變量name的值為:"wupeiqi"
變量的作用:昵稱(chēng),其代指內(nèi)存里某個(gè)地址中保存的內(nèi)容
變量定義的規(guī)則:
- 變量名只能是 字母、數(shù)字或下劃線(xiàn)的任意組合
- 變量名的第一個(gè)字符不能是數(shù)字
- 以下關(guān)鍵字不能聲明為變量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
2、變量的賦值
#!/usr/bin/env python # -*- coding: utf-8 -*-name1 = "wupeiqi" name2 = "alex"#!/usr/bin/env python # -*- coding: utf-8 -*-name1 = "wupeiqi" name2 = name1
八、輸入
| 1 2 3 4 5 6 7 8 | #!/usr/bin/env python # -*- coding: utf-8 -*- # 將用戶(hù)輸入的內(nèi)容賦值給 name 變量 name?=?raw_input("請(qǐng)輸入用戶(hù)名:") # 打印輸入的內(nèi)容 print?name |
輸入密碼時(shí),如果想要不可見(jiàn),需要利用getpass 模塊中的 getpass方法,即:
| 1 2 3 4 5 6 7 8 9 10 | #!/usr/bin/env python # -*- coding: utf-8 -*- import?getpass # 將用戶(hù)輸入的內(nèi)容賦值給 name 變量 pwd?=?getpass.getpass("請(qǐng)輸入密碼:") # 打印輸入的內(nèi)容 print?pwd |
九、流程控制和縮進(jìn)
需求一、用戶(hù)登陸驗(yàn)證
| 1 2 3 4 5 | # 提示輸入用戶(hù)名和密碼 # 驗(yàn)證用戶(hù)名和密碼 #???? 如果錯(cuò)誤,則輸出用戶(hù)名或密碼錯(cuò)誤 #???? 如果成功,則輸出 歡迎,XXX! |
需求二、根據(jù)用戶(hù)輸入內(nèi)容輸出其權(quán)限
| 1 2 3 4 5 6 | # 根據(jù)用戶(hù)輸入內(nèi)容打印其權(quán)限 # alex --> 超級(jí)管理員 # eric --> 普通管理員 # tony --> 業(yè)務(wù)主管 # 其他 --> 普通用戶(hù) |
2 是一個(gè)整數(shù)的例子。
長(zhǎng)整數(shù) 不過(guò)是大一些的整數(shù)。
3.23和52.3E-4是浮點(diǎn)數(shù)的例子。E標(biāo)記表示10的冪。在這里,52.3E-4表示52.3 * 10-4。
(-5+4j)和(2.3-4.6j)是復(fù)數(shù)的例子。
int(整型)
在32位機(jī)器上,整數(shù)的位數(shù)為32位,取值范圍為-2**31~2**31-1,即-2147483648~2147483647在64位系統(tǒng)上,整數(shù)的位數(shù)為64位,取值范圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807 long(長(zhǎng)整型)
跟C語(yǔ)言不同,Python的長(zhǎng)整數(shù)沒(méi)有指定位寬,即:Python沒(méi)有限制長(zhǎng)整數(shù)數(shù)值的大小,但實(shí)際上由于機(jī)器內(nèi)存有限,我們使用的長(zhǎng)整數(shù)數(shù)值不可能無(wú)限大。
注意,自從Python2.2起,如果整數(shù)發(fā)生溢出,Python會(huì)自動(dòng)將整數(shù)數(shù)據(jù)轉(zhuǎn)換為長(zhǎng)整數(shù),所以如今在長(zhǎng)整數(shù)數(shù)據(jù)后面不加字母L也不會(huì)導(dǎo)致嚴(yán)重后果了。
float(浮點(diǎn)型)
浮點(diǎn)數(shù)用來(lái)處理實(shí)數(shù),即帶有小數(shù)的數(shù)字。類(lèi)似于C語(yǔ)言中的double類(lèi)型,占8個(gè)字節(jié)(64位),其中52位表示底,11位表示指數(shù),剩下的一位表示符號(hào)。
complex(復(fù)數(shù))
復(fù)數(shù)由實(shí)數(shù)部分和虛數(shù)部分組成,一般形式為x+yj,其中的x是復(fù)數(shù)的實(shí)數(shù)部分,y是復(fù)數(shù)的虛數(shù)部分,這里的x和y都是實(shí)數(shù)。 注:Python中存在小數(shù)字池:-5 ~ 257 2、布爾值 真或假 1 或 0 3、字符串 "hello world" 萬(wàn)惡的字符串拼接: python中的字符串在C語(yǔ)言中體現(xiàn)為是一個(gè)字符數(shù)組,每次創(chuàng)建字符串時(shí)候需要在內(nèi)存中開(kāi)辟一塊連續(xù)的空,并且一旦需要修改字符串的話(huà),就需要再次開(kāi)辟空間,萬(wàn)惡的+號(hào)每出現(xiàn)一次就會(huì)在內(nèi)從中重新開(kāi)辟一塊空間。 字符串格式化
| 1 2 3 4 | name?=?"alex" print?"i am %s "?%?name #輸出: i am alex |
PS: 字符串是 %s;整數(shù) %d;浮點(diǎn)數(shù)%f
字符串常用功能:- 移除空白
- 分割
- 長(zhǎng)度
- 索引
- 切片
| 1 2 3 | name_list?=?['alex',?'seven',?'eric'] 或 name_list =?list(['alex',?'seven',?'eric']) |
基本操作:
- 索引
- 切片
- 追加
- 刪除
- 長(zhǎng)度
- 切片
- 循環(huán)
- 包含
| 1 2 3 | ages?=?(11,?22,?33,?44,?55) 或 ages?=?tuple((11,?22,?33,?44,?55)) |
- 索引
- 切片
- 循環(huán)
- 長(zhǎng)度
- 包含
| 1 2 3 | person?=?{"name":?"mr.wu",?'age':?18} 或 person?=?dict({"name":?"mr.wu",?'age':?18}) |
常用操作:
- 索引
- 新增
- 刪除
- 鍵、值、鍵值對(duì)
- 循環(huán)
- 長(zhǎng)度
比較運(yùn)算:
賦值運(yùn)算:
邏輯運(yùn)算:
成員運(yùn)算:
身份運(yùn)算:
位運(yùn)算:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #!/usr/bin/python a?=?60????????????# 60 = 0011 1100 b?=?13????????????# 13 = 0000 1101 c?=?0 c?=?a & b;????????# 12 = 0000 1100 print?"Line 1 - Value of c is ", c c?=?a | b;????????# 61 = 0011 1101 print?"Line 2 - Value of c is ", c c?=?a ^ b;????????# 49 = 0011 0001 print?"Line 3 - Value of c is ", c c?=?~a;???????????# -61 = 1100 0011 print?"Line 4 - Value of c is ", c c?=?a <<?2;???????# 240 = 1111 0000 print?"Line 5 - Value of c is ", c c?=?a >>?2;???????# 15 = 0000 1111 print?"Line 6 - Value of c is ", c |
運(yùn)算符優(yōu)先級(jí):
更多內(nèi)容:猛擊這里
十二、初識(shí)文本的基本操作 打開(kāi)文件: file_obj = file("文件路徑","模式") 打開(kāi)文件的模式有:- r,以只讀方式打開(kāi)文件
- w,打開(kāi)一個(gè)文件只用于寫(xiě)入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
- a,打開(kāi)一個(gè)文件用于追加。如果該文件已存在,文件指針將會(huì)放在文件的結(jié)尾。也就是說(shuō),新的內(nèi)容將會(huì)被寫(xiě)入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫(xiě)入。
- w+,打開(kāi)一個(gè)文件用于讀寫(xiě)。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
讀取文件的內(nèi)容:
| 1 2 3 4 5 6 7 8 9 | # 一次性加載所有內(nèi)容到內(nèi)存 obj.read() # 一次性加載所有內(nèi)容到內(nèi)存,并根據(jù)行分割成字符串 obj.readlines() # 每次僅讀取一行數(shù)據(jù) for?line?in?obj: print?line |
寫(xiě)文件的內(nèi)容:
| 1 | obj.write('內(nèi)容') |
關(guān)閉文件句柄:
| 1 | obj.close() |
?作業(yè)??
作業(yè)一:博客
作業(yè)二:編寫(xiě)登陸接口
- 輸入用戶(hù)名密碼
- 認(rèn)證成功后顯示歡迎信息
- 輸錯(cuò)三次后鎖定
- 三級(jí)菜單
- 可依次選擇進(jìn)入各子菜單
- 所需新知識(shí)點(diǎn):列表、字典
?
轉(zhuǎn)載于:https://www.cnblogs.com/weiman3389/p/6223997.html
總結(jié)
以上是生活随笔為你收集整理的Python之路【第一篇】:Python简介和入门的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: php动态修改配置文件
- 下一篇: 抽象类 VS 接口