詳解介紹Python的發展起源及基礎知識

PHP中文网
發布: 2017-06-22 13:40:19
原創
3032 人瀏覽過

一、Python發展簡介

1、Python作者簡介

  Python的作者, Guido von Rossum,荷蘭人。 1982年,Guido從阿姆斯特丹大學獲得了數學和電腦碩士學位。 1989年,他創立了Python語言。 那時,他還在荷蘭的CWI(Centrum voor Wiskunde en Informatica,國家數學和電腦科學研究院)。 1991年初,Python發布了第一個公開發行版。 Guido原居荷蘭,1995移居到美國,並遇到了他現在的妻子。在2003年初,Guido和他的家人,包括他2001年出生的兒子Orlijn一直住在華盛頓州北維吉尼亞的郊區。

  
2002年,在比利時布魯塞爾舉辦的自由及開源軟體開發者歐洲會議上,吉多·範羅蘇姆獲得了由自由軟體基金會頒發的2001年自由軟體進步獎。
2003年五月,吉多獲得了荷蘭 UNIX用戶小組獎。
2006年,他被美國電腦協會(ACM)認定為著名工程師。
2005年12月,吉多·範羅蘇姆加入Google。他用Python語言為Google寫了一個面向網頁的程式碼瀏覽工具。在那裡他把一半的時間用來維護Python的開發。
2012年12月7日,Dropbox宣布吉多·範羅蘇姆加入Dropbox公司。
 
2、Python發展簡介
 
#

  1989年,為了打發聖誕節假期,Guido開始寫Python語言的編譯器。 Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。
  1991年,第一個Python編譯器誕生。它是用C語言實現的,並且能夠呼叫C語言的函式庫檔。從一出生,Python已經具有了:類,函數,異常處理,包含表和字典在內的核心資料類型,以及模組為基礎的拓展系統。
  1999年,Granddaddy of Python web frameworks, Zope 1 was released in 1999
  1994年,Pythonhon 1.0 - January 1994 增加了 1994年
,Python 1.0 - January 1994 增加了lambter andfilm .  2000年
,Python 2.0 - October 16, 2000,加入了記憶回收機制,構成了現在Python語言框架的基礎  2004年
,Python語言框架的基礎  2004年
November 30, 2004, 同年目前最受歡迎的WEB框架Django 誕生  2006年
,Python 2.5 - September 19, 2006  2008年
2008 年##2. , 2008  2010年
,Python 2.7 - July 3, 2010  2014年
,In November 2014, it was announced that announced 20.777 w80, announced supported 2077. reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible  2008年
,Python 3.0 - December 3, 2008008年,Python 3.0 - December 3, 2008. ##,Python 3.1 - June 27, 2009  
2011年,Python 3.2 - February 20, 2011  
#2012年 20, 2011  #2012年##,Python 3. #  
2014年,Python 3.4 - March 16, 2014  

2015年

,Python 3.5 - September 13, 2015  

2015年

,Python 3.5.1, documentation。年,Python 3.6.0, documentation released on 23 December 2016.

  

2017年,Python 3.6.1, documentation released on 21 March 2017.參考官方文件說明:

  如果仔細閱讀的用戶一定會發現,為什麼2008年就發布了Python 3.0版本了,為什麼2010年又發布了Python2.7版本呢,這是因為當時Python3.0發佈時,就不在支援Python2.0的版本,導致許多用戶無法正常升級使用新版本,所以後來又發布了一個Python2.7的過渡版本,而且Python2.7會支援到2020年,所以新手還是從Python3 .0入手吧。

二、目前Python主要應用領域:

#雲端運算: 雲端運算最火的語言,典型應用OpenStack

  • WEB開發: 眾多優秀的WEB框架,眾多大型網站均為Python開發,Youtube, Dropbox, 豆瓣。 。 。 ,典型WEB框架有Django

  • 科學運算、人工智慧: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas

  • #系統運維: 維運人員必備語言

  • #金融:量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作為動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠高於c,c++,java,尤其擅長策略回測

  • 圖形GUI: PyQT, WxPython,TkInter

  • 三、Python在一些公司的應用: 

 

Google:Google App Engine 、code.google.com 、Google earth 、Google爬蟲、Google廣告等專案都在大量使用Python開發

CIA: 美國中情局網站就是用Python開發的
  • NASA: 美國航太局(NASA)大量使用Python進行資料分析和運算
  • YouTube:世界上最大的影片網站YouTube就是用Python開發的
  • Dropbox:美國最大的線上雲端儲存網站,全部用Python實現,每天網站處理10億個文件的上傳和下載
  • #Instagram:美國最大的圖片分享社交網站,每天超過3千萬張照片被分享,全部用python開發
  • Facebook:大量的基礎庫皆透過Python實現的
  • Redhat: 世界上最受歡迎的Linux發行版本中的yum套件管理工具就是用python開發的
  • 豆瓣: 公司幾乎所有的業務均是透過Python開發的
  • 知乎: 國內最大的問答社區,透過Python開發(國外Quora)
  • 春雨醫生:國內知名的線上醫療網站是用Python開發的

  • 除上面之外,還有搜狐、金山、騰訊、盛大、網易、百度、阿里、淘寶、馬鈴薯、新浪、果殼等公司都在使用Python完成各種各樣的任務。

四、Python是一門什麼樣的程式語言

  程式語言主要從下列幾個角度為進行分類,編譯型和解釋型、靜態語言和動態語言、強型別定義語言和弱型別定義語言,每個分類代表什麼意思呢,我們一起來看一下。

編譯和解釋的差別是什麼?

編譯器是把原始程式的每一語句都編譯成機器語言,並保存成二進位檔案,這樣執行時間電腦可以直接以機器語言來運行此程式,速度很快; 

解釋器則是只在執行程式時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程式運行的快的. 

這是因為計算機不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式)

 

編譯型vs解釋型

編譯型
優點:編譯器一般會有預編譯的過程對程式碼進行最佳化.因為編譯只做一次,執行時不需要編譯,所以編譯型語言的程式執行效率高。可以脫離語言環境獨立運作。
缺點:編譯之後如果需要修改就需要整個模組重新編譯。編譯的時候會根據對應的運行環境產生機器碼,不同的作業系統之間移植就會有問題,需要根據執行的作業系統環境編譯不同的執行檔。

解釋型
優點:有良好的平台相容性,在任何環境中都可以運行,前提是安裝了解釋器(虛擬機器)。靈活,修改程式碼的時候直接修改就可以,可以快速部署,不用停機維護。

缺點:每次執行的時候都要解釋一遍,效能上不如編譯型語言。

 

python是一門動態解釋性的強型別定義語言

 

五、Python的優缺點
先看優點:
1、Python的定位是「優雅」、「明確」、「簡單」,所以Python程式看起來總是簡單易懂,初學者學Python,不但入門容易,而且將來深入下去,可以寫那些非常非常複雜的程式。
2、開發效率非常高,Python有非常強大的第三方庫,基本上你想透過電腦實現任何功能,Python官方庫裡都有相應的模組進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大幅降低開發週期,避免重複造輪子。
3、高階語言-當你用Python語言寫程式的時候,你無需考慮諸如如何管理你的程式所使用的記憶體一類的底層細節。
4、可移植性-由於它的開源本質,Python以及被移植到許多平台上(經過改動使它能夠工作在不同平台上)。如果你小心的避免使用依賴系統的特性,那麼你的Python程式無需修改就幾乎可以在市場上所有的系統平台上運作。
5、可擴充性-如果你需要你的一段關鍵程式碼運行得更快或希望某些演算法不公開,你可以把你的部分程式用C或C++編寫,然後在你的Python程式中使用它們。
6、可嵌入性——你可以把Python嵌入你的C/C++程序,從而向你的程式使用者提供腳步功能。
再看缺點:
1、速度慢,Python的運行速度相比C語言確實慢很多,跟Java相比也要慢一些,因此這是很多所謂的大牛不屑於使用Python的主要原因,但其實這裡所指的運作速度慢在大多數情況下使用者是無法直接感知到的,必須藉助測試工具才能體現出來!
2、程式碼不能加密,因為Python是解釋性語言,它的源碼都是以明文形式存放的,不過我不認為這算是一個缺點,如果你的專案原始碼必須是加密的,那你一開始就不應該用Python來去實現。
3、線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是電腦程式設計語言解釋器用於同步線程的工具,使得任何時刻僅有一個執行緒在執行,Python的執行緒是作業系統的原生執行緒。在Linux上為pthread,在windows上為Win thread,完全由作業系統調度執行緒的執行。一個Python解釋器程序內有一條主線路,以及多條用戶程式的執行緒。即使在多核心CPU平台上,由於GIL的存在,所以禁止執行緒的並行執行。關於這個問題的折衷解決方法,我們在以後線程和進程章節裡再進行詳細探討。

六、Python解釋器

當我們寫Python程式碼時,我們得到的是一個包含Python程式碼的以.py為擴展名的文字檔。要運行程式碼,就需要Python解釋器去執行.py檔。

由於整個Python語言從規範到解釋器都是開源的,所以理論上,只要水平夠高,任何人都可以編寫Python解釋器來執行Python程式碼(當然難度很高)。事實上,確實存在多種Python解釋器。

CPython
官方下載並安裝號碼Python2.7後,我們就直接取得了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,所以叫CPython。
CPython是使用最廣範的Python解釋器。我們預設所有程式碼也都在CPython下執行。


IPython是基於CPython的一個互動式解釋器,也就是說,IPython只是在互動方式上有所增強,但是執行Python程式碼的功能和CPython是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但核心其實都是呼叫了IE。

CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。

PyPy 據說是Python的未來,開發者也說想讓你的Python程式碼區塊用這個解釋器。
PyPy是另一個Python解釋器,它的目標是執行速度。 PyPy採用JIT技術,對Python程式碼進行動態編譯(注意不是解釋),所以可以顯著提高Python程式碼的執行速度。
絕大部分Python程式碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python程式碼在兩種解釋器下執行可能會有不同的結果。如果你的程式碼要放到PyPy下執行,就需要了解PyPy和CPython的不同點。

Jython
Jython是運行在Java平台上的Python解釋器,可以直接把Python程式碼編譯成Java字節碼執行。

IronPython
IronPython和Jython類似,只不過IronPython是運行在微軟.Net平台上的Python解釋器,可以直接把Python程式碼編譯成.Net的字節碼。

小結:Python的解釋器很多,但使用最廣泛的還是CPython。如果要和Java或.Net平台交互,最好 辦法不是用Jython或IronPython,而是透過網路呼叫來交互,確保各程式之間的獨立性。

 七、用Python2還是Python3

官方的建議是盡快升級到Python3,而且Python3有很多新功能,新特性,所以除非有一些業務是用Python2寫的,一般建議用Python3。

Python3.0還有一個比較大的功能沒有完成,那就是Twisted ,這是一個非常龐大的系統工程,預計最近應該快完成了吧,敬請期待吧!

八、Python安裝

windows

1、下載安裝套件

2、安裝
最新版win7及以後系統,預設安裝路徑:C:\Users\Administrator\AppData\Local\Programs\Python\Python36\
3、設定環境變數
   【右鍵計算機】--》【屬性】--》【進階系統設定】--》【進階】--》【環境變數】--」【在第二個內容方塊中找到變數名為Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用; 分割】
   如:原來的值;C:\Users\Administrator\AppData\Local\Programs\Python\Python36\,切記前面有分號

# linux、Mac

不用安裝,原廠Python環境,只要更新一下版本就可以了!

 

九、變數/字元編碼  

變數是什麼?

簡單的說,變數就是一個標籤用來說明記憶體上的空間位址的。宣告變數的過程就是向記憶體申請一塊空間用來存放資料的過程。

 

宣告變數


#_*_coding:utf-8_*_

name = "Alex Li"

#上述程式碼宣告了一個變量,變數名稱為:name,變數name的值為:"Alex Li" 

變數定義的規則:

①變數名稱只能是字母、數字或底線的任意組合
②變數名稱的第一個字元不能是數字
③以下關鍵字不能宣告為變數名稱
['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']

變數的賦值

name = "Alex Li"

name2 = name
#print(name,name2)
##name = "Jack"

print("What is the value of name2 now?")

變數名盡量有意義,讓人能一眼就知道這個變數表示什麼意思。


如果要表示一個關係型的變數名,一般的寫法是:gf_of_oldboy = "Chen da hua"
GFOfOldboy = "Chen da hua"
Python裡面沒有定義常數這麼個概念,但是習慣上是用大寫字串表示常數例如:
PIE = 3.1415926

保留欄位不能使用,盡量不要用中文名和拼音做變數名,這樣會顯得很low。


字元編碼的差異與介紹

在Python2.X版本裡面,不能直接使用中文,要使用必須事先宣告:

# -*- coding:utf-8 -*-
name = "你好,世界"
print(name)

Python程式碼新增註解的方法:
1、直接在以#開頭即表示註解。
2、多行註釋,在要註釋的程式碼前後行使用三個【'''】或【"""】把要註釋的內容放進去就可以了。

另外,【''''】或【"""】包含的內容可以作為一個整體賦值個一個變數來處理。 範例:

msg = '''

gf_of_oldboy = "wang da hua"
GFOfOldboy = "Chen rong feng"
'''

##print(gf_of_oldboy,GFOfOldboy)

print(msg)

#執行結果:

gf_of_oldboy = "wang da hua"

GFOfOldboy = "Chen rong feng"


另外需要說明的是,

單引號和雙引號的作用和shell中類似,單引號表示強引用,雙引號表示弱引用。 #


使用者互動程式
格式化輸出指定內容:
方法一:++表示法
name = input("Name:")
age = input("Age: ")
job = input("Job:")
salary = input("Salry:")

info = '''
---------- --------------- info of ''' + name +'''------------------------ ---------------
Name:''' + name + '''
Age:''' + age + '''
Job:'' ' + job + '''
Salary:''' + salary + '''
------------------------ info of ''' + name + '''---------------------------------------
'''
print(info)

方法二:佔位符表示法

name = input("Name:")
#age = input("Age :")
age = int(input("Age:"))
print(type(age),type(str(age))) #這裡會印出age的資料型別,然後再轉換成字串後來又列印出資料型,為了驗證上面的轉換是否生效
job = input("Job:")
salary = input("Salry:")

info2 = """
------------------------------ info of %s -------------- -------------------------------
Name:%s
Age:%s        #這裡可以使用% d指定只能輸入整數,而非預設字串,但要在輸入時強制轉換資料型別,否則會報錯。 ----------------------------- info end %s ----------------- ----------------------------
"""" %(name,name,age,job,salary,name)

print(info2)

方法三:{}表示法

name = input("Name:")

age = input("Age:")

job = input("Job:")

salary = input("Salry:")

info3 = """
----------------- ------------- info of {_name} -------------------------------- -------------
Name:{_name}

Age:{_age}

Job:{_job}
Salary:{_salary}
-- --------------------------- info end {_name} ------------------ ---------------------------
""" .format(_name=name,
     _age=age,
_job=job,
     _salary=salary)

print(info3)

方法四:是方法三的引申,用數字代表特定變數

info4 = " ""

------------------------------ info of {0} ---------- -----------------------------------

Name:{0}

Age:{1 }

Job:{2}
Salary:{3}
----------------------------- info end {0} ---------------------------------------------
""" .format(name,age,job,salary)

print(info4)

注意:

##除非迫不得已,否則盡量不要用,因為太耗內存,其他方法則好的多。 法一可以和法二、法三、法四混用,但是法二、法三、法四不能混用。
十、模組初識

  

#Python的強大之處在於他有非常豐富和強大的標準庫和第三方庫,幾乎你想實現的任何功能都有相應的Python庫支持,以後的課程中會深入講解常用到的各種庫,現在,我們先來象徵性的學2個簡單的。 sys模組

#!/usr/bin/env python

# -*- coding: utf-8 -*-

import sys


print(sys.argv)


#輸出
$ python test.py helo world
['test.py', 'helo', 'world']  #把執行腳本時傳遞的參數取得到了
  

os模組


##!/usr/bin/env python

# -*- coding: utf-8 -* -

import os


os.system("df -h") #呼叫系統指令
完全結合


import os,sys

os.system(''.join(sys.argv[1:])) #把使用者的輸入的參數當作一條指令交給os.system來執行

 

 

十一、選擇表達式if ... else


#!/usr/bin/env python# -*- coding:utf-8 -*-#Author:Bill Xieimport getpass

_username = "xiaoxie"

_password = "123456"
username = input( "username:")
password = input("password:")
#password = getpass.getpass("password:")
if _username == username and _password == password:
   print ("Welcome user %s login."%(username))
else:
   print("Invalid username or password!")



#注意事項:



1、Python程式碼是嚴格要求語法縮寫的,如果不注意就會報錯,縮排錯誤###IndentationError: expected an indented block###

學習 Python 與其他語言最大的區別就是,Python 的程式碼區塊不使用大括號 {} 來控制類,函數以及其他邏輯判斷。 python 最有特色的就是用縮寫來寫模組。縮排的空白數量是可變的,但是所有程式碼區塊語句必須包含相同的縮排空白數量,這個必須嚴格執行。

IndentationError: unexpected indent 錯誤是python 編譯器是在告訴你"Hi,老兄,你的文件裡格式不對了,可能是tab和空格沒對齊的問題",所有python 對格式要求非常嚴格。
如果是 IndentationError: unindent does not match any outer indentation level錯誤表明,你使用的縮進方式不一致,有的是 tab 鍵縮進,有的是空格縮進,改為一致即可。
因此,在 Python 的程式碼區塊中必須使用相同數目的行首縮排空格數。
建議你在每個縮排層次使用單一製表符或兩個空格或四個空格, 切記不能混用

2、這裡的列印輸出命令內使用了變數引用,這裡說說兩種變數引用的方式。

① 和上面註解那裡提到的方式類似,先使用%s佔位符,然後再指明佔位符要使用的變數。
print("Welcome user %s login."%(username))
②使用花括號{}引用
#print ("Welcome user {_username} login." .format(_username=username))
print("Welcome user {0} login." .format(username)) #與上方類似,只不過是用數字取代第幾個要替換的變數。

十二、循環本體
猜數遊戲:

#!/usr/bin/env python
# - *- coding:utf-8 -*-
#Author:Bill Xie
age_of_oldboy = 29
guess_age = int(input("Guess oldboy's age:"))
if guess_age == age_of_oldboy:
   print("You got it.")
elif guess_age > age_of_oldboy:
   print("Think smaller...")
else:
   print("Think biggerger... ")

引出循環的說明:

while循環語法:

  while 條件:
   循環體
  esle: #可以沒有這個
   循環體

for循環語法:

  for i in range(開始數,結束數,步長):
#    循環體
  else #可以沒有沒有

 

   循環體

 #未完,待更新。 。 。 。

 
# ######

以上是詳解介紹Python的發展起源及基礎知識的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板