一、Python的對象模型
對象是Python語言中最基本的概率,在Python中處理的一切都是對象。Python中許多內置對象可提供編程者使用,
內置對象可直接使用,如數字、字符串、列表 、del等;非內置對象需要導入模塊才能使用,如正弦函數sin(x),
隨機產生函數random()等;
常用內置對象如下:
二、Python變量(不需要事先聲明變量名及其類型)
如
>>>x = 3 創建整型變量x,并賦值為3
>>> x = 'hello world. ' 創建字符串變量x,并賦值為‘hello world.’
如果這兩個創建是在一起的時候,x的值已經不是3了,改為hello word.
如下:
x = 3
print(x)
x = 'hello world'
print(x)
運行結果:
E:\project\Python\python\python.exe E:/project/Python/Process/Test1/Test.py
3
hello world
Process finished with exit code 0
x = 3
#print(x) (#注釋符號)
x = 'hello world'
print(x)
運行結果:
E:\project\Python\python\python.exe E:/project/Python/Process/Test1/Test.py
hello world
Process finished with exit code 0
Python屬于強類型編程語言,Python解釋器會根據**賦值或運算**來自動推斷變量類型。
Python還是一種動態類型語言,變量的類型也是可以隨時變化的。
如:
x = 3
print(type(x))
輸出結果:
x = 'hello world.'
print(type(x))
輸出結果:
x = [1,2,3]
print(type(x))
x = isinstance(3,int)
print(type(x))
輸出結果:
課外補充:
isinstance() 函數來判斷一個對象是否是一個已知的類型,類似 type()。
isinstance() 與 type() 區別:
type() 不會認為子類是一種父類類型,不考慮繼承關系。
isinstance() 會認為子類是一種父類類型,考慮繼承關系。
如果要判斷兩個類型是否相同推薦使用 isinstance()。
重點:
如果變量出現在賦值運算符或復合賦值運算符(例如+=、*=等)的左邊,則表示創建變量或修改變
量的值,否則表示應用該變量的值。
x = 3
print(x**2) #**2 表示x的二次方
x += 6 #等價于x = x(3)+6
print(x)
x = [1,2,3]
x[2] = 5
print(x) #print 可以直接輸出x這個列表
print(x[2])
運行結果:
9
9
[1, 2, 5]
5
**特別注意: 字符串和元組屬于不可變序列,不能通過下標的方式來修改其中的元素值
#(tuple)元組:
x = (1,2,3)
print(x)
x[1] = 3
輸出結果:
Traceback (most recent call last):
File "E:/project/Python/Process/Test1/Test.py", line 3, in
x[1] = 3
(1, 2, 3)
TypeError: 'tuple' object does not support item assignment
#元組對象不支持不支持項目分配
#(stirng)字符串:
x = 'hello world'
print(x)
x[1] = 3
輸出結果:
hello world
Traceback (most recent call last):
File "E:/project/Python/Process/Test1/Test.py", line 3, in
x[1] = 3
TypeError: 'str' object does not support item assignment
#字符串對象不支持項目分配
**在Python中,準許多個變量指向同一個值(**補充:id()函數用于獲取對象的內存地址。id(object返回對象的“身份”。這是一個整數(或長整數),在該對象的生存期內,此整數保證是唯一且恒定的。具有不重疊生存期的兩個對象可能具有相同的id()值。在CPython實現細節:這是對象在內存中的地址。)
x = 3
print(id(x))
y = x
print(id(y))
**輸出結果:**
E:\project\Python\projectTopy\venv\Scripts\python.exe E:/project/Python/projectTopy/Test.py
140734928023872
140734928023872
Process finished with exit code 0
如圖:
如果當其中一個變量改值以后,其內存地址將會變化,但這并不影響另一個變量
x = 3
y = x
x += 6
print(x)
print(id(x))
print(id(y))
輸出結果:
E:\project\Python\projectTopy\venv\Scripts\python.exe E:/project/Python/projectTopy/Test.py
9
140735356760576
140735356760384
Process finished with exit code 0
如圖:
所以我們得出,
Python采用的是
基于值得內存管理方式
,如果為不同變量賦值為相同值,這個值在內存中只有一份,多個變量指向同一個內存地址。
x = 3
y = 3
z = 3
k = x
j = y
l = z
print(id(x),id(y),id(z),id(k),id(j),id(l))
運行結果:
E:\project\Python\projectTopy\venv\Scripts\python.exe E:/project/Python/projectTopy/Test.py
140735356760384 140735356760384 140735356760384 140735356760384 140735356760384 140735356760384
Process finished with exit code 0
在我們驗證結論過程中,我們使用到了變量的賦值,其實Python變量的賦值與一般的其他語言有一些差別。
Python變量語句的執行過程:
1、首先把等號右側表達式的值計算出來,然后在內存中尋找一個位置把值存放進去,最后創建變量指
向這個內存地址。Python中的變量并不直接存儲值,而是存儲了值得內存地址或者應用,這也是變量類
型隨時可以更改的原因
2、同時Python具有自動存儲管理功能,對于沒有任何變量指向的值,Python自動將其刪除,Python跟
蹤所有的值,并自動刪除不再有變量指向的值。因此,Python程序猿一般情況下不需要太多考慮內存管
理的問題。
3、顯示使用del命令刪除不需要的值或顯示關閉不再需要訪問的資源,乃是一個好的習慣,同時也是一個優秀程序員的基本素養之一。
Python變量的定義注意事項:
1、變量名必須以字母或下劃線開頭,但以下劃線開頭的變量在Python中有特性含義
2、變量名中不能有空格以及標點符號(括號、引號、逗號、斜線、反斜線、冒號、句號、問號等)
3、不能使用關鍵字作為變量名,
可以導入keyword模塊后使用print(keyword.kwlist)查看所有PythoN
關鍵字
4、不建議使用系統內置的模塊名、類型名或函數名以及已導入的模塊名及其成員名作變量名,這將會
改變其類型和含義,
可以通過dir(_ builtins_ )查看所有內置模塊、類型和函數;
5、變量名對英文字母的大小寫敏感,如x與X不是同一個變量。
三、數字
數字的特性:
1、數字是不可變對象,可以表示任意大小的數字
2、整數類型可以分為:十進制(我們平時使用的整數)、十六進制整數(利用十六個數字
(1,2,3,4,5,6,7,8,9,a,b,c,d,e,f)來表示整數,數字前面必須以0x開頭,如0xc)、八進制整數(與十六進制類似,必須以0o開頭)、二進制整數(必須以0b開頭)
3、浮點數(小數)
4、Python內置支持
復數類型
a = 1 + 12j
b = 12 + 1j
c = a + b
print(c)
運行結果:
E:\project\Python\projectTopy\venv\Scripts\python.exe E:/project/Python/projectTopy/Test.py
(13+13j)
Process finished with exit code 0
/**使用c.real ---> 查看復數實部
c.imag ----> 查看復數虛數
c.conjugate() ---->返回共軛復數
a*b---->復數乘法
a/b---->復數除法
*/
5、Python3.6.X支持數字中間位置使用單個下劃線作為分割來提高數字的可讀性,類似于數學上使用逗號作為千分位分隔
符。
>>>x = 1_000_000
>print(x)
1000000
四、字符串
性質:
1、用單引號、雙引號或三引號界定的符號系列稱為字符串
2、 單引號、雙引號、三單引號、三雙引號可以互相嵌套, 用來表示復雜字符串 ‘abc’、‘123’、‘中國
‘、“Python”、’’‘Tom said, “Let’s go”’’’
print("janry")
print('seri')
print('xx'"x")
print('''tomm''')
運行結果:
E:\project\Python\projectTopy\venv\Scripts\python.exe E:/project/Python/projectTopy/Test.py
janry
seri
xxx
tomm
Process finished with exit code 0
3、 字符串屬于不可變序列 ? 空字符串表示為’‘或 “”
4、 三引號’’'或"""表示的字符串可以換行,支持排版較為復 雜的字符串;三引號還可以在程序中表示較長的注
字符串的運算:
1、字符串合并
a = "xiha"
b = "haxi"
c = a + b
d = "hshsh""xjjjx"
print(c)
print(d)
運行結果:
E:\project\Python\projectTopy\venv\Scripts\python.exe E:/project/Python/projectTopy/Test.py
xihahaxi
hshshxjjjx
Process finished with exit code 0
#注意 :不準許如此連接字符串
d = ab # 錯誤 NameError: name 'ab' is not defined
2、字符串格式化
%d、%i轉換為帶符號的十進制整數
%o轉換為帶符號的八進制整數
%x、%X轉換為帶符號的十六進制整數
%e轉化為科學計數法表示的浮點數(e 小寫)
%E轉化為科學計數法表示的浮點數(E 大寫)
%f、%F轉化為十進制浮點數
%g智能選擇使用 %f 或 %e 格式
%G智能選擇使用 %F 或 %E 格式
%c格式化字符及其 ASCII 碼
%r使用 repr() 函數將表達式轉換為字符串
%s使用 str() 函數將表達式轉換為字符串
%10d 表示輸出的整數寬度至少為 10;
%20s 表示輸出的字符串寬度至少為 20。
%m.nf 、 %.nf (對于小數(浮點數),print() 還允許指定小數點后的數字位數,也即指定小 數的
輸出精度。精度值需要放在最小寬度之后,中間用點號.隔開;也可以不寫最小寬度,只寫精度。
print('%1.3f'%12.22222) #輸出數字的編寫形式,注意引號的個數
print("%d:%c"%(65,65))#輸出字符
#print("%1.3"%12.111)
print("""my name is %s ,and age is 12 %d"""%('xixi',39)) #輸出字符串
print()
運行結果:
E:\project\Python\projectTopy\venv\Scripts\python.exe E:/project/Python/projectTopy/Test.py
12.222
65:A
my name is xixi ,and age is 12 39
Process finished with exit code 0
3、常用轉義字符
轉義字符用法
:
print('hello \n world') #\n轉行符
print('\101') #三位八位進制對應的字符
print('\x41') #兩位十六進制數對應的字符
print('我是\u5f20\u4e09') #四位十六進制數表示Unicode字符
運行結果:
E:\project\Python\projectTopy\venv\Scripts\python.exe E:/project/Python/projectTopy/Test.py
hello
world
A
A
我是張三
Process finished with exit code 0
補充:
字符串界定符前面加字母r或R表示
原始字符串
,其中的特 殊字符不進行轉義,但字符串的最后一個
字符不能是\。 原始字符串主要用于正則表達式、文件路徑或者URL的場合。
path = 'C :\Windows\notepad.exe' #字符\n被轉義為換行符
print(path)
PATH = r'C:\windows\notepad.exe' #原始字符串,任何字符都不轉義
print(PATH)
運行結果:
E:\project\Python\projectTopy\venv\Scripts\python.exe E:/project/Python/projectTopy/Test.py
C :\Windows
otepad.exe
C:\windows\notepad.exe
Process finished with exit code 0
繼續學習,敬請查看
Python 語法基礎(二)
原文鏈接:https://blog.csdn.net/weixin_43452424/article/details/104519943