python介紹、安裝及相關語法、python運維、編譯與解釋

来源:https://www.cnblogs.com/addswanmei/archive/2019/07/15/11191841.html
-Advertisement-
Play Games

1.python介紹 Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/)是一種廣泛使用的解釋型、高級編程、通用型編程語言,由吉多、範羅蘇姆創造,第一版發佈於1991年。可以視之為一種改良(加入一些其他編程語言的優點,如面向對象)的lisp。Python的設計哲學強調代碼的可 ...


1.python介紹 

  Python英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/)是一種廣泛使用的解釋型高級編程通用型編程語言,由吉多、範羅蘇姆創造,第一版發佈於1991年。可以視之為一種改良(加入一些其他編程語言的優點,如面向對象)的lisp。Python的設計哲學強調代碼的可讀性和簡潔的語法(尤其是使用空格縮進劃分代碼塊,而非使用大括弧或者關鍵詞)。相比於C++或Java,Python讓開發者能夠用更少的代碼表達想法。不管是小型還是大型程式,該語言都試圖讓程式的結構清晰明瞭。與Scheme、Ruby、Perl、Tcl等動態類型編程語言一樣,Python擁有動態類型系統垃圾回收功能,能夠自動管理記憶體使用,並且支持多種編程範式,包括面向對象、命令式、函數式和過程式編程。其本身擁有一個巨大而廣泛的標準庫。

2.python特點

  優點

    簡單:Python是一種代表簡單主義思想的語言。閱讀一個良好的Python程式就感覺像是在讀英語一樣。它使你能夠專註於解決問題而不是去搞明白語言本身。

    易學:Python極其容易上手,因為Python有極其簡單的說明文檔 [7]  。     速度快:Python 的底層是用 C 語言寫的,很多標準庫和第三方庫也都是用 C 寫的,運行速度非常快。 [4]      免費、開源:Python是FLOSS(自由/開放源碼軟體)之一。使用者可以自由地發佈這個軟體的拷貝、閱讀它的源代碼、對它做改動、把它的一部分用於新的自由軟體中。FLOSS是基於一個團體分享知識的概念。     高層語言:用Python語言編寫程式的時候無需考慮諸如如何管理你的程式使用的記憶體一類的底層細節。     可移植性:由於它的開源本質,Python已經被移植在許多平臺上(經過改動使它能夠工作在不同平臺上)。這些平臺包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基於linux開發的android平臺。     解釋性:一個用編譯性語言比如C或C++寫的程式可以從源文件(即C或C++語言)轉換到一個你的電腦使用的語言(二進位代碼,即0和1)。這個過程通過編譯器和不同的標記、選項完成。運行程式的時候,連接/轉載器軟體把你的程式從硬碟複製到記憶體中並且運行。而Python語言寫的程式不需要編譯成二進位代碼。你可以直接從源代碼運行 程式。在電腦內部,Python解釋器把源代碼轉換成稱為位元組碼的中間形式,然後再把它翻譯成電腦使用的機器語言並運行。這使得使用Python更加簡單。也使得Python程式更加易於移植。     面向對象:Python既支持面向過程的編程也支持面向對象的編程。在“面向過程”的語言中,程式是由過程或僅僅是可重用代碼的函數構建起來的。在“面向對象”的語言中,程式是由數據和功能組合而成的對象構建起來的。     可擴展性:如果需要一段關鍵代碼運行得更快或者希望某些演算法不公開,可以部分程式用C或C++編寫,然後在Python程式中使用它們。     可嵌入性:可以把Python嵌入C/C++程式,從而向程式用戶提供腳本功能。     豐富的庫:Python標準庫確實很龐大。它可以幫助處理各種工作,包括正則表達式、文檔生成、單元測試、線程、資料庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統、GUI(圖形用戶界面)、Tk和其他與系統有關的操作。這被稱作Python的“功能齊全”理念。除了標準庫以外,還有許多其他高質量的庫,如wxPython、Twisted和Python圖像庫等等。     規範的代碼:Python採用強制縮進的方式使得代碼具有較好可讀性。而Python語言寫的程式不需要編譯成二進位代碼。     缺點    單行語句和命令行輸出問題:很多時候不能將程式連寫成一行,如import sys;for i in sys.path:print i。而perl和awk就無此限制,可以較為方便的在shell下完成簡單程式,不需要如Python一樣,必須將程式寫入一個.py文件。     獨特的語法:這也許不應該被稱為局限,但是它用縮進來區分語句關係的方式還是給很多初學者帶來了困惑。即便是很有經驗的Python程式員,也可能陷入陷阱當中。     運行速度慢:這裡是指與C和C++相比。 3.windows下安裝python相關環境     python官網:https://www.python.org/     進入官網,下載對應版本的python。下載好後,雙擊運行。

兩種選擇,第一種系統選擇;第二種自動,將勾選添加環境變數,就後續不用繼續添加。next。

然後選擇install安裝。安裝完成後先不要關閉,點擊disable……同意是。

    安裝集成開發環境PyCharm

PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系統。PyCharm 功能 : 調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制……

PyCharm下載地址https://www.jetbrains.com/pycharm/download/#section=windows

選擇社區版,進行下載。下載好後,直接運行安裝。

選擇相應的安裝目錄,next

 

finish。雙擊運行。在Complete Installation處選擇Do not import settings,ok。至此安裝完成。

4.linux下開發環境搭建

    上傳並解壓對應版本安裝包:tar xvf Python-3.7.3.tar.xz

    安裝python3

    yum install gcc gcc-c++ make zlib* -y

    yum install libffi-devel -y

    cd 進入解壓後的Python所在的目錄中

    ./configure --prefix=/usr/bin/local/python3

    make && make install

    配置執行文件路徑

    cd /usr/bin

    mv /usr/bin/python /usr/bin/pythonbak

     ln -fs /usr/local/python3/bin/python3 /usr/bin/python3

     修改yum配置

     vim  /usr/bin/yum,在第一行後面的python後加上2

     vim /usr/libexec/urlgrabber-ext-down,同上

5.虛擬環境搭建

     什麼是python虛擬環境?

    通俗的來講,虛擬環境就是從電腦獨立開闢出來的環境,相當於一個副本或備份,在這個環境你可以安裝私有包,而且不會影響系統中安裝的全局Python解釋器。

   為什麼要用虛擬環境?

     在實際項目開發中,我們通常會根據自己的需求去下載各種相應的框架庫,如Scrapy、Beautiful Soup等,但是可能每個項目使用的框架庫並不一樣,或使用框架的版本不一樣,這樣需要我們根據需求不斷的更新或卸載相應的庫。直接懟我們的Python環境操作會讓我們的開發環境和項目造成很多不必要的麻煩,管理也相當混亂。如以下場景:

   場景1:項目A需要某個框架1.0版本,項目B需要這個庫的2.0版本。如果沒有安裝虛擬環境,那麼當你使用這兩個項目時,你就需要來回的卸載安裝了,這樣很容易就給你的項目帶來莫名的錯誤;

   場景2:公司之前的項目需要python2.7環境下運行,而你接手的項目需要在python3環境中運行,想想就應該知道,如果不使用虛擬環境,這這兩個項目可能無法同時使用,使用python3則公司之前的項目可能無法運行,反正則新項目運行有麻煩。而如果虛擬環境可以分別為這兩個項目配置不同的運行環境,這樣兩個項目就可以同時運行。

       windows下安裝

   運行cmd,輸入pip install virtualenv。如果版本環境出現問題,嘗試輸入python -m pip install --upgrade pip。出現successful,表示成功。

   新建虛擬環境

   virtualenv scrapytest (沒有報錯,顯示done成功,然後在c盤對應的文件下查看是否創建成功)

   virtualenv -p C:……(此處為安裝python的位置,包含其啟動執行文件) scrapytest(此為剛創建的虛擬環境的名字)

   運行為:cd 進入到之前創建的虛擬環境的目錄下activate.bat,結束為deactivate.bat

       linux安裝

   yum install python-virtualenv

   virtualenv py2

   virtualenv -p /usr/local/bin/python3 py3

   cd 進入創建的py2

   source activate

   deactivate

 6.基本語法

    控制語句    if語句,當條件成立時運行語句塊。經常與else, elif(相當於else if) 配合使用。      for語句,遍歷列表、字元串、字典、集合等迭代器,依次處理迭代器中的每個元素。    while語句,當條件為真時,迴圈運行語句塊。    try語句,與except,finally配合使用處理在程式運行中出現的異常情況。    class語句,用於定義類型。    def語句,用於定義函數和類型的方法。    pass語句,表示此行為空,不運行任何操作。    assert語句,用於程式調試階段時測試運行條件是否滿足。    with語句,Python2.6以後定義的語法,在一個場景中運行語句塊。比如,運行語句塊前加密,然後在語句塊運行退出後解密。    yield語句,在迭代器函數內使用,用於返回一個元素。自從Python 2.5版本以後。這個語句變成一個運算符。    raise語句,製造一個錯誤。    import語句,導入一個模塊或包。    from import語句,從包導入模塊或從模塊導入某個對象。    import as語句,將導入的對象賦值給一個變數。    in語句,判斷一個對象是否在一個字元串/列表/元組裡。    表達式    主要的算術運算符與C/C++類似。+, -, *, /, //, **, ~, %分別表示加法或者取正、減法或者取負、乘法、除法、整除、乘方、取補、取餘。>>, <<表示右移和左移。&, |, ^表示二進位的AND, OR, XOR運算。>, <, ==, !=, <=, >=用於比較兩個表達式的值,分別表示大於、小於、等於、不等於、小於等於、大於等於。在這些運算符裡面,~, |, ^, &, <<, >>必須應用於整數。      模塊     概念    python中的模塊是什麼?簡而言之,在python中,一個文件(以“.py”為尾碼名的文件)就叫做一個模塊,每一個模塊在python里都被看做是一個獨立的文件。模塊可以被項目中的其他模塊、一些腳本甚至是互動式的解析器所使用,它可以被其他程式引用,從而使用該模塊里的函數等功能,使用Python中的標準庫也是採用這種方法。    分類

在Python中模塊分為以下幾種:

   系統內置模塊,例如:sys、time、json模塊等等;

   自定義模塊,自定義模塊是自己寫的模塊,對某段邏輯或某些函數進行封裝後供其他函數調用。註意:自定義模塊的命名一定不能和系統內置的模塊重名了,否則將不能再導入系統的內置模塊了。例如:自定義了一個sys.py模塊後,再想使用系統的sys模塊是不能使用的;

   第三方的開源模塊:這部分模塊可以通過pip install進行安裝,有開源的代碼;

   執行過程

   Python在執行時,首先會將.py文件中的源代碼編譯成Python的byte code(位元組碼),然後再由Python Virtual Machine(Python虛擬機)來執行這些編譯好的byte code。這種機制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更高級的Virtual Machine。這裡的高級並不是通常意義上的高級,不是說Python的Virtual Machine比Java或.NET的功能更強大,而是說和Java 或.NET相比,Python的Virtual Machine距離真實機器的距離更遠。或者可以這麼說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。基於C的Python編譯出的位元組碼文件,通常是.pyc格式。除此之外,Python還可以以交互模式運行,比如主流操作系統Unix/Linux、Mac、Windows都可以直接在命令模式下直接運行Python交互環境。直接下達操作指令即可實現交互操作。

   編譯與解釋的關係

   首先,我們編程都是用的高級語言(寫彙編和機器語言的大牛們除外),電腦不能直接理解高級語言,只能理解和運行機器語言,所以必須要把高級語言翻譯成機器語言,電腦才能運行高級語言所編寫的程式。翻譯的方式有兩種,一個是編譯,一個是解釋。兩種方式只是翻譯的時間不同。

   編譯型語言   寫的程式執行之前,需要一個專門的編譯過程,通過編譯系統(不僅僅只是通過編譯器,編譯器只是編譯系統的一部分)把高級語言翻譯成機器語言,把源高級程式編譯成為機器語言文件。以後就可以直接運行而不需要編譯了,因為翻譯只做了一次,運行時不需要翻譯,所以編譯型語言的程式執行效率高,但也不能一概而論,部分解釋型語言的解釋器通過在運行時動態優化代碼,甚至能夠使解釋型語言的性能超過編譯型語言。

   解釋型語言  寫的程式不需要編譯。解釋型語言在運行的時候才翻譯,比如VB語言,在執行的時候,專門有一個解釋器能夠將VB語言翻譯成機器語言,每個語句都是執行的時候才翻譯。這樣解釋型語言每執行一次就要翻譯一次,效率比較低。

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

 

  

 


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

-Advertisement-
Play Games
更多相關文章
  • 一、基本簡介 1、基礎概念 在矩陣中,若數值為0的元素數目遠遠多於非0元素的數目,並且非0元素分佈沒有規律時,則稱該矩陣為稀疏矩陣;與之相反,若非0元素數目占大多數時,則稱該矩陣為稠密矩陣。定義非零元素的總數比上矩陣所有元素的總數為矩陣的稠密度。 2、處理方式 3、圖解描述 4、五子棋場景 二、代碼 ...
  • 1.str.capitalize() 將原字元串內的首字母轉成大寫,其他部分小寫,再返回新字元串 Output: 2.str.upper() 將原字元串的字母轉為大寫 Output: 3.str.lower() 將原字元串的字母轉為小寫 Output: 4.str.swapcase() 將原字元串內 ...
  • [TOC] 上篇已經對IoC容器的設計進行了分析( "Spring源碼閱讀 IoC容器解析" ),本篇將對 經典的繼承層次圖進行詳細的分析,在心中形成一個大致的印象,以便後面一步步調試源碼的時候,不會太眼花繚亂。讓我們一步步的前進吧... 繼承層次圖概覽 使用IDEA的繼承層次工具生成如下的圖(選中 ...
  • ![](http://ww2.sinaimg.cn/large/006tNc79gy1g4r7dbwihmj30jg0a83yy.jpg) ## 前言 在日常的開發模式里,前端負責頁面和動態腳本的處理,服務端負責業務邏輯和介面的實現。當前端需要服務端提供的介面實現動態數據展示和交互時,服務端完成介面 ...
  • 1.儘量在合適的場合使用單例 使用單例可以減輕載入的負擔,縮短載入的時間,提高載入的效率,但並不是所有地方都適用於單例,簡單來說,單例主要適用於以下三個方面: 控制資源的使用,通過線程同步來控制資源的併發訪問; 控制實例的產生,以達到節約資源的目的; 控制數據共用,在不建立直接關聯的條件下,讓多個不 ...
  • 前面介紹瞭如何使用畫筆在控制項上展示圖像,可是圖像來源於磁碟圖片,無法即興繪製個性化的圖案。所幸畫筆工具Graphics不僅能夠描繪圖像,還支持繪製常見的幾何形狀,也支持繪製文本字元串,除了繪製圖像用到的drawImage方法,Graphics還有下列常見的繪圖方法:setColor:設置畫筆的顏色。 ...
  • 數組元素查找(查找指定元素第一次在數組中出現的索引): 結果: ...
  • 8.4 粘包問題 粘包問題發生的原因: 1.發送端需要等緩衝區滿才發送出去,造成粘包(發送數據時間間隔很短,數據了很小,會合到一起,產生粘包),這樣接收端,就難於分辨出來了,必須提供科學的拆包機制。 即面向流的通信是無消息保護邊界的。 2.接收方不及時接收緩衝區的包,造成多個包接收(客戶端發送了一段 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...