Python第二天——基礎之核心風格

来源:http://www.cnblogs.com/charles1ee/archive/2017/02/07/6373700.html
-Advertisement-
Play Games

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


一:語法和語句

#  :註釋

\   :  轉譯回車,繼續上一行,在一行語句較長的情況下可以使用其來切分成多行,因其可讀性差所以不建議使用

; : 將兩個語句連接到一行,可讀性差,不建議使用

: : 將代碼的頭和體分開

語句(代碼塊)用縮進方式體現不同的代碼級別,建議採用4個空格(不要使用tab)

python文件以模塊的方式組織,編寫一個.py結尾的文件實際上就寫了一個模塊

 

二:變數定義與賦值

a=1;1為記憶體變數存放於記憶體中,a為變數的引用,python為動態語言,變數及其類型均無需事先聲明類型

與c的區別,a=1無返回值

PS:

c語言變數聲明必須位於代碼最開始,而且要在所有語句之前

c++,java可以隨時聲明變數,但是必須聲明變數名字和類型

Python也可以隨時隨地聲明變數,但是變數被定義時,解釋器會根據等式右側的值來決定其類型

變數必須先賦值,才可以

 

三:記憶體管理

變數無需指定類型

程式員無需關係記憶體管理

變數會自動回收

del能夠直接釋放記憶體隊形(減少對象的引用計數)

什麼事引用計數?

增加引用計數:

  1.對象被創建並將其引用賦值給變數,引用計數+1(例如a=1)

  2.同一個對象的引用又賦值給其它變數,引用計數+1(b=a)

  3.對象作為參數被函數調用,引用計數+1(int(a))

  4.對象成為容器對象中的一個元素,引用計數+1(list=['chars_lee','man',a])

減少引用計數:

  1.a作為被函數調用的參數,在函數運行結束後,包括a在內的所有局部參數均會被銷毀,引用計數-1

  2.變數被賦值給另一個對象,原對象引用計數-1(例如a=1,b=a,b=2)

  3.使用del刪除對象的引用,引用計數-1(del a)

  4.a作為容器的元素被清除時,引用計數-1(例如list.remove(a))

  5.容器本身被銷毀,引用計數-1(del list)

註意: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解釋器回收的目標

 

會有這麼一種情況,當a=1時,記憶體會開闢一塊空間,當b=1時,按道理記憶體應該開闢一塊新的空間,但是使用id函數查看a,b他們兩個的記憶體地址相同。為什麼?

因為像這種數字1占用記憶體的空間存很少。頻繁申請記憶體空間是屬於一種浪費。所以python提供了一種優化機制。像這種長度,或者占用記憶體比較小的的這種類型。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__變數,編寫測試代碼 

 7:編寫python基本風格

  標題

  文檔註釋

  模塊導入

  變數定義

  類定義語句

  函數定義語句

  主程式

  測試代碼

 例如

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

'''
This is an example module      #三引號屬於多行註釋,通常在裡面寫這個py文件的功能介紹,以及作者等等
'''

import sys,os             #導入系統模塊

debug=True               #定義變數(頂頭寫代表全集有效)

class Test:              #定義類
    '''
    test class
    '''
    pass

def main():              #定義函數
    '''
    test func
    :return: 
    '''
    pass

if __name__ == '__main__':
    main()

 


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

-Advertisement-
Play Games
更多相關文章
  • 1. 介紹 1)DOM(JAXP Crimson解析器) DOM是用與平臺和語言無關的方式表示XML文檔的官方W3C標準。DOM是以層次結構組織的節點或信息片斷的集合。這個層次結構允許開發人員在樹中尋找特定信息。分析該結構通常需要載入整個文檔和構造層次結構,然後才能做任何工作。由於它是基於信息層次的 ...
  • 1、什麼是框架 2、Spring簡介 3、IOC(配置、註解) 4、Bean(配置、註解) 5、AOP(配置、註解、AspectJ、API) 資源: http://spring.io/ http://project.spring.io/spring-framework/ Spring是什麼? 1、S ...
  • 一:運算符 1.算數運算: a除以b a除以c為整除。輸出小數點後面的數字 a//b 為地板除。只去整數,小數點後面的數字舍掉 2.比較運算 3.賦值運算 4.位運算 ps:暫時用不到 5.邏輯運算 註意:所有的數據類型都有布爾值(True/False)。為False的數據有(0,' ',None) ...
  • 原文:http://blog.csdn.net/ysughw/article/details/8992322 ContextLoaderListener監聽器的作用就是啟動Web容器時,自動裝配ApplicationContext的配置信息。因為它實現了ServletContextListener這 ...
  • springmvc在處理器方法中通常返回的是邏輯視圖,如何定位到真正的頁面,就需要通過視圖解析器。 springmvc里提供了多個視圖解析器,InternalResourceViewResolver就是其中之一: 最常用的視圖解析器:InternalResourceViewResolver 當處理器 ...
  • xmlns是XML Namespaces的縮寫,中文名稱是XML(標準通用標記語言的子集)命名空間。 產生原因 比如: 下麵這個 XML 文檔攜帶著某個表格中的信息: table tr tdApples/td tdBananas/td /tr /table 下麵這個 XML 文檔攜帶有關桌子的信息( ...
  • 非常慚愧的說,由於之前一直使用的是windowservice,安裝apache來進行伺服器佈置的,這種方式也是最簡單最直接的方式, 但是由於php的服務大多都是linux棧的,咱們也不能落後呀,在寫了php半年之後,開始擁有的自己的第一臺centos的伺服器, 實話說,centos真的是簡潔,部署完 ...
  • 一、指針的四個關鍵概念1、指針的類型2、指針指向的類型3、指針的值,也就是指針指向的地址4、指針自己所占用的記憶體空間註意:指針變數所存的內容就是記憶體的地址編號!例如:int **pp = NULL;1、指針的類型是 int **2、指針指向的類型 int *3、指針的值為NULL4、指針自己所站記憶體 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...