Python之路【第一篇】:Python簡介和入門

来源:https://www.cnblogs.com/hackerer/archive/2017/12/26/8120016.html
-Advertisement-
Play Games

python簡介: 一、什麼是python Python(英國發音:/ pa θ n/ 美國發音:/ pa θɑ n/),是一種面向對象、直譯式的電腦程式語言。 每一門語言都有自己的哲學: pythonde 設計哲學是:“優雅”、“明確”、“簡單” 二、python由來 1989年的聖誕節期間,吉 ...


python簡介:

一、什麼是python

Python(英國發音:/ pa θ n/ 美國發音:/ pa θɑ n/),是一種面向對象、直譯式的電腦程式語言。

每一門語言都有自己的哲學:

pythonde 設計哲學是:“優雅”、“明確”、“簡單”

二、python由來

 1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程式,作為ABC語言的一種繼承。之所以選中Python作為程式的名字,是因為他是BBC電視劇——蒙提·派森的飛行馬戲團(Monty Python‘s Flying Circus)的愛好者。

三、Python能做什麼

Web程式

Python經常被用於Web開發。比如,通過mod_wsgi模塊,Apache可以運行用Python編寫的Web程式。使用Python語言編寫的Gunicorn作為Web伺服器,也能夠運行Python語言編寫的Web程式。Python定義了WSGI(Web Server Gateway Interface)標準應用介面來協調Http伺服器與基於Python的Web程式之間的溝通。一些Web框架,如Django、Pyramid、TurboGears、Tornado、web2py、Zope、Flask等,可以讓程式員輕鬆地開發和管理複雜的Web程式。

Python對於各種網路協議的支持很完善,因此經常被用於編寫伺服器軟體、網路蠕蟲。第三方庫Twisted支持非同步線上編寫程式和多數標準的網路協議(包含客戶端和伺服器),並且提供了多種工具,被廣泛用於編寫高性能的伺服器軟體。另有gevent這個流行的第三方庫,同樣能夠支持高性能高併發的網路開發。

GUI開發

Python本身包含的Tkinter庫能夠支持簡單的GUI(Graphical User Interface)開發。但是越來越多的Python程式員選擇wxPython或者PyQt等GUI包來開發跨平臺的桌面軟體。使用它們開發的桌面軟體運行速度快,與用戶的桌面環境相契合。通過PyInstaller還能將程式發佈為獨立的安裝程式包。

操作系統

在很多操作系統里,Python是標準的系統組件。大多數Linux發佈版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在終端機下直接運行Python。有一些Linux發佈版的安裝器使用Python語言編寫,比如Ubuntu的Ubiquity安裝器、Red Hat Linux和Fedora的Anaconda安裝器。Gentoo Linux使用Python來編寫它的Portage包管理系統。Python標準庫包含了多個調用作業系統功能的庫。通過pywin32這個第三方軟體包,Python能夠訪問Windows的COM服務及其它Windows API。使用IronPython,Python程式能夠直接調用.Net Framework。

其他

NumPy、SciPy、Matplotlib可以讓Python程式員編寫科學計算程式。有些公司會使用Scons代替make構建C++程式。

很多游戲使用C++編寫圖形顯示等高性能模塊,而使用Python或者Lua編寫游戲的邏輯、伺服器。相較於Python,Lua的功能更簡單、體積更小;而Python則支持更多的特性和數據類型。很多游戲,如EVE Online使用Python來處理游戲中繁多的邏輯。

YouTube、Google、Yahoo!、NASA都在內部大量地使用Python。OLPC的作業系統Sugar項目的大多數軟體都是使用Python編寫

 

所以他的應用範圍大概分為:

數據分析

系統編程

組件集成

網路服務

圖像處理

數值計算和科學計算

 

四、設計哲學與定位

Python的設計哲學是“優雅”、“明確”、“簡單”。Python開發者的哲學是“用一種方法,最好是只有一種方法來做一件事”。在設計Python語言時,如果面臨多種選擇,Python開發者一般會拒絕花俏的語法,而選擇明確沒有或者很少有歧義的語法。這些準則被稱為“ Python格言”。在Python解釋器內運行import this可以獲得完整的列表

 

1.優美勝於醜陋(Python 以編寫優美的代碼為目標)

2.明瞭勝於晦澀(優美的代碼應當是明瞭的,命名規範,風格相似)

3.簡潔勝於複雜(優美的代碼應當是簡潔的,不要有複雜的內部實現)

4.複雜勝於凌亂(如果複雜不可避免,那代碼間也不能有難懂的關係,要保持介面簡潔,多加註釋!)

5.扁平勝於嵌套(優美的代碼應當是扁平的,不能有太多的嵌套)

6.間隔勝於緊湊(優美的代碼有適當的間隔,不要奢望一行代碼解決問題,一行代碼不能超過80個字元,你可以換行或起一個新的邏輯來寫)

7.可讀性很重要(優美的代碼是可讀的)

8.即便假借特例的實用性之名,也不可違背這些規則(這些規則至高無上),覺對不允許特列必須按照這個規則

9.不要包容所有錯誤,除非你確定需要這樣做(精準地捕獲異常,不寫 except:pass 風格的代碼)

10.當存在多種可能,不要嘗試去猜測!

11.而是儘量找一種,最好是唯一一種明顯的解決方案(如果不確定,就用窮舉法)

12.雖然這並不容易,因為你不是 Python 之父(這裡的 Dutch 是指 Guido )

13.做也許好過不做,但不假思索就動手還不如不做(動手之前要細思量)

14.如果你無法向人描述你的方案,那肯定不是一個好方案;反之亦然(方案測評標準)

15.命名空間是一種絕妙的理念,我們應當多加利用(倡導與號召

 

PS:

簡單的拿php和python做對比:

python是綜合性的語言,他不光可以做web開發。他倆的對比應該僅限於web開發方向。不見其phpweb開發別python好,php是先入為主,python的web框架在2000才有的比較晚了

django起來的比較晚,他們的web開發都是很不錯了。你用php做的python都可以做。python給你的是一個完整的解決,前端和後端都可以用python。

簡單的拿C和python做對比:

python慢,慢的嚴重!!!!相同的程式比C慢幾百倍很正常

編程風格:

一、語法要求

縮進統一

統一級別的代碼縮進必須一致!(並且建議所有級別的代碼的縮進是相同的,開發規範里建議4個空格)建議不要用Tab因為如果想把代碼在windows上運行,linux和windows的Tab的定義不同!!!!

好的編輯器能提高開發代碼的效率!

所有的python,第一行一定要頂到行頭!同一級別的新的都要頂到行頭。

二、變數

標識符的第一個字元必須是字母表中字母(大寫或小寫)或者一個下劃線('_');

標識符名稱的其他部分可以由字母(大寫或小寫)、下劃線('_')或者數字(0-9)組成;

有效 標識符名稱例如:my、_my_name、name_z12和a1w2_c3;

無效 標識符名稱例如:2things、this is dog和my-name;

標識符名稱是對大小寫敏感的。例如,myname和mYname不是同一個標識符。註意前者中的小寫y和後者中的大寫Y;

常量:數值不變的量

變數:數值會變動的量

在python中沒有常量的,所有的數值都可以改變,但是他依然有個常量的概念,但是是人為的你不去改變他,定義一個常量應該用大寫的形式;

例如:

AGE = 10 這個就是常量,它是大寫的!是約定俗成的,但是它是可以改的!!

name = 'Ray Zhu' 這個就是變數

######需要特別註意的是,定義變數的時候不能定義python自帶的內置方法####

例如:

type

以下關鍵詞不能聲明為變數名:

 

['and', 'as', 'assert', 'break', 'class','continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
View Code

 

變數的起名的方式就是標識符名稱,通過標識符去調用記憶體中的數據。

 

Python環境:

一、安裝python

windows:

1、下載安裝包
    https://www.python.org/downloads/
2、安裝
    預設安裝路徑:C:\python35
3、配置環境變數
    【右鍵電腦】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變數】--》【在第二個內容框中找到 變數名為Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】
    如:原來的值;C:\python35,切記前面有分號
View Code

Linux:

Linux的yum依賴自帶的Python,為防止錯誤,此處更新其實就是再安裝一個高版本Python!

查看預設Python版本
python -V
  
1、安裝gcc,用於編譯Python源碼
    yum install gcc
2、下載源碼包,https://www.python.org/ftp/python/
3、解壓併進入源碼文件
4、編譯安裝
    ./configure
    make all
    make install
5、查看版本
    /usr/local/bin/python3.5 -V
6、修改預設Python版本
    mv /usr/bin/python /usr/bin/python2.6
    ln -s /usr/local/bin/python3.5 /usr/bin/python
7、防止yum執行異常,修改yum使用的Python版本
    vi /usr/bin/yum
    將頭部 #!/usr/bin/python 修改為 #!/usr/bin/python2.6
View Code

Python入門

一、第一句python

vim hello_world.py 創建一個文件:

 

#!/usr/bin/env python3
#_*_ conding:utf-8 _*_

print ('Hello World')
View Code

 

執行:

python hello.py即可
或者增加執行許可權:
chmod +x hello.py
./hello.py

註意:

 

#!/usr/bin/env python
備註:
腳本用env啟動的原因:是因為腳本解釋器再linux中可能被安裝與不同的目錄中,env可以在系統的PATH目錄中查找。同時,env還規定一些系統環境變數。env就是envirnment 環境變數的縮寫
# _*_ coding:utf-8 _*_    指定編碼類型為utf-8,在Python3中預設編碼為utf8,加不加這個都無所謂

 

二、編碼

python解釋器在載入 .py 文件中的代碼時,會對內容進行編碼(預設ascill)

ASCII(American Standard Code for Information Interchange,美國標準信息交換代碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多只能用 8 位來表示(一個位元組),即:2**8 = 256,所以,ASCII碼最多只能表示 256 個符號

顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字元和符號的編碼,即:Unicode

Unicode(統一碼、萬國碼、單一碼)是一種在電腦上使用的字元編碼。Unicode 是為瞭解決傳統的字元編碼方案的局限而產生的,它為每種語言中的每個字元設定了統一併且唯一的二進位編碼,規定雖有的字元和符號最少由 16 位來表示(2個位元組),即:2 **16 = 65536,
註:此處說的的是最少2個位元組,可能更多

UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個位元組,而是將所有的字元和符號進行分類:ascii碼中的內容用1個位元組保存、歐洲的字元用2個位元組保存,東亞的字元用3個位元組保存...

所以,python解釋器在載入 .py 文件中的代碼時,會對內容進行編碼(預設ascill),所以如果不指定編碼類型,如果有中文就會報錯。

三、Python的工作過程

1、python 把代碼讀到記憶體; 2、詞法語法分析; 3、放到編譯器 =======》》生成位元組碼; 4、執行位元組碼 =======》》生成機器碼;  5、CPU執行

四、執行腳本傳入參數

Python有大量模塊,從而使得開發Python程式非常簡潔。類庫有包括三種:

Python內部提供的模塊

業內開源的模塊

程式員自己開發的模塊

Python內部提供了一個sys的模塊,其中sys.argv 用來捕獲執行 執行python腳本時傳入的參數

#!/usr/bin/env python
# _*_ coding:utf-8 _*_

import sys

print (sys.argv)

五、pyc文件

執行Python代碼時,如果導入了其他的.py文件, 那麼,在執行過程中會自動生成一個其同名的.pyc文件,該文件就是Python解釋器編譯之後產生的位元組碼文件;

同樣的道理:代碼在經過編譯可以產生位元組碼;位元組碼通過反編譯也可以得到代碼。(任何位元組碼通過反編譯都可以代碼)

六、變數

變數:只能由字母、數字、下劃線組成

特別註意的是,定義變數時變數不能以數字開頭

python關鍵字不能用於變數

python的內置函數或類

最好不要和python的內置的東西重覆;

字元串的值是不能被修改的,他在記憶體里是連續的,如果想改的話必須在後面預留所以不支持修改!

字元串特性,一旦修改,重新創建

例:

 

name1 = "zhurui"
name2 = name1

這裡把修改為name1 = "boy",猜想下name2會不會變呢??

 

其實name2是不變的,結合上面的規則:字元串特性,一旦修改,重新創建

name1 = "boy"  name1的值變了,他會重新開闢一塊記憶體空間!

註意:

name1 = "zhurui"
name2 = "zhurui"

這裡雖然他們的記憶體地址是相同的,但是它們的原理是各自在記憶體中開闢了一塊記憶體空間,python給他進行了優化而已。有個池的概念(把你最常用的值做一個指向)!

集合又不相同:

name1 = ['ray',  'karen',  'eric']

如果把name2 = name1

print (name2)
['ray',  'karen',  'eric']
name1 這個集合增加一個,現在name2變不變呢?會變得集合和字元串不同它的各個元素不是連續的,所以name2 = name1指向後,name1增加一個元素不會開闢一塊新的空間,name2就會跟著改變;

 

七、條件語句

八、基本數據類型

九、循壞


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

-Advertisement-
Play Games
更多相關文章
  • 最近粗淺的學習了下AutoMapper 這個做對象映射的第三方工具,覺得非常方便使用,所以簡單的總結了一下我能想到的簡單的對象映射的方式。 占時先不考慮源對象成員到目標對象成員的指定映射(即成員名不一致),先準備好兩個類Students-StudentsDto;Teachers-TeachersDt ...
  • “映像劫持”,也被稱為“IFEO”(Image File Execution Options),在WindowsNT架構的系統里,IFEO的本意是為一些在預設系統環境中運行時可能引發錯誤的程式執行體提供特殊的環境設定。當一個可執行程式位於IFEO的控制中時,它的記憶體分配則根據該程式的參數來設定,而W ...
  • Orchard Core Framework:ASP.NET Core 模塊化,多租戶框架 上一篇編寫Orchard Core一分鐘搭建ASP.NET Core CMS ,介紹ASP.NET Core CMS ,Orchard的ASP.NET Core版,同時對應有一個ASP.NET Core框架。 ...
  • 1. 前言 "上一篇文章" 介紹了各種WPF本地化的入門知識,這篇文章介紹UWP本地化的入門知識。 2. 使用resw資源文件實現本地化 在以前的XAML平臺,resx資源文件是一種很方便的本地化方案,但在UWP中微軟又再次推薦x:Uid方案,預設的資源文件也變成resw資源文件。雖然尾碼名只差了一 ...
  • 背水一戰 Windows 10 之 全球化: Demo, 格式化數字 ...
  • 一、為什麼會用到網頁實時監控 LZ最近在無錫買房了,雖然在上海工作,但是上海房價實在太高無法承受,所以選擇還可以接受的無錫作為安身之地。買過房的小伙伴可能知道買房的流程,買房中間有一步很重要的就是需要商品房備案,簡單點說就是你買房時可以在政府商品房備案網站處查看你購買房的備案情況,如果是已經備案了開 ...
  • 一、統一賬號管理 1.LDAP 統一管理各種平臺帳號和密碼,包括但不限於各種操作系統(Windows、Linux),Linux系統sudo集成,系統用戶分組,主機登入限制等;可與Apache,HTTP,FTP,SAMBA,ZABBIX,Jenkins等集成;支持密碼策略(密碼強度、密碼過期時間、強制 ...
  • 無監控,不運維。好了,廢話不多說,下麵都是乾貨。 流量黨勿入,圖片太多!!! 項目實戰系列,總架構圖 http://www.cnblogs.com/along21/p/8000812.html 一、User parameters 用戶參數 1、介紹和用法 ① 介紹 自定義用戶參數,也就是自定義key ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...