1. 程式人生 > >第二篇:python基礎之核心風格

第二篇:python基礎之核心風格

一.語句和語法

  • #:註釋

  • \:轉譯回車,繼續上一行,在一行語句較長的情況下可以使用其來切分成多行,因其可讀性差所以不建議使用
  • ;:將兩個語句連線到一行,可讀性差,不建議使用
  • ::將程式碼的頭和體分開
  • 語句(程式碼塊)用縮排方式體現不同的程式碼級別,建議採用4個空格(不要使用tab)
  • python檔案以模組的方式組織,編寫一個.py結尾的檔案實際上就寫了一個模組

二.變數定義與賦值

  • a=1:1為記憶體變數存放於記憶體中,a為變數的引用,python為動態語言,變數及其型別均無需事先宣告型別
  • 與c的區別:a=1無返回值

注:

  • c語言變數宣告必須位於程式碼最開始,而且要在所有語句之前
  • c++,java可以隨時隨地宣告變數,但是必須宣告變數名字和型別
  • python也可以隨時隨地宣告變數,但是變數在被定義時,直譯器會根據等式右側的值來決定其型別
  • 變數必須先賦值,才可使用

三.記憶體管理

記憶體管理:

  • 變數無須指定型別
  • 程式設計師無須關心記憶體管理
  • 變數會被自動回收
  • del能夠直接釋放記憶體物件(減少物件的引用計數)

引用計數:

  • 增加引用計數
  1. 物件被建立並將其引用賦值給變數,引用計數加1(例a=1)
  2. 同一個物件的引用又賦值給其它變數,引用計數加1(例b=a)
  3. 物件作為引數被函式呼叫,引用計數加1(例int(a)
  4. 物件成為容器物件中的一個元素,引用計數加1(例list_test=['alex','z',a])
  • 減少引用計數
  1. a作為被函式呼叫的引數,在函式執行結束後,包括a在內的所有區域性變數均會被銷燬,引用計數減1
  2. 變數被賦值給另外一個物件,原物件引用計數減1(例b=2,1這一記憶體物件的引用只剩a)
  3. 使用del刪除物件的引用,引用計數減1(例del a)
  4. a作為容器list_test中的一個元素,被清除,引用計數減少(例list_test.remove(a))
  5. 容器本身被銷燬(例del list_test)

注意:python記憶體回收交給一段獨立的程式碼即垃圾回收器(包含引用計數器和迴圈垃圾收集器),引用計數在歸零時並不會立即清除(可能有迴圈呼叫)

不必糾結迴圈引用收集,只需記住垃圾回收器幫你自動清理記憶體。

簡單例子

x=1 #建立記憶體變數1,將變數1的引用傳給x,此刻1的引用計數為1
y=x #1的引用計數增加到2


y=2 #建立新的記憶體變數2,將變數2的引用傳給y,原本指向1的y,此刻給了2,所以1的引用計數減少到了1

del x #刪除了記憶體物件1的引用x,此刻1再無引用,此刻它就成了python直譯器回收的目標

 

四.python物件

python中使用物件模型來儲存資料,用來生成資料型別的工廠函式本質上是類,新建資料的結果本質是例項化一個物件

物件有三種特性

  • 身份:記憶體地址,可以用id()確認,id相同的就是同一個物件
  • 型別:可以用type()檢視,返回值的type也是物件

五.識別符號

定義:允許作為名字的有效字串集合

  • 名字必須有實際意義,可讀性好
  • 首字母必須是字母或下劃線(_)
  • 剩下的字元可以是字母和數字或者下劃線
  • 大小寫敏感
  • 兩種風格:conn_obj或ConnObj
  • 不能使用關鍵字,不能使用內建

關鍵字表:

內建:由直譯器自動匯入(提供基本功能),可以看作全域性變數,

六.專用下劃線識別符號

  • _xxx:不能用from module import *匯入
  • __xxx__:系統定義名字
  • __xxx:類中私有變數

下劃線對於直譯器來說有特殊意義,而且是內建識別符號所使用符號,不建議自定義變數以下劃線開頭

但是如果是類中的私有變數,__xxx將會是一個好習慣

補充:

  1. 系統變數__name__會根據python檔案被載入方式的不同得出不同的值
    1. python檔案被當作模組匯入:__name__=模組名或者檔名
    2. python檔案被執行:__name__='__main__'
  2. 在我們使用python編寫一個軟體時,應該只有一個主程式中包含大量頂級程式碼(就是沒有縮排的程式碼,

    python直譯器讀取到頂級程式碼會立即執行),其他.py檔案應該只有少量頂級程式碼,所有功能都應該封裝

    在函式或類中

  3. 通常在檔案結尾結合__name__變數,編寫測試程式碼 

七.編寫模組基本風格

  1. 標題
  2. 文件註釋
  3. 模組匯入
  4. 變數定義
  5. 類定義語句
  6. 函式定義語句
  7. 主程式
  8. 測試程式碼

八.示範

 1 #_*_coding:utf-8_*_
 2 #!/usr/bin/env python
 3 
 4 '''
 5 This is an example module
 6 '''
 7 
 8 import sys,os
 9 
10 debug=True
11 
12 class Test:
13     '''
14     test class
15     '''
16     pass
17 
18 def main():
19     '''
20     test func
21     :return: 
22     '''
23     pass
24 
25 if __name__ == '__main__':
26     main()

相關推薦

第二python基礎核心風格

一.語句和語法 #:註釋 \:轉譯回車,繼續上一行,在一行語句較長的情況下可以使用其來切分成多行,因其可讀性差所以不建議使用 ;:將兩個語句連線到一行,可讀性差,不建議使用 ::將程式碼的頭和體分開 語句(程式碼塊)用縮排方式體現不同的程式碼級別,建議採用4個空格(不要使用tab) p

第四python基礎雜貨鋪

  在這一篇中我們將對上幾篇的Python零碎的知識進行補充,即字串的格式化輸出,以及深淺拷貝,接下來我們將對這兩種進行一一介紹。 一、字串格式化輸出   關於字串的格式化輸出,我們需要了解為什麼需要字串的格式化,同時掌握格式化輸出的兩種用法:百分號方式、format方式。接下來我們就這兩種

第三python基礎資料型別與變數

一.變數 1 什麼是變數之宣告變數 #變數名=變數值 age=18 gender1='male' gender2='female' 2 為什麼要有變數變數作用:“變”=>變化,“量”=>計量/儲存狀態程式的執行本質是一系列狀態的變化,變數的目的就是用來儲存狀態,變數值的變化就

Python開發【第五Python基礎2

對齊方式 dex 字符串 後退 ring lag nic 有效 func 字符串格式化 Python的字符串格式化有兩種方式: 百分號方式、format方式 百分號的方式相對來說比較老,而format方式則是比較先進的方式,企圖替換古老的方式,目前兩者並存。[PEP-310

Python開發【第四Python基礎函數

nco pos *args 更強 三元 sequence hunk ins att 三元運算 三元運算(三目運算),是對簡單的條件語句的縮寫。 # 書寫格式 result = 值1 if 條件 else 值2 # 如果條件成立,那麽將 “值1” 賦值給result

Python成長路【第五Python基礎文件處理

閱讀 關註 src 文件路徑 程序 opened IT 寫入 文件操作 一、文件操作 1、介紹 計算機系統分為:計算機硬件,操作系統,應用程序三部分。 我們用python或其他語言編寫的應用程序若想要把數據永久保存下來,必須要保存於硬盤中,這就涉及到應用程序要操作硬件,

Python成長路【第五Python基礎裝飾器

brush urn 新功能 clas 現在 hide rom 接收 調用 一、什麽是裝飾器 裝飾:裝飾既修飾,意指為其他函數添加新功能 器:器既函數 裝飾器定義:本質就是函數,功能是為其他函數添加新功能 二、裝飾器需要遵循的原則 1、不能修改裝飾器的源代碼(開放封閉原則)

Python成長路【第五Python基礎模塊

module 應用程序 過程 解釋器 amp 之路 Python標準庫 pre 使用 模塊&包 模塊(module)的概念: 在計算機程序開發的過程中,隨著程序代碼越寫越多,在一個文件裏代碼就會越來越長,越來越不容易維護。為了編寫可維護的代碼,我們把很多函數分組,分

Python開發【第五Python基礎雜貨鋪

字串格式化 Python的字串格式化有兩種方式: 百分號方式、format方式 百分號的方式相對來說比較老,而format方式則是比較先進的方式,企圖替換古老的方式,目前兩者並存。[PEP-3101] This PEP proposes a new system for

第五python基礎_5

執行過程 ini 間接 ray 復雜 func 時間 基於 time 本篇內容 協程函數 遞歸 二分法 import語句 from...import語句 模塊搜索路徑 包的導入 軟件開發規範 logging模塊的使用 一、 協程函數 1.定義 協程函數就是使用了y

第八python基礎_8 面向對象與網絡編程

pro size 賬單 socket 基礎 發生 多態 proc client 本篇內容 接口與歸一化設計 多態與多態性 封裝 面向對象高級 異常處理 網絡編程 一、 接口與歸一化設計 1.定義 (1)歸一化讓使用者無需關心對象的類是什麽,只需要知道這些對象都具備某

Python路【第三】:Python基礎雜貨鋪

對齊 表示 microsoft 小數點 true per 字符串 orm bsp 字符串格式化 Python的字符串格式化有兩種方式:百分號方式、format方式 百分號的方式相對來說比較老,而format方式則是比較先進的方式,企圖替換古老的方式,目前兩者並存。 1

第二Python安裝及環境變量的操作

系統變量 執行 第二篇 解釋 參數 配置 環境 配置環境 usr 1.配置環境變量方法在計算機-屬性-高級系統設置-高級-環境變量-系統變量-path中追加Python軟件包的路徑補充:各個變量值是用;分隔的 2.環境變量配置後,在cmd中可直接輸入python來運行Pyt

週末班Python基礎面向物件進階

面向物件進階 型別判斷 issubclass 首先,我們先看issubclass() 這個內建函式可以幫我們判斷x類是否是y型別的子類。 class Base: pass class Foo(Base): pass class Bar(Foo):

最新版 17 幅思維導圖Python 程式設計核心知識體系

導讀: 本文主要涵蓋了 Python 程式設計的核心知識,展示了一系列思維導圖,主

python 學習筆記 第二python如何連線mysql資料庫

         任何一個程式都必然用到資料庫,不然資料沒法處理,之前我只是把python的開發環境部署了一下,但是隻是獨立的,沒法連線到資料庫,今天學習了一下python的步驟 連線資料庫要首先映入模組pymysql;(以一個簡短的查詢來演示一下資料庫的連線) 1.下載地

EnjoyingSoftMule ESB基礎系列第二Mule ESB基本概念

目錄 1. 使用Anypoint Studio開發 2. Mule ESB Application Structure - Mule ESB應用程式結構 3. Mule ESB Application整體構造 4. Mule ESB構造元素 - Flow 5. Mule ESB構造元素

Python開發【第六Python基礎條件和循環

ora back strong als 重復執行 操作 enume 條件表達式 服務 目錄 一、if語句 1、功能 2、語法 單分支,單重條件判斷 多分支,多重條件判斷 if + else 多分支if + elif + else 語句小結 + 案例 三元表達式 二、whil

第七 python基礎函數,遞歸,內置函數

不能 初中 隱式 邏輯 改變 維護 mage 提醒 發送郵件 第七篇 python基礎之函數,遞歸,內置函數 閱讀目錄 一 數學定義的函數與python中的函數 二 為何使用函數 背景提要 三 函數和過程 四 函數參數 五 局部變量和全局變量 六 前向引用之‘函

Linux賬號管理第二對用戶組進行管理

mov 切換 屬於 tom blog 用戶組 第二篇 roo clas 1、查看用戶的有效組群     groups 用戶名 註意:查看出來的結果可能有多個;第一個為主組群,後面的都是副組群    2、添加和刪除組群     添加一個組:groupadd 組