關於Python的幾點疑惑

來源:互聯網
上載者:User

標籤:python   物件導向   解釋型   測試   文法   

一、python是什嗎?

  Python(英語發音:/?pa?θ?n/), 是一種物件導向、解釋型電腦程式設計語言,由Guido van Rossum於1989年底發明,第一個公開發行版發行於1991年 。Python文法簡潔而清晰,具有豐富和強大的類庫。它常被暱稱為膠水語言,能夠把用其他語言製作的各種模組很輕鬆地連接在一起。根據其實現方法的不同,可分為:CPython(預設用C實現),Jython,IronPython,PyPy等等。

  1、python是解釋型語言而非編譯型語言:將源碼轉換成位元組碼,之後再解釋這些位元組碼,執行之。

解釋型語言:程式不需要編譯,程式在運行時才翻譯成機器語言,每執 行一次都要翻譯一次。因此效率比較低。比如Basic語言,專門有一個解譯器能夠直接執行Basic程 序,每個語句都是執行的時候才翻譯。
編譯型語言:程式在執行之前需要一個專門的編譯過程,把程式編譯成 為機器語言的檔案,運行時不需要重新翻譯,直接使用編譯的結果就行了。程式執行效率高,依賴編譯器,跨平台性差些。如C、C++、Delphi等

編譯型與解釋型,兩者各有利弊
前者由於程式執行速度快,同等條件下對系統要求較低,因此像開發作業系統、大型應用程式、資料庫系統等時都採用它,像C/C++、Pascal/Object Pascal(Delphi)等都是編譯語言,而一些網頁指令碼、伺服器指令碼及輔助開發介面這樣的對速度要求不高、對不同系統平台間的相容性有一定要求的程式則通常使用解釋性語言,如JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。

  2、為什麼有那麼多python實現?
  
  前面也提到,CPython是最通用的,是一個用C實現的,被認為是”預設“的實現。但其他的呢?其中最顯赫的之一就是Jython,一個用Java實現的採用了JVM的實現。CPython中很容易為你的Python代碼寫C擴充,因為最終都是由C解譯器執行的。另一方面,Jython則使得和其他java程式共同工作很容 易:無需其他工作,你就可匯入任何Java類,在你的Jython程式中使用其他Java類。IronPython是另一很流行的Python 實現,完全用C#實現,針對.NET平台。她運行在可以叫做.NET虛擬機器的平台上,這是微軟的 Common Language Runtime (CLR),同JVM相對應。

二、為什麼要使用Python?1、開發效率高

Python是一門開發效率最高的語言,它比C有6倍的開發效率,簡單來說,如果一個C開發人員工作6天,使用Python的開發人員只需要工作一天即可,意味著做Python開發人員可一周只上一天班。它比C++有2倍的開發效率,它比Java和C#也有1.5倍的開發效率。有這麼高的開發效率,當然是用效能換來的代價,不過從目前硬體技術進步來看,目前的CPU計算能力普遍是過剩的,並且越來越多硬體成本降低,但人工的成本越來越貴。其實從社會進步來看,也是工具越來越先進,但人的大腦管理複雜程度並沒有跟著提高,顯然要提高起來就比較困難了。

2、調試運行方便

無論是在Windows平台,還是Linux平台,都一樣開發和調試。跨平台運行更加方便,如果沒有使用平台差別的API介面,只要寫一遍代碼,就可以在Windows平台或Linux平台上運行。

3、開源免費

Python無論在商業上,還是教育上,都是免費使用,意味可以零成本進入學習它,使用它。Python擁有眾多功能完善的開發庫可以使用。

4、測試領域需求

測試是軟體開發裡有相當大的工作量,比如模組測試,當開發人員把一個模組功能完成之後,需要測試這個模組是否正確,就需要搭建一堆測試代碼,才可以驗證的。這時,如果使用C++或Java來寫這些功能,顯然沒有使用Python來得快,從前面效率就可以看到。因此,通常就會變成這樣的開發模式:發布的軟體是使用C++或Java開發,但測試的代碼使用Python來開發。比如嵌入式系統涉及網路通訊方面,需要不斷地向嵌入式系統發送網路資料和接收網路資料,就可以使用Python搭建一個測試環境出來,這樣花費很少的時間,就可以對嵌入式系統進行驗證,提高代碼的品質,減少嵌入式系統與其它系統的調試時間,以及以後維護時間。另外,通過使用Python語言編寫眾多的指令碼,就可以提高自動化測試水平,每發布一個版本,就可以把以前的測試案例,全自動化測試一遍,這樣會大大提高對軟體快速發布的要求。像我所見過的測試案例,就有幾萬個,如果靠手工方式測試,驗證起來是非常慢的,並且並不全面。目前採用全自動化測試之後,每天24小時運行,一台電腦相當於10個測試員工的工作量,可見帶來多大效率的提升。在可以預見的將來,在測試領域裡,Python的工作需求會持續增加,要求所有測試人員都會掌握這個好用的工具。
 

三、Python 應用領域有哪些?

  Python 不僅僅是一個設計優秀的程式語言,它能夠完成現實中的各種任務,包括開發人員們日複一日所做的事情。作為編製其他組件、實現獨立程式的工具,它通常應用於各種領域。實際上,作為一種通用語言,Python 的應用角色幾乎是無限的:你可以在任何場合應用Python, 從網站和遊戲開發到機器人和太空梭控制。
  
  主要應用領域包括:系統編程,使用者圖形介面,Internet 指令碼,組件整合,資料庫編程,快速原型,數值計算和科學計算編程,遊戲、映像、人工智慧、XML 、機器人等。 
  
  詳見:http://blog.163.com/myhome_2/blog/static/28595817201311259355568/ 

四、Python文法有什麼獨特之處? 1、基本概念

A、數
在Python中有4種類型的數——整數、長整數、浮點數和複數。
(1)2是一個整數的例子。
(2)長整數不過是大一些的整數。
(2)3.23和52.3E-4是浮點數的例子。E標記表示10的冪。在這裡,52.3E-4表示52.3 * 10-4。
(4)(-5+4j)和(2.3-4.6j)是複數的例子。

B、字串
(1)使用單引號(’)
(2)使用雙引號(”)
(3)使用三引號(”’或”“”)
利用三引號,你可以指示一個多行的字串。你可以在三引號中自由的使用單引號和雙引號。例如:

‘‘‘This is a multi-line string. This is the first line.This is the second line."What‘s your name?," I asked.He said "Bond, James Bond."‘‘‘

(4)轉義符
(5)自然字串
自然字串通過給字串加上首碼r或R來指定。例如r”Newlines are indicated by \n”。

C、邏輯行與物理行
一個物理行中使用多於一個邏輯行,需要使用分號(;)來特別地標明這種用法。一個物理行只有一個邏輯行可不用分號

2、資料結構

A、列表

shoplist = [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]print ‘I have‘, len(shoplist),‘items to purchase.‘print ‘These items are:‘, # Notice the comma at end of the linefor item in shoplist:  print item,print ‘\nI also have to buy rice.‘shoplist.append(‘rice‘)print ‘My shopping list is now‘, shoplistprint ‘I will sort my list now‘shoplist.sort()print ‘Sorted shopping list is‘, shoplistprint ‘The first item I will buy is‘, shoplist[0]olditem = shoplist[0]del shoplist[0]print ‘I bought the‘, olditemprint ‘My shopping list is now‘, shoplist

B、元組
元組和列表十分類似,只不過元組和字串一樣是不可變的即你不能修改元組。

zoo = (‘wolf‘, ‘elephant‘, ‘penguin‘)print ‘Number of animals in the zoo is‘, len(zoo)new_zoo = (‘monkey‘, ‘dolphin‘, zoo)print ‘Number of animals in the new zoo is‘, len(new_zoo)print ‘All animals in new zoo are‘, new_zooprint ‘Animals brought from old zoo are‘, new_zoo[2]print ‘Last animal brought from old zoo is‘, new_zoo[2][2]

像一棵樹
元組與列印

age = 22name = ‘Swaroop‘print ‘%s is %d years old‘ % (name, age)print ‘Why is %s playing with that python?‘ % name

C、字典
類似雜湊

ab = {    ‘Swaroop‘  : ‘[email protected]‘,       ‘Larry‘   : ‘[email protected]‘,       ‘Matsumoto‘ : ‘[email protected]‘,       ‘Spammer‘  : ‘[email protected]‘   }print "Swaroop‘s address is %s" % ab[‘Swaroop‘]# Adding a key/value pairab[‘Guido‘] = ‘[email protected]‘# Deleting a key/value pairdel ab[‘Spammer‘]print ‘\nThere are %d contacts in the address-book\n‘ % len(ab)for name, address in ab.items():  print ‘Contact %s at %s‘ % (name, address)if ‘Guido‘ in ab: # OR ab.has_key(‘Guido‘)  print "\nGuido‘s address is %s" % ab[‘Guido‘]

D、序列
列表、元組和字串都是序列。序列的兩個主要特點是索引操作符和切片操作符。

shoplist = [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]# Indexing or ‘Subscription‘ operationprint ‘Item 0 is‘, shoplist[0]print ‘Item 1 is‘, shoplist[1]print ‘Item -1 is‘, shoplist[-1]print ‘Item -2 is‘, shoplist[-2]# Slicing on a listprint ‘Item 1 to 3 is‘, shoplist[1:3]print ‘Item 2 to end is‘, shoplist[2:]print ‘Item 1 to -1 is‘, shoplist[1:-1]print ‘Item start to end is‘, shoplist[:]# Slicing on a stringname = ‘swaroop‘print ‘characters 1 to 3 is‘, name[1:3]print ‘characters 2 to end is‘, name[2:]print ‘characters 1 to -1 is‘, name[1:-1]print ‘characters start to end is‘, name[:]

E、參考
當你建立一個對象並給它賦一個變數的時候,這個變數僅僅參考那個對象,而不是表示這個對象本身!也就是說,變數名指向你電腦中儲存那個對象的記憶體。這被稱作名稱到對象的綁定。

print ‘Simple Assignment‘shoplist = [‘apple‘, ‘mango‘, ‘carrot‘, ‘banana‘]mylist = shoplist # mylist is just another name pointing to the same object!del shoplist[0]print ‘shoplist is‘, shoplistprint ‘mylist is‘, mylist# notice that both shoplist and mylist both print the same list without# the ‘apple‘ confirming that they point to the same objectprint ‘Copy by making a full slice‘mylist = shoplist[:] # make a copy by doing a full slicedel mylist[0] # remove first itemprint ‘shoplist is‘, shoplistprint ‘mylist is‘, mylist# notice that now the two lists are different

F、字串

name = ‘Swaroop‘ # This is a string objectif name.startswith(‘Swa‘):  print ‘Yes, the string starts with "Swa"‘if ‘a‘ in name:  print ‘Yes, it contains the string "a"‘if name.find(‘war‘) != -1:  print ‘Yes, it contains the string "war"‘delimiter = ‘_*_‘mylist = [‘Brazil‘, ‘Russia‘, ‘India‘, ‘China‘]print delimiter.join(mylist)  //用delimiter來串連mylist的字元

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

關於Python的幾點疑惑

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.