1. 程式人生 > 其它 >python學習(一)——簡介、物件與引用

python學習(一)——簡介、物件與引用

技術標籤:python

目錄

python簡介

python

python:官網](www.python.org) ,譯為“大蟒蛇”,吉多·範羅蘇姆(Guido van Rossum )在荷蘭國家數學和電腦科學研究所設計出來的,在1989年發明,1991年正式公佈。
python圖示

python特點

  1. 可讀性強,在一行語句過長的情況下,可以使用行連線符“\”連線;
  2. 是一門解釋性語言,易於學習,便於理解,但效能較低;
  3. 易於維護;
  4. 面向物件程式設計;
  5. 免費開源;
  6. 具有可移植性、支援跨平臺操作;
  7. 有著豐富的庫;
  8. 具有可拓展性,膠水式語言;
  9. 資料庫,python提供所有主要的商業資料庫介面;
  10. GUI程式設計;

python2與python3

python2在2000年釋出,最新版本為2.7,已停止更新。
python3在2008年釋出,兩者之間存在相容問題,可以使用2to3的轉換工具無縫遷移。這是python自帶的指令碼,可以參照官網說明,簡單使用方式如下:

2to3 file.py		# 在命令列中使用,列印轉換檔案和原始檔區別
2to3 -w file.py		# 通過傳入-w引數,將需要的修改協會原檔案中
# 以上操作均是在原檔案的基礎上建立副本,可傳入-n為直接修改

python直譯器

直譯器說明
CPython基於C語言的直譯器,最常用的直譯器
Jython基於Java直譯器,可以直接呼叫Java庫
IronPython.NET平臺上使用的直譯器,可以直接呼叫.NET平臺的類
PyPy使用Python語言實現的直譯器

python開發環境(IDE)

IDLE為python預設安裝開發環境。
自己可使用一些整合的python開發環境,如Anaconda、Pycharm等,可有效提高程式設計效率,還可以按需使用文字編輯器,如Sublime Text3、VS code、notepad++等,也可利用Jupyter等進行網頁程式設計。

在cmd命令列中也可直接使用 python ex1.py 來執行python檔案,以下是cmd命令列的簡單認識:

  1. ">>>"是提示符
  2. 互動視窗的關閉:Ctrl + Z,quit(),直接關閉
  3. 中斷程式執行:Ctrl + C

物件

物件是python中對資料的抽象,實際上是一個記憶體塊,每一個物件由以下元素構成:

組成成分說明
標識(identity)用於唯一標識物件,通常對應於物件在計算機記憶體中的地址 id(obj)
型別(type)物件儲存的資料型別 type(obj),一個物件的型別是不可改變的
值(value)物件所儲存的資料資訊 print(obj),有些值可變,有些不可變,由其型別決定

注:在某些情況下有可能基於可控的條件改變一個物件的型別。但這通常不是個好主意,因為如果處理不當會導致一些非常怪異的行為。

物件絕不會被顯式地銷燬,當無法訪問時它們可能會被作為垃圾回收。

識別符號

用於變數、函式、類、模組等的名稱。它有如下特定規則:

  1. 對大小寫敏感;
  2. 第一個字元必須是字母、下劃線;
  3. 不能使用關鍵字,可使用help() help>keywords檢視,也可在官方文件中查詢;
  4. 以雙下劃線開頭和結尾的名稱通常有特殊含義,儘量避免。

關鍵字如下:

False      await      else       import     pass
None       break      except     in         raise
True       class      finally    is         return
and        continue   for        lambda     try
as         def        from       nonlocal   while
assert     del        global     not        with
async      elif       if         or         yield

識別符號有約定俗成命名規則如下:

型別規則例子
模組和包名全小寫字母,儘量簡單,若多個單詞之間用下劃線numpy
函式名全小寫字母,多個單詞之間用下劃線隔開identify_words
類名首字母大寫,採用駝峰規則MyClass
常量名全大寫字母,多個單詞使用下劃線隔開PI

型別

數字型(numbers)

型別說明說明++
整型數包含:整型(int),布林型(bool)整型可以表示任意大小的數字,僅僅收受記憶體限制
浮點型數float,表示雙精度浮點數其取值範圍和溢位處理受底層的極其架構控制,注意:python不支援單精度浮點數
複數型complex,以一對雙精度浮點數來表示複數值z.real與z.imag可分別取實部、虛部

序列

型別說明說明++
字串string,不可變物件,由 Unicode 碼位值組成的序列Python 沒有 char 型別,將字串中的每個碼位表示為一個長度為 1 的字串物件
元組tuple,不可變物件,元組中的元素可以是任意python物件由括號建立,逗號作為分隔,單元素後需要加逗號
位元組串bytes,不可變物件,其中每個元素都是一個 8 位位元組,以取值範圍 0 <= x < 256 的整型數表示bytes(‘你好,世界, 123’,‘utf-8’)
列表list,可變物件,可以是任意元素構成[1, “123”, True]
位元組陣列可變陣列可以通過內建的 bytearray() 構造器來建立

集合

型別說明說明++
集合set,可變物件可通過內建的 set() 構造器建立
凍結集合frozenSet,不可變集合可通過內建的 frozenset() 構造器建立

對映

型別說明說明++
字典dict,可變物件表示由幾乎任意值作為索引的有限個物件的集合{keys: values},不可作為鍵的值型別只有包含列表或字典或其他可變型別,通過值而非物件編號進行比較的值(高效的字典實現需要使用鍵的雜湊值以保持一致性)

可呼叫型別

此型別可以被應用於函式呼叫操作。

型別說明說明++
使用者定義函式通過def建立
例項方法用於結合類、類例項和任何可呼叫物件 (通常為使用者定義函式)有著特殊的只讀屬性,_self_ ,_func_ ,_doc_ ,_name_ ,_module_
生成器函式使用 yield 語句 的函式或方法函式在被呼叫時,總是返回一個可以執行函式體的迭代器物件
協程函式使用 async def 來定義的函式或方法在被呼叫時會返回一個 coroutine 物件
非同步生成器函式使用 async def 來定義幷包含 yield 語句的函式或方法函式在被呼叫時會返回一個非同步迭代器物件
內建函式內建函式物件是對於 C 函式的外部封裝內建函式引數的數量和型別由 C 函式決定
內建方法內建函式的另一種形式,不同的是包含了一個傳入 C 函式的物件作為隱式的額外引數
通常是作為“工廠”來建立自身的例項
類例項任意類的例項通過在所屬類中定義 _call_() 方法即能成為可呼叫的物件

模組

模組是 Python 程式碼的基本組織單元,由匯入系統建立,由 import 語句發起呼叫,或者通過 importlib.import_module() 和內建的 import() 等函式發起呼叫。

其他型別

自定義類、類例項、I/O物件、內部型別

內部型別說明
程式碼物件表示編譯為位元組的可執行Python 程式碼
幀物件表示執行幀
回溯物件表示一個異常的棧跟蹤記錄
切片物件切片物件用來表示 getitem() 方法得到的切片
靜態方法物件靜態方法物件提供了一種避免上文所述將函式物件轉換為方法物件的方式,靜態方法物件為對任意其他物件的封裝,通常用來封裝使用者定義方法物件。當從類或類例項獲取一個靜態方法物件時,實際返回的物件是封裝的物件,它不會被進一步轉換,靜態方法物件自身不是可呼叫的,但它們所封裝的物件通常都是可呼叫的
類方法物件類方法物件和靜態方法一樣是對其他物件的封裝,會改變從類或類例項獲取該物件的方式

引用

變數通過地址實現了對物件的引用,變數在棧中,物件在堆中,兩者分離

  1. python是動態型別語言,變數不需要顯式宣告型別,自動根據引用的物件型別來確定型別,因為引用的物件實際上是一個記憶體塊,其中已經包含了type;
  2. python是強型別語言,只支援物件的型別支援的操作,如set不可以索引

參考資料

  1. https://docs.python.org/zh-cn/3.7/library/2to3.html
  2. https://docs.python.org/zh-cn/3/reference/lexical_analysis.html#keywords
  3. 一視訊教程
  4. python官方文件
  5. https://www.runoob.com/python/python-intro.html