python的註釋、變數、常量基礎
一.註釋
1.什麼是註釋
- 註釋就是對程式碼的解釋說明,註釋的內容不會被當作程式碼執行
2.為什麼要註釋
- 增強程式碼的可讀性
3.怎麼用註釋?
- 程式碼註釋單行和多行註釋
- 單行註釋用#號,可以跟在程式碼的正上方或正後方
- 多行註釋可以用三對引號(單雙都行)""" """
4.程式碼註釋的原則:
- 不用全部加註釋,只需要為自己覺得重要或不好理解的部分加註釋即可
- 註釋可以用中文或英文,但不要拼音
二.變數
1.什麼是變數?
變數就是可以變化的量,量指的是事物的狀態,比如人的年齡、性別,遊戲角色的等級、金錢等等
2.為什麼要有變數?
為了讓計算機能夠像人一樣去記憶事物的某種狀態,並且狀態是可以發生變化的。
詳細地說: 程式執行的本質就是一系列狀態的變化,變是程式執行的直接體現,所以我們需要有一種機制能夠反映或者說是儲存下來程式執行時狀態,以及狀態的變化。
3.怎麼使用變數(先定義、後使用)
3.1 變數的定義與使用
變數的定義由三部分組成,如下圖
日常生活中:
姓名:Jason
年齡:18
愛好:學習
程式中:
username = 'jason'
age = 18
hobby = 'music'
語法格式
username = 'jason'
變數名 賦值符號 變數值
直譯器執行到變數定義的程式碼時會申請記憶體空間存放變數值,然後將變數值的記憶體地址繫結給變數名,以變數的定義age=18為例,如下圖
底層原理(必會!!!)
遇到賦值符號先看符號右邊的再看左邊的
age = 18
1.在記憶體空間中申請一塊記憶體空間儲存18
2.將18所在的記憶體空間地址繫結給變數名age
3.之後如果要訪問18就通過變數名age訪問即可
通過變數名即可引用到對應的值,用print(age)即可驗證
3.2 變數名的命名規範
變數名的命名應該見名知意
如果我們要儲存的資料18代表的是一個人的年齡,那麼變數名推薦命名為age
age = 18
如果我們要儲存的資料18代表的是一個人的等級,那麼變數名推薦命名為level
level = 18
1.變數名只能由數字、字母、下劃線任意組合
user@name(不對)、_(可以)、pwd_123_aaa(可以)
2.變數名不能以數字開頭,下劃線建議不要開頭因為有特殊含義
3.變數名不能與關鍵字衝突
4.變數名的命名一定要做到見名知意,這個是核心。(重要)
3.3 變數名的命名風格
1.駝峰體
大駝峰 # 所有的單詞首字母大寫
UserNameFromDb
小駝峰 # 第一首字母小寫其餘首字母大寫
userNameFromDB
JavaScript推薦使用駝峰體
-
下劃線 # 單詞與單詞之間的下劃線隔開
user_name_from_db
python推薦使用下劃線
3.4 變數三要素
1.變數的值
2.變數的記憶體地址
3.變數的資料型別
name = 'jason'
print(name) # 值
print(id(name)) # 一串數字 相當於是記憶體地址編號
print(type(name)) # 資料型別 <class 'str'>
一個變數名只能指向一個記憶體地址
一個記憶體地址可以有多個變數名指向
三. 常量
3.1 什麼是常量?
常量是值在程式執行過程種不會改變的量
3.2 為什麼要有常量?
在程式執行過程種,有些值是固定的、不應該被改變的,比如圓周率3.1415926......
3.3 怎麼使用常量
在python中沒有真正意義上的常量 我們墨守成規的將全大寫的變數看成是常量
HOST = '127.0.0.1'
const pi = 3.14 # 定義常量
pi = 4 # 不支援修改
四. 垃圾回收機制
4.1 什麼是垃圾回收機制?
垃圾回收機制(簡稱GC)是Python直譯器自帶一種機,專門用來回收不可用的變數值所佔用的記憶體空間
4.2 為什麼要用垃圾回收機制?
程式執行過程中會申請大量的記憶體空間,而對於一些無用的記憶體空間如果不及時清理的話會導致記憶體使用殆盡(記憶體溢位),導致程式崩潰,因此管理記憶體是一件重要且繁雜的事情,而python直譯器自帶的垃圾回收機制把程式設計師從繁雜的記憶體管理中解放出來。
4.3 垃圾回收機制原理分析
-
引用計數
記憶體中變數值身上有幾個變數名繫結引用計數就是幾,只要為0就是垃圾
-
標記清除
當記憶體即將沾滿的時候 python會自動暫停程式的執行 從頭到尾將記憶體中資料進行掃描
並打上標記 之後一次性清除掉標記的資料 -
分代回收
分代回收是一種以空間換時間的操作方式,Python將記憶體根據物件的存活時間劃分為不同的集合,每個集合稱為一個代,Python將記憶體分為了3“代”,分別為新生代(第0代)、青春代(第1代)、老年代(第2代),他們對應的是3個連結串列,它們的垃圾收集頻率與物件的存活時間的增大而減小。新建立的物件都會分配在年輕代,年輕代連結串列的總數達到上限時,Python垃圾收集機制就會被觸發,把那些可以被回收的物件回收掉,而那些不會回收的物件就會被移到中年代去,依此類推,老年代中的物件是存活時間最久的物件,甚至是存活於整個系統的生命週期內。同時,分代回收是建立在標記清除技術基礎之上。分代回收同樣作為Python的輔助垃圾收集技術處理那些容器物件。