Python 變量和數據類型
目錄
- 保留字
- 標識符
- 變量
- 基本數據類型
保留字
保留字是Python語言中已經被賦予特定意義的一些單詞,在程序開發時不可以把這些保留字作爲變量、函數、類、模塊以及其他對象的名稱來使用。
Python中的保留字如下表所示
and |
as |
assert | break | class | continue |
def | del | elif | else | except | finally |
for | from | False | global | if | import |
in | is | lambda | nonlocal | not | None |
or | pass | raise | return | try | True |
while | with | yield |
PS:注意Python中是嚴格區分大小寫的。即if是保留字,但是IF卻不在保留字的範疇內。
當然了隨着版本的更新,保留字可能會有所改動,而Python中保留字還一顆橢過交互式的終端來查看:
在交互式終端中一次輸入如下兩行代碼:
import keyword
keyword.kwlist
效果如圖所示
標識符
標識符簡單的理解解釋一個名字,就像我們每個人都有自己的名字用於區分。而我們Python中的標識符主要用於標識區分 變量、函數、類、模塊以及其他對象的名稱。
Python語言標識符命名規則如下:
1)有字母、下劃線"_"和數字組成,且開頭字符不能爲數字。(目前Python只允許使用ISO-Latin字符集裝那個的字符A~Z和a~z)
2)不能使用Python中的保留字。
3)區分字母大小寫。
4)Python中以下劃線開頭的標識符具有特殊意義,一般避免使用相似的標識符。
拓展:
A-以單下劃線開頭的標識符:不能直接訪問的類屬性,也不能通過 import * import ..導入
B-以雙下劃線開頭的標識符:類的私有成員
C-以雙下劃線開頭和結尾的標識符:Python專用標識。例如__init__()標識構造函數。
注意:在Python語言中,漢字作爲標識符是被允許的,如“姓名="涵帥"”,在程序中也不會出現錯誤,如下圖所示:
但是建議不要使用漢字作爲標識符!
變量
變量的理解
在Python中,變量我們可以理解爲名字,或者理解爲標籤更合適一些。
在其他的許多編程語言中,我們大多稱之爲 把數值存儲在變量中,即存在計算機內存的摸一個指定位置
但是在Python中,變量相當於標籤的存在,就好像在一間課室中有50人,固定座位,我定義:班長=張三。我就可以通過班長可以準確找到張三這個人。通過id()方法函數可以找出他的位置;若我重新賦值:班長=李四,這是我在通過班長找到的就是李四,id()方法函數調用出來的就是李四的位置。
那麼問題來了,我們在編程中很多時候不同的變量的值是一樣的,那麼他們在內存存儲上有什麼區別嗎?
我們用代碼示例來看一下,代碼以及運行結果如圖:
T_num1 = 1
print(id(T_num1))
#觀察輸出內存地址
T_num2 = 1
print(id(T_num2))
#觀察輸出內存地址
T_num3 = 1
print(id(T_num3))
#觀察輸出內存地址
以上示例不難發現,三個變量名是不同的,賦予的數值一樣,對應的內存地址也一樣
我問再做幾個不同的例子看一下:
T_num1 = 1
print("T_num1內存地址爲:"+str(id(T_num1)))
#觀察輸出內存地址
T_num1 = 2
print("T_num1內存地址爲:"+str(id(T_num1)))
#觀察輸出內存地址
T_num1 = 5
print("T_num1內存地址爲:"+str(id(T_num1)))
#觀察輸出內存地址
第二個示例:三個變量名是相同的,依次賦予的數值不一樣,對應的內存地址隨之不同
T_num1 = 1
print("T_num1內存地址爲:"+str(id(T_num1)))
#觀察輸出內存地址
T_num2 = 2
print("T_num2內存地址爲:"+str(id(T_num2)))
#觀察輸出內存地址
T_num3 = 5
print("T_num3內存地址爲:"+str(id(T_num3)))
#觀察輸出內存地址
第三個示例:三個變量名不同,賦予的數值也不一樣,對應的內存地址也不同
綜上總結:變量的內存地址是根據數值改變而改變的,數值相同的變量對應的內存地址一樣。
這也是我們爲什麼說Python中的變量描述爲標籤更合適一些:在Python語言中,當我們將一直數值賦給一個或者變量時,實質上就是將對應的值打上一個或者多個標籤,當變量的值改變是,我們就將這個標籤去下貼在內心的數值上。就航向我們平常閱讀紙質書籍,今天看了一部分後爲,在最後閱讀的位置夾上便籤,第二天閱讀結束再講便籤改到細心地閱讀位置,整一個過程便籤歲閱讀位置改變而改變;就好比我們Python中變量內存地址隨着數值的改變而改變 一個道理。
變量的定義和使用
在Python中,不需要先聲明變量及其類型,直接複製即可創建各種類型的變量。但需要注意的是變量的命名並非任意,需遵循以下幾條規則:
1)變量名必須是一個有效的標識符
2)變量名不能是Python中保留字
3)慎用小寫字母l(L)和大寫字母O
4)變量名一般選用有意義的單詞構成
變量賦值通過等號"="完成,語法格式:變量名 = value
另外,由於Python是動態型語言;即變量類型可以隨時變化 ;我們利用type()方法函數返回變量類型。示例如下:
基本數據類型
1)數字類型
整數:整數數值,即無小數部分摻雜
十進制數:0~9組成,逢十進一
八進制數:0~7組成,逢八進一,並且以0o開頭;例如:0o123轉化成十進制數就是83(注意在Python3中是以0o開頭,而Python中是以0開頭)
十六進制數:0~9和A~F組成,逢十六進一,並且以0x/0X開頭;例如0x25轉換成十進制數是37,0Xb01e轉換成十進制數就是45086
二進制數:由0和1兩個基數構成,逢二進一;例如,101轉換成十進制數就是5,1010轉換成十進制數就是10
浮點數:整數部分和小數部分構成;浮點數也可以使用科學計數法標識
注意:使用浮點數計算式,會存在小數位數不確定的情況;示例如下:
所有編程語言都存在這個問題,忽略多餘位數即可
複數:與數學中的複數完全一致,有實部和虛部組成,其中j和J都表示虛部;表示一個複數時,將其實部和虛部相加即可。複數賦值有兩種方法,示例如下:
但需注意的是虛部的一定要寫出來,例如我們數學中標識1+j,在python編程中就要寫成1+1j,示例如下:
2)字符串類型:連續的字符序列,可以是計算機能表示的一切字符的集合;字符串屬於不可變序列,通常用單引號“ '' ”、雙引號“ "" ”或者三引號“ ''' ''' ”括起來。三種形式只是形式差別,無語義差別,其中,一組單雙引號內的字符串必須在一行,三引號可以分佈多行。示例如下:
3)布爾類型 :表示真/假的值;在Python中,標識符True和False被解釋爲布爾值。並且布爾值也可以轉換爲數值:
True-->1 ; False-->0
數據類型轉換問題
Python是動態性語言,不想java或者C一樣扎UN高壓熊聲明變量類型。但是,雖然不用聲明類型,但有時依然需要用到類型轉換,有些地方不進行類型轉換甚至會報錯。
一次整理相關類型轉換方法函數如下表所示:
函數 | 作用 |
int(x) | 將x轉換成整數類型 |
float(x) | 將x轉換成浮點類型 |
complex(real[,imag]) | 創建一個複數 |
str(x) | 將x轉換成字符串 |
repr(x) | 將x轉換成表達式字符串 |
eval(x) | 計算在字符串中有效的Python表達式,並返回一個對象 |
chr(x) | 將x轉換成一個字符 |
ord(x) | 將一個字符x轉換爲他所對應的整數值 |
hex(x) | 將一個整數x轉換成爲一個十六進制字符串 |
oct(x) | 將一個整數x轉換成爲一個八進制字符串 |