python之簡介及入門

来源:http://www.cnblogs.com/qtyun/archive/2017/12/03/7966145.html
-Advertisement-
Play Games

前言 為何使用Python Python 是一種效率極高的語言。與其他眾多的語言相比,實現相同功能,使用Python編寫的程式包含的代碼更少。Python的語法簡單,易上手,使用Python編寫的代碼更容易閱讀、調試和擴展。 Python使用領域也比較多。Python應用領域有:雲計算、人工智慧、大 ...


前言

為何使用Python

  Python 是一種效率極高的語言。與其他眾多的語言相比,實現相同功能,使用Python編寫的程式包含的代碼更少。Python的語法簡單,易上手,使用Python編寫的代碼更容易閱讀、調試和擴展。

  Python使用領域也比較多。Python應用領域有:雲計算、人工智慧、大數據、金融、web開發、網路編程、科學運算、GUI圖形開發、自動化運維、游戲開發、解決商業問題以及供各類有趣的公司開發內部公司等。 

1. Python 簡介

   Python的創始人是Guido van Rossum;Python的是一種開源的、解釋型語言、動態語言、強類型定義語言(類型安全的語言),即python是一門動態解釋性的強類型定義語言。

1.1 Python應用領域

  (1)雲計算。Python是雲計算最火的語言, 典型應用OpenStack。

  (2)人工智慧基於大數據分析和深度學習而發展出來的人工智慧本質上已經無法離開python的支持,目前世界優秀的人工智慧學習框架如Google的ransorFlow 、FaceBook的PyTorch以及開源社區的神經網路庫Karas等是用python實現的,甚至微軟的CNTK(認知工具包)也完全支持Python,而且微軟的Vscode都已經把Python作為第一級語言進行支持。

  (3)大數據。Python相對於其它解釋性語言最大的特點是其龐大而活躍的科學計算生態,在數據分析、交互、可視化方面有相當完善和優秀的庫(python數據分析棧:Numpy Pandas Scipy Matplotlip Ipython), 並且還形成了自己獨特的面向科學計算的Python發行版Anaconda,而且這幾年一直在快速進化和完善,對傳統的數據分析語言如R MATLAB SAS Stata形成了非常強的替代性。

  (4)WEB開發python相比php\ruby的模塊化設計,非常便於功能擴展;多年來形成了大量優秀的web開發框架,並且在不斷迭代;如目前優秀的全棧的django、框架flask,都繼承了python簡單、明確的風格,開發效率高、易維護,與自動化運維結合性好,python已經成為自動化運維平臺領域的事實標準;眾多大型網站均為Python開發,Youtube, Dropbox, 豆瓣。

  (5)系統運維Python在與操作系統結合以及管理中非常密切,目前所有linux發行版中都帶有python,且對於linux中相關的管理功能都有大量的模塊可以使用,例如目前主流的自動化配置管理工具:SaltStack Ansible(目前是RedHat的)。目前在幾乎所有互聯網公司,自動化運維的標配就是python+Django/flask,另外,在虛擬化管理方面已經是事實標準的openstack就是python實現的,所以Python是所有運維人員的必備技能。

  (6)金融量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作為動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很牛逼,生產效率遠遠高於c,c++,java,尤其擅長策略回測

  (7)圖形GUI。PyQT, WxPython,TkInter。

1.2 Python的優缺點

1.2.1 Pyhon優點

       (1)有良好的平臺相容性,在任何環境中都可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。

  (2)一旦一個變數被指定了某個數據類型,如果不經過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:如果你定義了一個整型變數a,那麼程式根本不可能將a當作字元串類型處理。強類型定義語言是類型安全的語言。  

  (3)簡單易學。特別適合初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程式。

  (4)開發效率高。Python有非常強大的第三方庫,基本上你想通過電腦實現任何功能,Python官方庫里都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大降低開發周期,避免重覆造輪子。

  (5)高級語言。當你用Python語言編寫程式的時候,你無需考慮諸如如何管理你的程式使用的記憶體一類的底層細節。

  (6)可擴展性好。如果你需要你的一段關鍵代碼運行得更快或者希望某些演算法不公開,你可以把你的部分程式用C或C++編寫,然後在你的Python程式中使用它們。

  (7)可嵌入性強。你可以把Python嵌入你的C/C++程式,從而向你的程式用戶提供腳本功能。

1.2.2 Python缺點

  (1)每次運行的時候都要解釋一遍,性能上不如編譯型語言。

  (2)速度慢。Python 的運行速度相比C語言確實慢很多,跟JAVA相比也要慢一些,因此這也是很多所謂的大牛不屑於使用Python的主要原因,但其實這裡所指的運行速度慢在大多數情況下用戶是無法直接感知到的,必須藉助測試工具才能體現出來,比如你用C運一個程式花了0.01s,用Python是0.1s,這樣C語言直接比Python快了10倍,算是非常誇張了,但是你是無法直接通過肉眼感知的,因為一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數情況下Python已經完全可以滿足你對程式速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種情況下,當然還是建議你用C去實現的。

  (3)代碼不能加密。因為PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認為這算是一個缺點,如果你的項目要求源代碼必須是加密的,那你一開始就不應該用Python來去實現。

  (4)多線程問題。這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是電腦程式設計語言解釋器用於同步線程的工具,使得任何時刻僅有一個線程在執行,Python的線程是操作系統的原生線程。在Linux上為pthread,在Windows上為Win thread,完全由操作系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程式的執行線程。即使在多核CPU平臺上,由於GIL的存在,所以禁止多線程的並行執行。

1.3 Python解釋器

  當我們編寫Python代碼時,我們得到的是一個包含Python代碼的以.py為擴展名的文本文件。要運行代碼,就需要Python解釋器去執行.py文件。由於整個Python語言從規範到解釋器都是開源的,所以理論上,只要水平夠高,任何人都可以編寫Python解釋器來執行Python代碼(當然難度很大)。事實上,確實存在多種Python解釋器。

  (1)CPython。當我們從Python官方網站下載並安裝好Python 2.7後,我們就直接獲得了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,所以叫CPython。在命令行下運行python就是啟動CPython解釋器。

CPython是使用最廣的Python解釋器。教程的所有代碼也都在CPython下執行。

  (2)IPython。IPython是基於CPython之上的一個互動式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執行Python代碼的功能和CPython是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但內核其實都是調用了IE。

CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。

  (3)PyPy。PyPy是另一個Python解釋器,它的目標是執行速度。PyPy採用JIT技術,對Python代碼進行動態編譯(註意不是解釋),所以可以顯著提高Python代碼的執行速度。絕大部分Python代碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python代碼在兩種解釋器下執行可能會有不同的結果。如果你的代碼要放到PyPy下執行,就需要瞭解PyPy和CPython的不同點。

  (4)Jython。Jython是運行在Java平臺上的Python解釋器,可以直接把Python代碼編譯成Java位元組碼執行。

  (5)IronPython。IronPython和Jython類似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,可以直接把Python代碼編譯成.Net的位元組碼。

1.4 Python的安裝

  官方網站:https://www.python.org/downloads
  官方文檔:https://docs.python.org/2.7/或https://docs.python.org/3.6/或或https://docs.python.org/3.7/等。

1.4.1 在Windows系統中安裝Python

  (1)下載安裝包。到官網下載需要安裝的Python版本,目前最新版本為Python3。

  (2)點擊執行文件進行安裝。可以自定義安裝目錄,其餘都下一步即可。

  (3)配置環境變數。為了在cmd視窗方面運行Python,請將Python的安裝路徑配置到環境變數的path中。例如:你的Python安裝的D:\Python36,那麼把D:\Python36加到path中,並且用分號“;”將其與原有的path的值。 

  (4)在cmd視窗執行python。如果出現了python提示符(>>>),就說明Windows找到了你剛安裝的Python版本。

    說明:如果安裝時勾選了“Add Python to PATH”,就不需手動再配置環境變數。

 1.4.2 編寫你的第一個Python程式

  每當我們學習一門編程語言的時候,似乎“Hello World”都是我們入門的第一個小程式。那就一起體驗這中入門儀式吧。

  由於Python2和Python3在語法上有些區別,因此,如果你安裝的是Python2,那麼在cmd視窗輸入python,回車進入python的交互器,在提示符(>>>)後輸入:print "Hello World!",如下圖所示:

  如果你安裝的是Python3,那麼在cmd視窗輸入python,回車進入python的交互器,在提示符(>>>)後輸入:print("Hello World!"),如下圖所示:

  以上是執行在終端運行Python程式,那麼怎麼保存Python代碼呢?

  每一種編程語言都有自己的尾碼標識,Python也不例外,Python的程式尾碼為“.py”。例如我們將在Python3上執行的代碼保存為:hello_world.py文件,並將其保存到H盤,那麼進入cmd視窗後,進入H盤,用命令python hello_world.py來執行這個文件,如下圖所示:

1.4.3 安裝文本編輯器

  Geany是一款簡單的文本編輯器:它易於安裝;讓你能夠直接運行幾乎所有的程式(而無需通過終端);使用不同的顏色來顯示代碼,以突出代碼語法;在終端視窗中運行代碼,讓你能夠習慣使用終端。

  下載地址:https://www.geany.org/Download/Releases

        預設安裝即可。

1.4.4 PyCharm

  PyCharm是一種Python IDE,帶有一整套可以幫助用戶在使用Python語言開發時提高其效率的工具,比如調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些高級功能,以用於支持Django框架下的專業Web開發。

  PyCharm有社區版和專業版,專業版為付費的。

  下載地址:https://www.jetbrains.com/pycharm/

  安裝,選擇自定義路徑,也可以預設安裝。

  PyCharm的使用簡介:http://blog.csdn.net/msda/article/details/38705525

 


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

-Advertisement-
Play Games
更多相關文章
  • 在PHP中,變數是$+變數名,變數名遵循標識符的命名規則,可以以字母、下劃線開頭,可以由數字、下劃線、字母組成合法的變數名。 變數聲明 ======== 所有變數在使用之前應該進行聲明,而且最好帶上註釋,雖然在PHP中可以不顯示聲明變數。聲明變數之後,可以為變數進行賦值;變數的賦值有兩種類型值賦值和 ...
  • 2017最後一個月,當全世界都是各種年度總結,獎勵的時候,IT博客圈似乎已經被人遺忘。而,那些還在半夜,加班寫博客,分享自己經驗的熱心程式猿們,依然,吭哧吭哧的寫著,為了幾個贊,為了一個留言就開心一笑,瞬間滿足。 隔壁的辦公樓里的新手百度了一下,發現了這些原創博客,順利的解決了他的問題,然後,就開心 ...
  • MVC-VC 1> 新建一個user.go控制器,其代碼如下: 2> 在路由器文件router.go中添加路由配置,其代碼如下: 3> 在views文件夾下添加2html頁面,分別為home.html,edit.html 4> Home.html頁面的代碼如下: 5>edit.html頁面如下: 6 ...
  • 慕課網實戰教程後端:1、java c++演算法與數據結構2、java Spring Boot帶前後端 漸進式開發企業級博客系統3、java Spring Boot企業微信點餐系統4、java Spring Security開發安全的REST服務5、Java Spring帶前後端開發完整電商平臺6、Ja ...
  • 在python進行像b = a這樣的賦值時,只會創建一個對a的新引用,使a的引用計數加1,而不會創建新的對象: 這樣,當引用的對象是可變對象的時候(列表,字典,可變集合等),會產生意料之外的行為: 因為a和b引用的是同一對象,改變其中一個,另外一個也會隨之改變。當我們想建立一個副本而不是引用時,可以 ...
  • 前言 上篇SSM框架環境搭建篇,演示了我們進行web開發必不可少的一些配置和準備工作,如果這方面還有疑問的地方,可以先參考上一篇“SSM框架開發web項目系列(一) 環境搭建篇”。本文主要介紹MyBatis的基礎內容,包括基本概念、開發步驟、使用實例等。說起MyBatis,工作中做過SSH/SSM相 ...
  • 簡介: 割邊和割點的定義僅限於無向圖中。我們可以通過定義以蠻力方式求解出無向圖的所有割點和割邊,但這樣的求解方式效率低。Tarjan提出了一種快速求解的方式,通過一次DFS就求解出圖中所有的割點和割邊。 歡迎探討,如有錯誤敬請指正 如需轉載,請註明出處 http://www.cnblogs.com/ ...
  • 本文涉及到的知識:Struts2超鏈接的使用、Struts遍歷List、${pageContext.request.contextPath} 不能出現在Struts2標簽中。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...