一、python介紹
Python簡介及應用領(lǐng)域編輯
Python是一種解釋型腳本語言埋虹,可以應用于以下領(lǐng)域: [2]
Web 和 Internet開發(fā)
科學計算和統(tǒng)計
人工智能
桌面界面開發(fā)
軟件開發(fā)
后端開發(fā)
網(wǎng)絡爬蟲
1989年圣誕節(jié):Guido von Rossum開始寫Python語言的編譯器
Python可以應用于眾多領(lǐng)域锤躁,如:數(shù)據(jù)分析烧给、組件集成迈倍、網(wǎng)絡服務鞋屈、圖像處理追城、數(shù)值計算和科學計算等眾多領(lǐng)域刹碾。目前業(yè)內(nèi)幾乎所有大中型互聯(lián)網(wǎng)企業(yè)都在使用Python,如:Youtube座柱、Dropbox迷帜、BT、Quora(中國知乎)色洞、豆瓣戏锹、知乎、Google火诸、Yahoo!锦针、Facebook、NASA置蜀、百度奈搜、騰訊、汽車之家盯荤、美團等馋吗。
Python的優(yōu)缺點
Python的優(yōu)點很多,簡單的可以總結(jié)為以下幾點秋秤。
- 簡單和明確宏粤,做一件事只有一種方法。
- 學習曲線低航缀,跟其他很多語言相比商架,Python更容易上手。
- 開放源代碼芥玉,擁有強大的社區(qū)和生態(tài)圈蛇摸。
- 解釋型語言,天生具有平臺可移植性灿巧。
- 對兩種主流的編程范式(面向?qū)ο缶幊毯秃瘮?shù)式編程)都提供了支持赶袄。
- 可擴展性和可嵌入性揽涮,例如在Python中可以調(diào)用C/C++代碼。
- 代碼規(guī)范程度高饿肺,可讀性強蒋困,適合有代碼潔癖和強迫癥的人群。
Python的缺點主要集中在以下幾點敬辣。
- 執(zhí)行效率稍低雪标,因此計算密集型任務可以由C/C++編寫。
- 代碼無法加密溉跃,但是現(xiàn)在很多公司都不銷售賣軟件而是銷售服務村刨,這個問題會被弱化。
- 在開發(fā)時可以選擇的框架太多(如Web框架就有100多個)撰茎,有選擇的地方就有錯誤嵌牺。
目前Python主要應用領(lǐng)域:
云計算: 云計算最火的語言, 典型應用OpenStack
WEB開發(fā): 眾多優(yōu)秀的WEB框架龄糊,眾多大型網(wǎng)站均為Python開發(fā)逆粹,Youtube, Dropbox, 豆瓣。炫惩。僻弹。, 典型WEB框架有Django
科學運算诡必、人工智能: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas
系統(tǒng)運維: 運維人員必備語言
金融:量化交易奢方,金融分析搔扁,在金融工程領(lǐng)域,Python不但在用稿蹲,且用的最多,而且重要性逐年提高涂炎。原因:作為動態(tài)語言的Python,語言結(jié)構(gòu)清晰簡單设哗,庫豐富,成熟穩(wěn)定网梢,科學計算和統(tǒng)計分析都很牛逼,生產(chǎn)效率遠遠高于c,c++,java,尤其擅長策略回測
圖形GUI: PyQT, WxPython,TkInter
語言類型
編譯型 | 解釋型 | 混合型 |
---|---|---|
C | Python | Java |
C++ | JavaScript | C# |
Go | Ruby | |
Swift | Php |
編譯型
優(yōu)點:編譯器一般會有預編譯的過程對代碼進行優(yōu)化战虏。因為編譯只做一次拣宰,運行時不需要編譯党涕,所以編譯型語言的程序執(zhí)行效率高膛堤∩胃茫可以脫離語言環(huán)境獨立運行。
缺點:編譯之后如果要修改就需要修改整個模塊崇信編譯次企。編譯的時候根據(jù)對應的運行環(huán)境生成機器碼潜圃,不同的操作系統(tǒng)之間移植就會有問題,需要根據(jù)運行的操作系統(tǒng)環(huán)境編譯不同的可執(zhí)行文件堵第。
解釋型
優(yōu)點:有良好的平臺兼容性隧出,在任何環(huán)境中都可以運行胀瞪,前提是安裝了解釋器(虛擬機)。靈活圆雁,修改代碼的時候直接修改就可以了帆谍,可以快速部署,不需要停機維護烈涮。
缺點:每次運行的時候都需要解釋一遍窖剑,性能上不如編譯型語言西土。
要在電腦上運行python就必須安裝python環(huán)境即安裝python解釋器
Windows環(huán)境
可以在Python官方網(wǎng)站下載到Python的Windows安裝程序(exe文件),需要注意的是如果在Windows 7環(huán)境下安裝Python 3.x绘雁,需要先安裝Service Pack 1補丁包(可以通過一些工具軟件自動安裝系統(tǒng)補丁的功能來安裝),安裝過程建議勾選“Add Python 3.x to PATH”(將Python 3.x添加到PATH環(huán)境變量)并選擇自定義安裝欣除,在設(shè)置“Optional Features”界面最好將“pip”挪略、“tcl/tk”杠娱、“Python test suite”等項全部勾選上。強烈建議選擇自定義的安裝路徑并保證路徑中沒有中文禽拔。安裝完成會看到“Setup was successful”的提示室叉。如果稍后運行Python程序時,出現(xiàn)因為缺失一些動態(tài)鏈接庫文件而導致Python解釋器無法工作的問題野来,可以按照下面的方法加以解決踪旷。
如果系統(tǒng)顯示api-ms-win-crt*.dll文件缺失令野,可以參照《api-ms-win-crt*.dll缺失原因分析和解決方法》一文講解的方法進行處理或者直接在微軟官網(wǎng)下載Visual C++ Redistributable for Visual Studio 2015文件進行修復;如果是因為更新Windows的DirectX之后導致某些動態(tài)鏈接庫文件缺失問題构舟,可以下載一個DirectX修復工具進行修復堵幽。
Linux環(huán)境
Linux環(huán)境自帶了Python 2.x版本朴下,最新的系統(tǒng)版本都安裝了python3.x版本苦蒿,一般是python3.5,但是如果要更新到3.x的版本,可以在Python的官方網(wǎng)站下載Python的源代碼并通過源代碼構(gòu)建安裝的方式進行安裝团滥,具體的步驟如下所示(以CentOS為例)灸姊。
- 安裝依賴庫(因為沒有這些依賴庫可能在源代碼構(gòu)件安裝時因為缺失底層依賴庫而失敗)碗誉。
yum -y install wget gcc zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-devel
- 下載Python源代碼并解壓縮到指定目錄父晶。
wget https://www.python.org/ftp/python/3.7.6/Python-3.7.6.tar.xz
xz -d Python-3.7.6.tar.xz
tar -xvf Python-3.7.6.tar
- 切換至Python源代碼目錄并執(zhí)行下面的命令進行配置和安裝甲喝。
cd Python-3.7.6
./configure --prefix=/usr/local/python37 --enable-optimizations
make && make install
- 修改用戶主目錄下名為.bash_profile的文件,配置PATH環(huán)境變量并使其生效茎匠。
cd ~
vim .bash_profile
# ... 此處省略上面的代碼 ...
export PATH=$PATH:/usr/local/python37/bin
# ... 此處省略下面的代碼 ...
- 激活環(huán)境變量押袍。
source .bash_profile
macOS環(huán)境
macOS也自帶了Python 2.x版本谊惭,可以通過Python的官方網(wǎng)站提供的安裝文件(pkg文件)安裝Python 3.x的版本。默認安裝完成后豹芯,可以通過在終端執(zhí)行python
命令來啟動2.x版本的Python解釋器驱敲,啟動3.x版本的Python解釋器需要執(zhí)行python3
命令众眨。
運行Python程序
確認Python的版本
可以Windows的命令行提示符中鍵入下面的命令。
python --version
或者是在Linux或macOS系統(tǒng)的終端中鍵入下面的命令沿腰。
python3 --version
由于我是使用的anaconda颂龙,所以用的是python --version
當然也可以先輸入python或python3進入交互式環(huán)境,再執(zhí)行以下的代碼檢查Python的版本躲叼。
import sys
print(sys.version_info)
print(sys.version)
編寫Python源代碼
可以用文本編輯工具(推薦使用Sublime枫慷、Visual Studio Code等高級文本編輯工具)編寫Python源代碼并用py作為后綴名保存該文件包斑,代碼內(nèi)容如下所示。
print('hello, world!')
指定解釋器
在編寫的腳本中添加#!/usr/bin/env python
神帅,明確的指出腳本由python解釋器來執(zhí)行找御。使用./xxx.py
來執(zhí)行绍填。
變量
#_*_coding:utf-8_*_
name = smallpotato
age = 23
上述代碼申明了兩個變量讨永,name,age揭糕。使用命令type()
檢查變量類型锻霎⌒眨可以使用Python中內(nèi)置的函數(shù)對變量類型進行轉(zhuǎn)換。
-
int()
:將一個數(shù)值或字符串轉(zhuǎn)換成整數(shù)产徊,可以指定進制冬殃。 -
float()
:將一個字符串轉(zhuǎn)換成浮點數(shù)审葬。 -
str()
:將指定的對象轉(zhuǎn)換成字符串形式,可以指定編碼痴荐。 -
chr()
:將整數(shù)轉(zhuǎn)換成該編碼對應的字符串(一個字符)官册。 -
ord()
:將字符串(一個字符)轉(zhuǎn)換成對應的編碼(整數(shù))。
變量定義的規(guī)則
- 變量名只能是字母鸦难、數(shù)字或下劃線的任意組合
- 變量名第一個字母不能是數(shù)字
- 關(guān)鍵字不能作為變量名
中文編碼
ASCII合蔽、GB2312介返、GBK、GB18030刃宵,顯然ASCII碼無法將世界上各種字符全部顯示牲证,所以关面,就需要一種可以代表所有的符號的編碼:Unicode。
注釋
單行注釋:#注釋部分
多行注釋:”“”注釋部分“”“
Test
import this
”python之禪“不僅適用于python键闺,還適用于其他編程語言辛燥。
用戶輸入
#!/usr/bin/env python
#_*_coding:utf-8_*_
name = input("Please input your name:")
print("Hello" + name)
模塊
python的強大之處在于他有非常豐富和強大的標準庫和第三方庫挎塌。
像我們輸入密碼時内边,如果不想顯示漠其,可以利用標準庫getpass模塊竿音。
sys模塊
os模塊
turtle模塊
import turtle
turtle.pensize(4)
turtle.pencolor('red')
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.right(90)
turtle.forward(100)
turtle.mainloop()
指令和程序
計算機的硬件系統(tǒng)通常由五大部件構(gòu)成,包括:運算器宽气、控制器潜沦、存儲器唆鸡、輸入設(shè)備和輸出設(shè)備。其中袄琳,運算器和控制器放在一起就是我們通常所說的中央處理器燃乍,它的功能是執(zhí)行各種運算和控制指令以及處理計算機軟件中的數(shù)據(jù)。我們通常所說的程序?qū)嶋H上就是指令的集合逗旁,我們程序就是將一系列的指令按照某種方式組織到一起片效,然后通過這些指令去控制計算機做我們想讓它做的事情英古。今天我們大多數(shù)時候使用的計算機,雖然它們的元器件做工越來越精密膨桥,處理能力越來越強大唠叛,但究其本質(zhì)來說仍然屬于“馮·諾依曼結(jié)構(gòu)”的計算機艺沼。“馮·諾依曼結(jié)構(gòu)”有兩個關(guān)鍵點调鲸,一是指出要將存儲設(shè)備與中央處理器分開,二是提出了將數(shù)據(jù)以二進制方式編碼饶唤。二進制是一種“逢二進一”的計數(shù)法,跟我們?nèi)祟愂褂玫摹胺晔M一”的計數(shù)法沒有實質(zhì)性的區(qū)別办素,人類因為有十根手指所以使用了十進制(因為在數(shù)數(shù)時十根手指用完之后就只能進位了性穿,當然凡事都有例外,瑪雅人可能是因為長年光著腳的原因把腳趾頭也算上了吗坚,于是他們使用了二十進制的計數(shù)法呆万,在這種計數(shù)法的指導下瑪雅人的歷法就與我們平常使用的歷法不一樣谋减,而按照瑪雅人的歷法,2012年是上一個所謂的“太陽紀”的最后一年庄吼,而2013年則是新的“太陽紀”的開始严就,后來這件事情被以訛傳訛的方式誤傳為”2012年是瑪雅人預言的世界末日“這種荒誕的說法梢为,今天我們可以大膽的猜測,瑪雅文明之所以發(fā)展緩慢估計也與使用了二十進制有關(guān))殊轴。對于計算機來說袒炉,二進制在物理器件上來說是最容易實現(xiàn)的(高電壓表示1我磁,低電壓表示0)驻襟,于是在“馮·諾依曼結(jié)構(gòu)”的計算機都使用了二進制沉衣。雖然我們并不需要每個程序員都能夠使用二進制的思維方式來工作减牺,但是了解二進制以及它與我們生活中的十進制之間的轉(zhuǎn)換關(guān)系拔疚,以及二進制與八進制和十六進制的轉(zhuǎn)換關(guān)系還是有必要的。如果你對這一點不熟悉栋艳,可以自行使用維基百科或者百度百科科普一下句各。
數(shù)據(jù)類型
- 數(shù)字
int(整型)
在32位機器上凿宾,整數(shù)的位數(shù)為32位,取值范圍為-231~231-1问拘,即-2147483648~2147483647
在64位系統(tǒng)上惧所,整數(shù)的位數(shù)為64位下愈,取值范圍為-263~263-1,即-9223372036854775808~9223372036854775807
long(長整型)
跟C語言不同拌夏,Python的長整數(shù)沒有指定位寬履因,即:Python沒有限制長整數(shù)數(shù)值的大小栅迄,但實際上由于機器內(nèi)存有限,我們使用的長整數(shù)數(shù)值不可能無限大西篓。
注意岂津,自從Python2.2起,如果整數(shù)發(fā)生溢出橱乱,Python會自動將整數(shù)數(shù)據(jù)轉(zhuǎn)換為長整數(shù)赁豆,所以如今在長整數(shù)數(shù)據(jù)后面不加字母L也不會導致嚴重后果了魔种。
float(浮點型)
先掃盲 http://www.cnblogs.com/alex3714/articles/5895848.html
浮點數(shù)用來處理實數(shù)粉洼,即帶有小數(shù)的數(shù)字属韧。類似于C語言中的double類型,占8個字節(jié)(64位)糠赦,其中52位表示底拙泽,11位表示指數(shù)裸燎,剩下的一位表示符號德绿。
complex(復數(shù))
復數(shù)由實數(shù)部分和虛數(shù)部分組成,一般形式為x+yj蕴纳,其中的x是復數(shù)的實數(shù)部分个粱,y是復數(shù)的虛數(shù)部分几蜻,這里的x和y都是實數(shù)体斩。
注:Python中存在小數(shù)字池:-5 ~ 257
- 布爾型:布爾值只有
True
絮吵、False
兩種值忱屑,要么是True
莺戒,要么是False
,在Python中瘪校,可以直接用True
阱扬、False
表示布爾值(請注意大小寫)伸辟,也可以通過布爾運算計算出來(例如3 < 5
會產(chǎn)生布爾值True
信夫,而2 == 1
會產(chǎn)生布爾值False
)。 - 字符串
name = "nkonk"
#print("i am %s " % name)
print("i am {}".format(name))
Test
溫度轉(zhuǎn)換
#!/usr/bin/env python
#_*=coding:utf-8_*_
f = float(input('請輸入華氏溫度: '))
c = (f - 32) / 1.8
print('%.1f華氏度 = %.1f攝氏度' % (f, c))
輸入圓的半徑計算計算周長和面積
import math
radius = float(input('請輸入圓的半徑:'))
perimeter = 2 * math.pi * radius
area = math.pi * radius * radius
print('周長:%.2f' % perimeter)
print('面積:%.2f' % area)
判斷是否是閏年
while True:
year = int(input('請輸入年份: '))
is_leap = (year % 4 == 0 and year % 100 != 0) or \
year % 400 == 0
if is_leap == True:
print("%d是閏年" % year)
else:
print("%d不是閏年" % year)