編程語言主要從以下幾個角度為進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每個分類代表什麼意思呢,我們一起來看一下。
2.1 編譯型與解釋型。
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;
而解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的.
這是因為計算機不能直接認識並執行我們寫的語句,它只能認識機器語言(是二進制的形式)
編譯型
優點:編譯器一般會有預編譯的過程對代碼進行優化。因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執行效率高。可以脫離語言環境獨立運行。
缺點:編譯之後如果需要修改就需要整個模塊重新編譯。編譯的時候根據對應的運行環境生成機器碼,不同的操作系統之間移植就會有問題,需要根據運行的操作系統環境編
解釋型
優點:有良好的平台兼容性,在任何環境中都可以運行,前提是安裝了解釋器(虛擬機)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
2.2動態語言和靜態語言
通常我們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。
(1)動態類型語言:動態類型語言是指在運行期間才去做數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變數指定數據類型,該語言會在你第一次賦值給變數時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其他的各種腳本語言如VBScript也多少屬於動態類型語言。
(2)靜態類型語言:靜態類型語言與動態類型語言剛好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明所有變數的數據類型,C/C++是靜態類型語言的典型代表,其他的靜態類型語言還有C#、java等。
2.3強類型定義語言和弱類型定義語言
(1)強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變數被指定了某個數據類型,如果不經過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:如果你定義了一個整型變數a,那麼程序根本不可能將a當作字元串類型處理。強類型定義語言是類型安全的語言。
(2)弱類型定義語言:數據類型可以被忽略的語言。它與強類型定義語言相反, 一個變數可以賦不同數據類型的值。
強類型定義語言在速度上可能略遜色於弱類型定義語言,但是強類型定義語言帶來的嚴謹性能夠有效的避免許多錯誤。另外,"這門語言是不是動態語言」與"這門語言是否類型安全」之間是完全沒有聯系的!
例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。
通過上面這些介紹,我們可以得出,python是一門動態解釋性的強類型定義語言。
❷ python是解釋型語言嗎
是的,Python是解釋型編程語言,同時Python還是編譯型、動靜態、強弱定義類型的編程語言。
❸ Python 相比 Java的優勢是什麼缺點又是什麼
Python相比Java的優勢如下:
1. Python作為動態語言更適合初學編程者。Python可以讓初學者把精力集中在編程對象和思維方法上,而不用去擔心語法、類型等等外在因素。而Python清晰簡潔的語法也使得它調試起來比Java簡單的多。
2. Python有一些Java沒有的強大的架構,可以表達非常復雜的邏輯
3. Python有非常強大的支持非同步的框架如Eventlet Networking Library,而據Java要實現這些功能就復雜的多。因此Python適合一些可擴展的後台應用。
2. Python作為腳本語言,更適合開發小的應用,而且極其適合在應用發展初期時用來做原型
缺點如下:
1. 由於Python是動態語言,比Java還執行效率低下。python是弱類型語言,編譯的時候要check 類型的。
2.何可以運行Java虛擬機的電腦或者移動設備都可以運行Java的應用,而不管在哪裡運行Python的程序都需要一個編譯器來將Python代碼轉化為特定的操作系統可理解的代碼。
❹ python需要編譯么
一個經常聽見的問題,那就是:Python是解釋型的語言嗎?它會被編譯嗎?這個問題沒有想像中那麼好回答。和很多人認識世界一樣,習慣以一個簡單的模型去評判一些事物。而事實上,裡麵包含了很多很多的細節。
通常的說法,編譯代表著將一個高級語言轉化為 CPU 能執行的機器碼。當你編譯 C 的時候,的確是做的這樣的操作。編譯的結果是一個二進制可執行文件,這時你的系統可直接運行這個程序。
與此相對的,解釋的意思是這樣的:程序運行時每次讀源文件中的一行代碼,並執行相應的操作,就這樣一行一行的重復下去。當然,所謂的腳本語言就是這么運行的。
但事實上,上面的定義有太多的局限。一門真正的語言,為了擁有更多有用和強大的特性,通常採用了各種各樣的實現方式。我們可以將編譯理解為更通用一些:將一種語言轉化為另一種語言形式。通常來說,源語言比目標語言要更高級一些,比如將 C 轉化為機器碼。當然,JavaScript 8 到 JavaScript 5 的轉化也算是一種編譯。
在Python中,源代碼會被編譯為更低級的一種形式,我們稱之為位元組碼。位元組碼是一串指令,和 CPU 的指令集類似。但是位元組碼並不直接被 CPU 執行,而是在虛擬機中執行的。當然,這里的虛擬機並不模仿整個操作系統的環境,只是提供了位元組碼執行的一個環境。
下面我們看 Python 的一小段代碼以及它對應的位元組碼
看了位元組碼的內容後,我們就知道 f'...' 這種格式化字元串的形式的運行原理,就是將裡面的字元串轉化為一系列的字面字元串與變數,然後使用 + 號連接起來。
dis 是 Python 標准庫中反匯編模塊,它可以展示 Python 代碼的位元組碼信息。上面提到的執行位元組碼的虛擬機,可以用任意的語言實現,包括 Python 自己。有興趣的可以去 GitHub 上看下這個項目 nedbat/byterun 。這個項目可以用來學習,但不適用於生產環境。
不過,我們運行 Python 時完全感受不到它的編譯過程,沒有顯示的調用什麼編譯程序,僅僅是簡單的執行 .py 文件,編譯都是需要時自動編譯的。這和 JAVA 不同,當你每次寫完 JAVA 代碼要執行時,都要手動將其編譯為 .class 文件,然後執行。也正是這個原因,JAVA 被稱為編譯型語言,而 Python 被叫做解釋型語言。但事實上,兩種語言執行時都會先編譯成位元組碼,然後交給虛擬機執行。
Python還有一個重要的特性,就是互動式命令行。你可以敲入一行 Python 語句,然後立刻回車執行。實際上,即使是這個過程,Python 同樣是先轉為位元組碼,然後執行。而這個互動式命令行這個特性,在很多編譯型語言里是沒有的。同樣因為沒有顯示的調用編譯程序,很多人將執行Python源文件的程序叫做Python解釋器。
即使比較簡略,但還是補充下。部分編譯型語言比如 C 或者 JAVA 也有互動式命令行,但這些並不是這些語言的重心。JAVA 剛開始是編譯成位元組碼然後執行,後面有了即時編譯技術( JIT )可以直接編譯成機器碼,與 C 類似。
從上面的描述可以看出,不管是解釋還是編譯,並沒法完全分離開來。很多時候,我們想用一些詞將現有的編程語言分個類,但事實上要辦到這一點太難了。
最後要說明的是,你的代碼是怎麼執行的只是語言的實現問題,並非語言的特徵。上文中,我們討論的是 Python ,但實際上是 CPython 的描述。CPython 是一個解釋器,之所以這么叫,是因為這個解釋器是用 C 編寫的,這也是 Python 默認的解釋器。當然還有其它很多解釋器,比如,PyPy 就是另一種解釋器,使用了 JIT 技術,運行速度相比 CPython 有較大提升。
回到標題中的問題,Python之所以稱為解釋型語言,是因為它沒有顯示的調用編譯操作,表現出解釋型的特性比較多而已。但事實上,編譯是存在的,具體怎麼編譯就看語言的實現了,也就是解釋器的設計。
更多Python相關技術文章,請訪問Python教程欄目進行學習!以上就是小編分享的關於python需要編譯么的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!
❺ python是強類型語言嗎
Python是弱類型。。。。說Python是強類型的,完全是在忽悠人。
網上常常出現說Python是強類型的說法:由於 "1"+1 會報錯,所以Python是強類型。。
完全是扯淡。。。JAVA,C#輸入"1"+1,都會輸出"11"。。。難道JAVA和C#都是弱類型?JAVASCRIPT輸入"1"+1會報錯,難道JS卻成了強類型?
判斷一門語言是不是強類型。。。例子應該如此:
java的例子(強類型):
int a=1;
a="1"; //報錯
C#的例子(強類型):
int a=1;
a="1"; //報錯
JS的例子(弱類型):
var a=1;
a="1" ;//不報錯
PHP的例子(弱類型):
$a=1;
a="1"; //不報錯
所以,Python顯然是弱類型。
❻ python是動態語言,是不是弱類型語言
不是。python是強類型語言,一個變數不經過強制轉換,它永遠是這個數據類型,不允許隱式的類型轉換。
例如:1+"2" 在python中會報錯,因為一個數字,一個是字元串,python是強類型語言,不會默認進行轉換,所以報錯。
❼ python是解釋性語言還是編譯型語言
先說結論,python 是解釋性語言。
何為編譯?
1、生成目標文件。
2、且目標文件是針對特定的 CPU 體系的,為ARM生成的目標文件,不能被用於MIPS的CPU,也不能用於x86的CPU。反過來說也是成立的。
也就是說這段代碼在生成目標文件的過錯中就已經被翻譯成了目標CPU指令,所以如果這個程序需要在另外一種CPU上面運行,這個代碼就必須重新翻譯。
而上述這個翻譯過程叫做編譯。
何為解釋?
對於各種非編譯型語言(例如python/java)來說,可能不存在某種翻譯成中間文件的過錯,可能存在某種編譯成中間文件的過程
如果存在翻譯過錯,那麼他們翻譯生成的通常是一種『平台無關』的中間代碼,這種代碼一般不是針對特定的CPU平台,他們是在運行過程中才被翻譯成目標CPU指令的,因而在ARM CPU上能執行,換到MIPS也能執行,換到x86也能執行,不需要重新對源代碼進行翻譯。
而由於這些中間代碼並不是能在CPU上直接運行,所以需要某種中介(叫做虛擬機)在執行時負責把代碼翻譯成CPU能執行的指令。
❽ C語言和python兩種語言有什麼區別
C是編譯語言
Python是解釋語言
這個是最大區別
其它區別基本都是基於這個的
除此外,c是面向過程的,py是面向對象的
大多數時候c做底層,py做上層,但這個並非絕對
其實應該找他倆一樣的地方,不一樣的地方實在太多啦
❾ python是什麼樣的編程語言
python是什麼編程的高級語言?
Python是一種面相對象、解釋型的計算機程序語言,並已成為學習數據科學、虛擬現實和人工智慧的首選編程語言,其設計哲學是「優雅」,「明確」,「簡單」。易上手,及時反饋的特點成了很多入門編程世界的首選。同時Python也是一種相當高級的語言,擁有豐富和強大的第三庫,可引用各種模塊並很輕松的連接在一起。眾多社交網站如Reddit, 豆瓣,知乎,Dropbox, YouTube,果殼等都是由Python完成。
最初對python的印象是在紀錄片《互聯網之子》中Aaron Swartz從MIT的圖書館截取的那些文件資料用的程序就是用python寫的,當時對python心生盪漾,但很快就灰飛煙滅,因為沒有後續聯接和交集。
個把月前我看到一個python基礎班,當時還不知道Python是什麼樣的編程語言(即使到現在也還不完全了解Python具體可以做啥),從哪裡來要去哪裡,完全不了解的情況下按了報名鍵。我自認為的優點是盡力為自己的行為買單,且只能是默默的,不可讓一時沖動太聲張,也不能恬不知恥的說那是epiphany,而是盡量去探詢已成事實的一二。
培訓班不上課,沒有講義和資料,只分配任務和引導卡片,剛開始也會心有戚戚焉,在白紙上亂畫我還得知道怎麼握筆呢,可是在鍵盤上亂敲肯定不會有驚喜,錯誤提示都看不懂,別說去修Bug。程序裝了卸,卸了裝,操作也是胡亂使用添加,電腦最終無法忍受這樣的主就自動癱瘓裝死,只得我重裝系統又如獲新生,也算如實貫徹了打小的信念「生命在於折騰」。厚著臉皮長大的人是天生被上帝眷顧著的,基本不會心生『不好意思』的念頭,不懂就問同學嘛!一個不行換另一個,哪怕被認為問了「愚蠢」的問題。匍匐著向前,只要方向對了,那也是進步吧!
就像學外語著得把身處周圍的環境變數調整過來,讓自己置身在那個世界中去感受和徜徉,身上細胞的張合大小,呼吸的進出頻率也慢慢跟上節奏。除了Python本家,編譯程序(Windows上我使用Atom, MAC使用TextWrangler)和運行終端(Windows PowerShell 或Terminal)外,接觸最多的就是 Github, Google 還有新歡Markdown (MOU)。
——-Github 是世界上最大的代碼存放網站和開源社區,副名是:最大的同性交友網站,因其界面設計很容易對號入座。盡管那原是Geek的天地,如今越來越多的其他門派弟子也加入其中,大家都帶著靈敏的嗅覺,看哪好就往裡鑽。他是協作項目最好的實現平台,支持異地,不同電腦的項目更新,特別是不同動作之前的區別和個別動靜的比較清晰可見,操作人性化。很多人在上面寫書,協作翻譯,項目管理、設計資料庫、科研項目數據及個人簡歷都放上面,還有人把自己的健身記錄也放上面。據說有公司招聘還需要看應聘者的github賬號。最最重要的是一切都是免費,只要你想。(盡管有收費的,那是針對個別私人想要數據保密的公司)。之前在別處看到github這個詞就當是熟悉的陌生人,熟悉「github"這6個字母組成的單詞,但完全不知道那是什麼樣的世界。現只是輕輕推移了那扇門,門縫里漏出的光都覺足夠耀眼並思忖著想探尋更多。
-——Google 本不需要多提,原來也是每天在使用。可Google貌似與Python有真感情,每次搜索打Python開頭的關鍵字,出來的第一條結果往往就是正確答案且出自Google自家,比Python的官方文件還顯情真意切。
-——Markdown 人稱寫作神奇,是我刻意關注並想收入囊中的工具,想讓她陪伴著我寫下去,目前還有待開發。
如他程序Python基本命令零容錯,標點符號,大小字母,縮進都有嚴格的規定,更別提邏輯關系,循環迭代,有一處不對就報錯。對小白來說修Bug的時間會比寫程序的時間還長,修復一個bug,報出新的bug已經算是一種進步了。在編程時,若習慣了這些嚴苛的標准到不是非常難,錯一次磕一下頭,同一個錯多犯幾次,就多磕幾次,即使擦破頭皮反正不至於亡命天涯,總歸能牢記於心。當從程序世界抽離自己回到現實世界,真感覺對待其他事是不是太隨意了。至少我打這些文字的時候根本沒注意「的」和「地」的區別,逗號和句號看心情而定,習慣了新段落前不空兩格。工作中仔細的程度沒法用尺衡量,也不會有程序直接報錯,免不了能略就略,可以將就過去就不願多費心思,短期可能沒有意外,總歸長久不了,埋下的地基是作為將來向上的支撐。自從學習編程以來,已開始反思,雖還沒改進多少,可像顆釘子被扎著總覺不適,不時提醒自己。
作為一門高級語言,靈活性和包容性對第三方庫有著無限的吸引力。據說C++用200行命令,Java的40行而Python只需20行可實現同樣的功能。雖然基本命令的嚴苛像個固執的老學究,但若掌握了要領,成了武林高手,各種技巧靈活運用,自由發揮,蓋世武功盡情發揮。只要有本事,任你翻雲覆雨,去到『風所到達的地方』。
Python的一大特點是代碼只在命令運行時才會被檢查執行,即使隱藏了錯誤,若沒運行到,永遠發現不了。很像身體或任何世間體制內的事,大家只關心呵護眼見為實,真實的隱藏只被激發時才被注意到。為了掃清後顧之憂,我們使用『及時反饋』策略,就是碼幾行程序,馬上print出來,看效果如何,而不是等敲完所有的程序,才發現一團亂麻卻不知如何進行手術。這是平時學習很好借鑒的地方,走一段路得停一下檢查是不是在正確的道上,一方面可及時調整姿態,重要的是用小小的可見成果作為的漫漫前方道路的鼓勵。
如果我的回答對您有所幫助,記得點亮採納哦,謝謝啦!
❿ python是一種什麼類型語言
Python是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言;
Python的設計具有很強的可讀性,相比其他語言經常使用英文關鍵字,其他語言的一些標點符號,它具有比其他語言更有特色語法結構;
Python是一種解釋型語言,意味著開發過程中沒有了編譯這個環節,類似於PHP和Perl語言;
Python是互動式語言,意味著你可以在一個Python提示符>>>後直接執行代碼;
Python是面向對象語言,意味著Python支持面向對象的風格或代碼封裝在對象的編程技術;
Python是初學者首選的語言,Python對初級程序員而言,是一種偉大的編程語言,它支持廣泛的應用程序開發,從簡單的文字處理到WWW瀏覽器再到游戲,無所不能。