Python語言因為簡潔而清晰的風格,有大量適用性甚廣的類庫和python開源框架可以使用,而受到許多IT界人士的喜愛。Python的由來及發(fā)展歷程又是怎樣的呢,下面我們來簡單的了解下。
追溯Python語言的起源,是從20世紀90年代初由Guido van Rossum,在阿姆斯特丹,開發(fā)一個新的腳本解釋程序。不知道Guido當初有沒有想到,Python有一天會成為最受歡迎的程序設(shè)計語言之一呢?
有些人喜歡用膠水語言來形容Python,是因為它可以很輕松的把許多其它語言編寫的模塊結(jié)合在一起,至于過程這里不多講,如果你感興趣隨處都可以查到。要知道的是,國內(nèi)外的許多高校也把python語言做為必修課來學習,并且國內(nèi)的使用Python語言來工作的單位數(shù)量也在增加,會python的程序員可是炙手可熱啊。
問問學過Python語言的朋友們,它有哪些吸引人的地方呢?大多數(shù)人會這樣認為,它是一門容易上手,易讀同時也易維護的語言,所以才會有許許多多的用戶喜歡使用和學習,它真的是一門用途廣泛的語言。
Python語言最基本語法有:縮進、控制語句、表達式、函數(shù)、對象方法、類型和數(shù)學運算。只有學習了python基礎(chǔ)的語法之后,才可以開始正式應(yīng)用的學習,如:圖形處理、數(shù)學處理、文本處理、數(shù)據(jù)庫、WEB編程、爬蟲等等的實際應(yīng)用。
python 3.3是目前最新的版本,但是很多人還是喜歡從python 2開始學習。因為之前也有講過python 3的第三方支持還不完善,學習過程中會遇到莫名的問題。不如從已經(jīng)很完善的python 2開始學習。之后過渡到python 3也是很簡單的。
2017年6月TIOBE編程語言排行榜:由上圖可見,python語言使用率呈上升趨勢,而排名前三的語言使用率呈下降趨勢。
優(yōu)點:
Python的定位是“優(yōu)雅”、“明確”、“簡單”,所以Python程序看上去總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常復(fù)雜的程序。
開發(fā)效率非常高,Python有非常強大的第三方庫,基本上你想通過計算機實現(xiàn)任何功能,Python官方庫里都有相應(yīng)的模塊進行支持,直接下載調(diào)用后,在基礎(chǔ)庫的基礎(chǔ)上再進行開發(fā),大大降低開發(fā)周期,避免重復(fù)造輪子。
高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內(nèi)存一類的底層細節(jié)
可移植性————由于它的開源本質(zhì),Python已經(jīng)被移植在許多平臺上(經(jīng)過改動使它能夠工 作在不同平臺上)。如果你小心地避免使用依賴于系統(tǒng)的特性,那么你的所有Python程序無需修改就幾乎可以在市場上所有的系統(tǒng)平臺上運行
可擴展性————如果你需要你的一段關(guān)鍵代碼運行得更快或者希望某些算法不公開,你可以把你的部分程序用C或C++編寫,然后在你的Python程序中使用它們。
可嵌入性————你可以把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
缺點:
速度慢,Python 的運行速度相比C語言確實慢很多,跟JAVA相比也要慢一些,因此這也是很多所謂的大牛不屑于使用Python的主要原因,但其實這里所指的運行速度慢在大多數(shù)情況下用戶是無法直接感知到的,必須借助測試工具才能體現(xiàn)出來,比如你用C運一個程序花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是非??鋸埩?,但是你是無法直接通過肉眼感知的,因為一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數(shù)情況下Python已經(jīng)完全可以滿足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種情況下,當然還是建議你用C去實現(xiàn)的。
代碼不能加密,因為PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認為這算是一個缺點,如果你的項目要求源代碼必須是加密的,那你一開始就不應(yīng)該用Python來去實現(xiàn)。
線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設(shè)計語言解釋器用于同步線程的工具,使得任何時刻僅有一個線程在執(zhí)行,Python的線程是操作系統(tǒng)的原生線程。在Linux上為pthread,在Windows上為Win thread,完全由操作系統(tǒng)調(diào)度線程的執(zhí)行。一個python解釋器進程內(nèi)有一條主線程,以及多條用戶程序的執(zhí)行線程。即使在多核CPU平臺上,由于GIL的存在,所以禁止多線程的并行執(zhí)行。關(guān)于這個問題的折衷解決方法,我們在以后線程和進程章節(jié)里再進行詳細探討。
1、下載安裝包 2、安裝 安裝在C:Python36 3、配置環(huán)境變量 【右鍵計算機】--》【屬性】--》【高級系統(tǒng)設(shè)置】--》【高級】--》【環(huán)境變量】--》【在第二個內(nèi)容框中找到 變量名為Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用;分割】
1.解壓 tar xf Python-3.6.2.tgz 2.編譯安裝 cd Python-3.6.2 ./configure --prefix=/usr/local/Python3.6 make make install 3.配置環(huán)境變量 vim /etc/profile PATH=/usr/local/Python3.6/bin:$PATH source /etc/profile 4.測試 python3.6
打開pycharm,新建python項目,新建python文件。
#!/usr/binl/env python #encoding: utf-8 #author: YangLei print("hello,world")
變量來源于數(shù)學,是計算機語言中能儲存計算結(jié)果或能表示值抽象概念。變量可以通過變量名訪問。在指令式語言中,變量通常是可變的;但在純函數(shù)式語言(如Haskell)中,變量可能是不可變(immutable)的。在一些語言中,變量可能被明確為是能表示可變狀態(tài)、具有存儲空間的抽象(如在Java和Visual Basic中);但另外一些語言可能使用其它概念(如C的對象)來指稱這種抽象,而不嚴格地定義“變量”的準確外延。
聲明變量
#!/usr/binl/env python #encoding: utf-8 #author: YangLei name = "yanglei" print(name)
上述代碼聲明了一個變量,變量名為: name,變量name的值為:"yanglei"
變量定義的規(guī)則:
變量名只能是 字母、數(shù)字或下劃線的任意組合
變量名的第一個字符不能是數(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']
#!/usr/binl/env python #encoding: utf-8 #author: YangLei input_name = input("Please enter your name: ") print("hi,%s" % input_name)
1、數(shù)字
int(整型)
在32位機器上,整數(shù)的位數(shù)為32位,取值范圍為-2**31~2**31-1,即-2147483648~2147483647 在64位系統(tǒng)上,整數(shù)的位數(shù)為64位,取值范圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807long(長整型) 跟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也不會導(dǎo)致嚴重后果了?! ∽⒁猓涸赑ython3里不再有l(wèi)ong類型了,全都是intfloat(浮點型) 浮點數(shù)用來處理實數(shù),即帶有小數(shù)的數(shù)字。類似于C語言中的double類型,占8個字節(jié)(64位),其中52位表示底,11位表示指數(shù),剩下的一位表示符號。2、布爾值 真或假 1 或 03、字符串"hello world"
字符串拼接:
python中的字符串在C語言中體現(xiàn)為是一個字符數(shù)組,每次創(chuàng)建字符串時候需要在內(nèi)存中開辟一塊連續(xù)的空,并且一旦需要修改字符串的話,就需要再次開辟空間,萬惡的+號每出現(xiàn)一次就會在內(nèi)從中重新開辟一塊空間。字符串格式化輸出#!/usr/binl/env python #encoding: utf-8 #author: YangLei name = "yanglei" print("hi,%s" % name) #
注:字符串是 %s;整數(shù) %d;浮點數(shù)%f
字符串常用功能:移除空白
分割
長度
索引
切片
#!/usr/binl/env python #encoding: utf-8 #author: YangLei name = ["yanglei","jack","marry","andy"]
基本操作:
索引
切片
追加
刪除
長度
切片
循環(huán)
包含
5、字典(無序)
創(chuàng)建字典:#!/usr/binl/env python #encoding: utf-8 #author: YangLei user_info = {"name":"yanglei","age":23,"job":"IT"}
常用操作:
索引
新增
刪除
鍵、值、鍵值對
循環(huán)
長度
比較運算:
賦值運算:
邏輯運算:
成員運算:
身份運算:
位運算:
運算符優(yōu)先級:
場景一、用戶登陸驗證
#!/usr/binl/env python #encoding: utf-8 #author: YangLei input_user = input("Please enter your user name: ") input_password = input("Please enter your password: ") if input_user == "yanglei" and input_password == "123456": print("