Python基礎

来源:http://www.cnblogs.com/daem/archive/2017/11/15/7837668.html
-Advertisement-
Play Games

1.1 Python語言介紹 1.1.1 什麼是編程?為什麼要編程 編程 是個動詞,編程==寫代碼,寫代碼為了什麼? 為了讓電腦乾你想要乾的事情,比如,馬化騰想跟別人聊天,於是寫了個聊天軟體,這個軟體就是一堆代碼的集合,這些代碼是什麼?這些代碼是電腦能理解的語言。 例子:你是公司老闆,你有一個員 ...


1.1 Python語言介紹

1.1.1 什麼是編程?為什麼要編程

  編程 是個動詞,編程==寫代碼,寫代碼為了什麼? 為了讓電腦乾你想要乾的事情,比如,馬化騰想跟別人聊天,於是寫了個聊天軟體,這個軟體就是一堆代碼的集合,這些代碼是什麼?這些代碼是電腦能理解的語言。

  例子:你是公司老闆,你有一個員工是中國人,你讓他幹活,就得說中文,還有一個員工是美國人,讓他幹活,就得說英文,你還有一條狗,讓他聽話,你就得汪汪汪。。。,那現在你有臺電腦,讓它幹活,就得用它能理解的語言。

  那計算能理解的語言是什麼呢? 之前,我們已經瞭解到,它只能理解2進位,0101010...,你總不能人肉輸一堆二進位給電腦(雖然最原始的電腦就是這麼乾的)讓它工作吧,這樣開發速度太慢了。所以最好的辦法就是人輸入簡單的指令,電腦能把指令轉成二進位進行執行,舉例如下:

    假如 程式員想讓電腦 播放一首 歌曲 , 只需要輸入指令

1 open "小蘋果.mp3"
3 play

    電腦的CPU接收到這樣的指令後,會把它轉成一堆 只有cpu可以理解的指令,然後再將指令變成各種對應的如下類似二進位

1 [  op  |  rs |  rt | address/immediate]
3    35     3     8           68           decimal
5  100011 00011 01000 00000 00001 000100   binary

最終cpu 去調用你的硬碟上這首歌,通過音箱播放。

上面cpu那段指令太難理解了,如果讓你天天寫這樣的代碼,大家非得自殺不可。還好,偉大的電腦先驅們,開發了各種編程語言,讓我們只需要通過寫一些簡單的規則,就能操作電腦工作啦

1.1.2 有哪些編程語言?

編程語言總體分以為機器語言、彙編語言、高級語言,如下

1.1.2.1  機器語言

  由於電腦內部只能接受二進位代碼,因此,用二進位代碼0和1描述的指令稱為機器指令,全部機器指令的集合構成電腦的機器語言,用機器語言編程的程式稱為目標程式。只有目標程式才能被電腦直接識別和執行。但是機器語言編寫的程式無明顯特征,難以記憶,不便閱讀和書寫,且依賴於具體機種,局限性很大,機器語言屬於低級語言。

  用機器語言編寫程式,編程人員要首先熟記所用電腦的全部指令代碼和代碼的涵義。手編程式時,程式員得自己處理每條指令和每一數據的存儲分配和輸入輸出,還得記住編程過程中每步所使用的工作單元處在何種狀態。這是一件十分繁瑣的工作。編寫程式花費的時間往往是實際運行時間的幾十倍或幾百倍。而且,編出的程式全是些0和1的指令代碼,直觀性差,還容易出錯。除了電腦生產廠家的專業人員外,絕大多數的程式員已經不再去學習機器語言了。

  機器語言是微處理器理解和使用的,用於控制它的操作二進位代碼。

  儘管機器語言好像是很複雜的,然而它是有規律的。

  存在著多至100000種機器語言的指令。這意味著不能把這些種類全部列出來。

以下是一些示例:

指令部份的示例:

 

 1 0000 代表 載入(LOAD)
 2 0001 代表 存儲(STORE)
 3 ...
 4 暫存器部份的示例
 5 0000 代表暫存器 A
 6 0001 代表暫存器 B
 7 ...
 8 存儲器部份的示例
 9 000000000000 代表地址為 0 的存儲器
10 000000000001 代表地址為 1 的存儲器
11 000000010000 代表地址為 16 的存儲器
12 100000000000 代表地址為 2^11 的存儲器
13 集成示例
14 0000,0000,000000010000 代表 LOAD A, 16
15 0000,0001,000000000001 代表 LOAD B, 1
16 0001,0001,000000010000 代表 STORE B, 16
17 0001,0001,000000000001 代表 STORE B, 1[1]

 

1.1.2.2  彙編語言

  彙編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。彙編程式的每一句指令只能對應實際操作過程中的一個很細微的動作。例如移動、自增,因此彙編源程式一般比較冗長、複雜、容易出錯,而且使用彙編語言編程需要有更多的電腦專業知識,但彙編語言的優點也是顯而易見的,用彙編語言所能完成的操作不是一般高級語言所能夠實現的,而且源程式經彙編生成的可執行文件不僅比較小,而且執行速度很快。

  彙編的hello world,列印一句hello world, 需要寫十多行。

 

 1 ; hello.asm 
 2 section .data            ; 數據段聲明
 3         msg db "Hello, world!", 0xA     ; 要輸出的字元串
 4         len equ $ - msg                 ; 字串長度
 5 section .text            ; 代碼段聲明
 6 global _start            ; 指定入口函數
 7 _start:                  ; 在屏幕上顯示一個字元串
 8         mov edx, len     ; 參數三:字元串長度
 9         mov ecx, msg     ; 參數二:要顯示的字元串
10         mov ebx, 1       ; 參數一:文件描述符(stdout) 
11         mov eax, 4       ; 系統調用號(sys_write) 
12         int 0x80         ; 調用內核功能
13                          ; 退出程式
14         mov ebx, 0       ; 參數一:退出代碼
15         mov eax, 1       ; 系統調用號(sys_exit) 
16         int 0x80         ; 調用內核功能

 

 

 

1.1.2.3  高級語言

  高級語言是大多數編程者的選擇。和彙編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程式中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。

  高級語言主要是相對於彙編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,像最簡單的編程語言PASCAL語言也屬於高級語言。

  高級語言所編製的程式不能直接被電腦識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:

1.1.2.4  編譯類

  編譯是指在應用源程式執行之前,就將程式源代碼“翻譯”成目標代碼(機器語言),因此其目標程式可以脫離其語言環境獨立執行(編譯後生成的可執行文件,是cpu可以理解的2進位的機器碼組成的),使用比較方便、效率較高。但應用程式一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .obj,也就是OBJ文件)才能執行,只有目標文件而沒有源代碼,修改很不方便。

 

  編譯後程式運行時不需要重新翻譯,直接使用編譯的結果就行了。程式執行效率高,依賴編譯器,跨平臺性差些。如C、C++、Delphi等

1.1.2.5  解釋類

  執行方式類似於我們日常生活中的“同聲翻譯”,應用程式源代碼一邊由相應語言的解釋器“翻譯”成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程式不能脫離其解釋器(想運行,必須先裝上解釋器,就像跟老外說話,必須有翻譯在場),但這種方式比較靈活,可以動態地調整、修改應用程式。如Python、Java、PHP、Ruby等語言。

1.2 總結

  • 機器語言

          優點是最底層,速度最快,缺點是最複雜,開發效率最低

  • 彙編語言

          優點是比較底層,速度最快,缺點是複雜,開發效率最低

  • 高級語言

          編譯型語言執行速度快,不依賴語言環境運行,跨平臺差

          解釋型跨平臺好,一份代碼,到處使用,缺點是執行速度慢,依賴解釋器運行

1.3 主流編程語言介紹

1.3.1 編程語言排名

  世界上的編程語言有600多種,但真正大家主流在使用的最多二三十種,不同的語言有自己的特點和擅長領域,隨著電腦的不斷發展,新語言在不斷誕生,也同時有很多老舊的語言慢慢無人用了。有個權威的語言排名網站,可以看到主流的編程語言是哪些

排名查看地址:(2017年11月數據)https://www.tiobe.com/tiobe-index/

 

 

長期語言排名

 

1.3.2 幾個主流的編程語言:

  • C語言:

          C語言是一種電腦程式設計語言,它既具有高級語言的特點,又具有彙編語言的特點。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已先後被移植到大、中、小及微型機上,它可以作為工作系統設計語言,編寫系統應用程式,也可以作為應用程式設計語言,編寫不依賴電腦硬體的應用程式。它的應用範圍廣泛,具備很強的數據處理能力,不僅僅是在軟體開發上,而且各類科研都需要用到C語言,適於編寫系統軟體,三維,二維圖形和動畫,具體應用比如單片機以及嵌入式系統開發。

  • C++:

          C++是C語言的繼承的擴展,它既可以進行C語言的過程化程式設計,又可以進行以抽象數據類型為特點的基於對象的程式設計,還可以進行以繼承和多態為特點的面向對象的程式設計。C++擅長面向對象程式設計的同時,還可以進行基於過程的程式設計,因而C++就適應的問題規模而論,大小由之。

         C++不僅擁有電腦高效運行的實用性特征,同時還致力於提高大規模程式的編程質量與程式設計語言的問題描述能力。

  • JAVA:

         Java是一種可以撰寫跨平臺應用軟體的面向對象的程式設計語言,是由Sun Microsystems公司於1995年5月推出的Java程式設計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具有卓越的通用性、高效性、平臺移植性和安全性,廣泛應用於個人PC、數據中心、游戲控制台、科學超級電腦、行動電話和互聯網,同時擁有全球最大的開發者專業社群。在全球雲計算和移動互聯網的產業環境下,Java更具備了顯著優勢和廣闊前景。

  •  PHP:

           PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本預處理器”)是一種通用開源腳本語言。語法吸收了C語言、Java和Perl的特點,利於學習,使用廣泛,主要適用於Web開發領域。

  • Ruby:

          Ruby 是開源的,在Web 上免費提供,但需要一個許可證。[4]

          Ruby 是一種通用的、解釋的編程語言。

          Ruby 是一種真正的面向對象編程語言。

          Ruby 是一種類似於 Python 和 Perl 的伺服器端腳本語言。

          Ruby 可以用來編寫通用網關介面(CGI)腳本。

          Ruby 可以被嵌入到超文本標記語言(HTML)。

          Ruby 語法簡單,這使得新的開發人員能夠快速輕鬆地學習 Ruby

  • GO:

          Go 是一個開源的編程語言,它能讓構造簡單、可靠且高效的軟體變得容易。

          Go是從2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候發佈了Go 1穩定版本。現在Go的開發已經是完全開放的,並且擁有一個活躍的社區。

          由其擅長併發編程

  • 1.3.2.7  Python:

           Python是一門優秀的綜合語言, Python的宗旨是簡明、優雅、強大,在人工智慧、雲計算、金融分析、大數據開發、WEB開發、自動化運維、測試等方嚮應用廣泛,已是全球第4大最流行的語言。

 


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

-Advertisement-
Play Games
更多相關文章
  • Parallel Programming-實現並行操作的流水線(生產者、消費者) ...
  • 原文鏈接:http://www.mono-project.com/news/2017/11/13/mono-interpreter/ Mono即將通過它的JIT編譯器和靜態編譯器以及一個.net解釋器以帶來一些新的方式來運行你的代碼. 在2001年Mono項目誕生之時,我們為.net指令集實現了一個 ...
  • 返回總目錄 四、Long Parameter List(過長參數列) 太長的參數列難以理解,太多參數會造成前後不一致、不易使用。 1、一般情況來說,如果參數多於3個,就可以考慮使用對象了。將函數所需要的參數封裝在一個新類中,將這個類當做參數。 2、如果方法的參數數目不定,且參數類型一致,也可以使用p ...
  • 開發環境:VS2017 資料庫:SQL 2012 本文是學習EF的第一篇筆記,參考lloydsheng的帖子實踐,總結記錄。 一、創建項目 先創建一個空白的解決方案,後續關於EF入門筆記基於此項目完成 。 二、安裝 使用NuGet下載安裝EntityFramework到項目中,如果不會使用NuGet... ...
  • 總結一下.NET的編譯過程, 一般的高級編程語言會把代碼編譯成機器碼,也就是我們說的非托管代碼,執行在編譯它的電腦上。 而.NET編譯代碼的時候會把高級編程語言編譯成中間語言 運行在CLR(公共語言運行庫)上,也就是把代碼集成一個exe文件中, .NET 在編譯過程中 沒有直接編譯成CPU認識的代碼 ...
  • 首先要設置主窗體KeyPreview為true,可直接在屬性中進行設置,或者在窗體載入中設置: this.KeyPreview = true;然後添加窗體KeyDown事件,如下: ...
  • <!DOCTYPE html><html> <head> <meta charset="utf-8"> </head></html><?php/** * Created by 陳藝赫. * User: Vvvvv * Date: 2017/10/9 * Time: 9:01 *///面向對象//什麼 ...
  • ngrok的使用 1、下載Tomcat並啟動。 2、訪問本地Tomcat,代表啟動Tomcat成功。 3、到https://ngrok.com下載ngrok. 4、下載存放的目錄。 5、命令行進入到該目錄,執行 ngrok http 8080 。 8080是Tomcat預設的埠號。 6、之後就可映 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...