廖老師的Python教程——Python簡介

来源:https://www.cnblogs.com/baojianxin/archive/2018/07/10/9291982.html
-Advertisement-
Play Games

一直想瞭解下Python,今兒在外面辦事排隊的時候,打開了廖老師的官網,找到了Python教程。雖然只是一篇關於Python的簡介,但是通過將Python的特性與C進行對比,很生動地歸納了Python的一些特性。因為之前花過時間學習C,所以能夠很容易地體會到Python的特性。上學期通過廖老師的教程 ...


  一直想瞭解下Python,今兒在外面辦事排隊的時候,打開了廖老師的官網,找到了Python教程。雖然只是一篇關於Python的簡介,但是通過將Python的特性與C進行對比,很生動地歸納了Python的一些特性。因為之前花過時間學習C,所以能夠很容易地體會Python的特性。上學期通過廖老師的教程順利掌握了Git,所以再次遇到廖老師的教程,忍不住要收藏一下。會在廖老師的教程中用紅色字體插入批註或對知識點進行標識。


   首先,普及一下編程語言的基礎知識。用任何編程語言來開發程式,都是為了讓電腦幹活,比如下載一個MP3,編寫一個文檔等等,而電腦幹活的CPU只認識機器指令,所以,儘管不同的編程語言差異極大,最後都得“翻譯”成CPU可以執行的機器指令。而不同的編程語言,乾同一個活,編寫的代碼量,差距也很大。

  比如,完成同一個任務,C語言要寫1000行代碼,Java只需要寫100行,而Python可能只要20行。

  所以Python是一種相當高級的語言。

  那麼是不是代碼越少越好呢?代碼少的代價是運行速度慢,C程式運行1秒鐘,Java程式可能需要2秒,而Python程式可能就需要10秒。

  那是不是越低級的程式越難學,越高級的程式越簡單?錶面上來說,是的,但是,在非常高的抽象計算中,高級的Python程式設計也是非常難學的,所以,高級程式語言不等於簡單。


  Python是著名的“龜叔”Guido van Rossum在1989年聖誕節期間,為了打發無聊的聖誕節而編寫的一個編程語言。

  現在,全世界差不多有600多種編程語言,但流行的編程語言也就那麼20來種。如果你聽說過TIOBE排行榜,你就能知道編程語言的大致流行程度。這是最近10年最常用的10種編程語言的變化圖:

                      

  總的來說,這幾種編程語言各有千秋。C語言是可以用來編寫操作系統的貼近硬體的語言,所以,C語言適合開發那些追求運行速度、充分發揮硬體性能的程式。而Python是用來編寫應用程式的高級編程語言。

  當你用一種語言開始作真正的軟體開發時,你除了編寫代碼外,還需要很多基本的已經寫好的現成的東西,來幫助你加快開發進度。比如說,要編寫一個電子郵件客戶端,如果先從最底層開始編寫網路協議相關的代碼,那估計一年半載也開發不出來。高級編程語言通常都會提供一個比較完善的基礎代碼庫,讓你能直接調用,比如,針對電子郵件協議的SMTP庫,針對桌面環境的GUI庫,在這些已有的代碼庫的基礎上開發,一個電子郵件客戶端幾天就能開發出來。  

  Python就為我們提供了非常完善的基礎代碼庫,覆蓋了網路、文件、GUI、資料庫、文本等大量內容,被形象地稱作“內置電池(batteries included)”。用Python開發,許多功能不必從零編寫,直接使用現成的即可。除了內置的庫外,Python還有大量的第三方庫,也就是別人開發的,供你直接使用的東西。當然,如果你開發的代碼通過很好的封裝,也可以作為第三方庫給別人使用。

  許多大型網站就是用Python開發的,例如YouTube、Instagram,還有國內的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美國航空航天局)都大量地使用Python。

  龜叔給Python的定位是“優雅”、“明確”、“簡單”,所以Python程式看上去總是簡單易懂。初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程式。

  總的來說,Python的哲學就是簡單優雅,儘量寫容易看明白的代碼,儘量寫少的代碼。如果一個資深程式員向你炫耀他寫的晦澀難懂、動不動就幾萬行的代碼,你可以盡情地嘲笑他。

  那Python適合開發哪些類型的應用呢?首選是網路應用,包括網站、後臺服務等等;其次是許多日常需要的小工具,包括系統管理員需要的腳本任務等等;另外就是把其他語言開發的程式再包裝起來,方便使用。

  最後說說Python的缺點。

  任何編程語言都有缺點,Python也不例外。優點說過了,那Python有哪些缺點呢?

  第一個缺點就是運行速度慢,和C程式相比非常慢,因為Python是解釋型語言,你的代碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而C程式是運行前直接編譯成CPU能執行的機器碼,所以非常快。

  但是大量的應用程式不需要這麼快的運行速度,因為用戶根本感覺不出來。例如開發一個下載MP3的網路應用程式,C程式的運行時間需要0.001秒,而Python程式的運行時間需要0.1秒,慢了100倍,但由於網路更慢,需要等待1秒,你想,用戶能感覺到1.001秒和1.1秒的區別嗎?這就好比F1賽車和普通的計程車在北京三環路上行駛的道理一樣,雖然F1賽車理論時速高達400公裡,但由於三環路堵車的時速只有20公裡,因此,作為乘客,你感覺的時速永遠是20公裡。

  第二個缺點就是代碼不能加密。如果要發佈你的Python程式,實際上就是發佈源代碼,這一點跟C語言不同,C語言不用發佈源代碼,只需要把編譯後的機器碼(也就是你在Windows上常見的xxx.exe文件)發佈出去。要從機器碼反推出C代碼是不可能的,所以,凡是編譯型的語言,都沒有這個問題,而解釋型的語言,則必須把源碼發佈出去。

  這個缺點僅限於你要編寫的軟體需要賣給別人掙錢的時候。好消息是目前的互聯網時代,靠賣軟體授權的商業模式越來越少了,靠網站和移動應用賣服務的模式越來越多了,後一種模式不需要把源碼給別人。

  再說了,現在如火如荼的開源運動和互聯網自由開放的精神是一致的,互聯網上有無數非常優秀的像Linux一樣的開源代碼,我們千萬不要高估自己寫的代碼真的有非常大的“商業價值”。那些大公司的代碼不願意開放的更重要的原因是代碼寫得太爛了,一旦開源,就沒人敢用他們的產品了。

  當然,Python還有其他若幹小缺點,請自行忽略,就不一一列舉了。


 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近開始學習SpringCloud,在此把我學習的過程記錄起來,跟大家分享一下,一起學習。想學習SpringCloud的同學趕快上車吧。 本次學習使用得SpringBoot版本為2.0.3.RELEASE,SpringCloud版本為Finchley.RELEASE 創建父Maven工程 首先我們創 ...
  • 在我的理解中,面向對象就是一種萬物皆對象的編程思想,就是把現實世界中所有的事物都當做對象來看待,而每一個對象可以看成是一個事物的實例,面向對象是以對象為中心,以消息為驅動,所以程式=對象+消息; 面向對象有三大特征:封裝 繼承 多態 封裝:將屬性和行為抽象成一個類,將其屬性私有化,行為公開化,提高了 ...
  • 搭建WEB項目過程中,哪些點需要註意: 1、技術選型: 前端:freemarker、vue 後端:spring boot、spring mvc 2、如何包裝返回統一結構結果數據? 首先要弄清楚為什麼要包裝統一結構結果數據,這是因為當任意的ajax請求超時或者越權操作時,系統能返回統一的錯誤信息給到前 ...
  • Object類和常用的API 學習過程中的筆記,涉及到Objetc中的equals方法和toString方法,日期類Date,日曆類Calendar,日期格式化類SimpleDateFormat以及基本數據類型和封裝類的拆箱和裝箱,還有String與基本數據類型的轉換.有錯誤還望諒解 Object類 ...
  • https://blog.csdn.net/zhushanzhi/article/details/77864516 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 [java] view plain copy package test; i ...
  • 目的 : 加強類與對象的記憶體分配理解,加強操作能力、理解數據結構。 結構 : 數據元素之間的關係。 數據結構 : 帶有結構的數據對象。 線性結構: 各數據元素之間的邏輯以用一個線性序列簡單的表達出現。反之為非線性結構。 按邏輯結構分為 : 線性結構與非線性結構。 線性結構包括:線性表-數組(順序表) ...
  • Python學習之路—2018/7/10 博客開發項目流程 ​ 一般來說,一個項目的開發流程分為:項目需求、設計表結構、功能開發、測試功能、產品上線,本次學習以博客園為藍本進行開發。 1.項目需求 博客的開發的需求主要有以下幾點: 基於auth模塊和Ajax實現登錄驗證 基於forms組件和Ajax ...
  • 因為Python是跨平臺的,它可以運行在Windows、Mac和各種Linux/Unix系統上。在Windows上寫Python程式,放到Linux上也是能夠運行的。 要開始學習Python編程,首先要把Python安裝到電腦里。安裝後,可以得到Python解釋器(就是負責運行Python程式的), ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...