一、 整數:
? ? Python可以處理任意大小的整數,當然包括負整數
二、 浮點數
? ?? 浮點數也就是小數,之所以稱為浮點數
? ? ? 整數和浮點數在計算機內部存儲的方式是不同的,整數運算永遠是精確的(除法難道也是精確的?是的?。↑c數運算則可能會有四舍五入的誤差。
三: 字符串
? ?
字符串是以
''
或
""
括起來的任意文本,比如
'abc'
,
"xyz"
等等。
四: 布爾值
? ?
一個布爾值只有
True
、
False
兩種值
? ?
布爾值可以用
and
、
or
和
not
運算。
五: 空值
? ??
空值是Python里一個特殊的值,用
None
表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。
?
變量:
在Python程序中,變量是用一個變量名表示,變量名必須是 大小寫 英文、數字和_的 組合,且不能用數字開頭
在Python中,等號
=
是賦值語句,可以把任意數據類型賦值給變量,同一個變量可以反復賦值,而且可以是不同類型的變量,例如:
a = 123 # a是整數 print a a = 'imooc' # a變為字符串 print a
這種變量本身類型不固定的語言稱之為 動態語言 ,與之對應的是 靜態語言。
靜態語言在定義變量時必須指定變量類型,如果賦值的時候類型不匹配,就會報錯。例如Java是靜態語言,
?
當我們寫:
a = 'ABC'
時,Python解釋器干了兩件事情:
1. 在內存中創建了一個
'ABC'
的字符串;
2. 在內存中創建了一個名為
a
的變量,并把它指向
'ABC'
。
?
也可以把一個變量a賦值給另一個變量b,這個操作實際上是把變量b指向變量a所指向的數據,例如下面的代碼:
a = 'ABC' b = a a = 'XYZ' print b
最后一行打印出變量b的內容到底是'ABC'呢還是'XYZ'?如果從數學意義上理解,就會錯誤地得出b和a相同,也應該是'XYZ',但實際上b的值是'ABC',讓我們一行一行地執行代碼,就可以看到到底發生了什么事:
執行
a = 'ABC'
,解釋器創建了字符串 ?'ABC'和變量 a,并把a指向 'ABC':
執行
b = a
,解釋器創建了變量 b,并把b指向 a 指向的字符串'ABC':
執行
a = 'XYZ'
,解釋器創建了字符串'XYZ',并把a的指向改為'XYZ',但b并沒有更改:
所以,最后打印變量
b
的結果自然是
'ABC'
了。
?
,Python字符串用
\
進行轉義。
\n 表示換行 \t 表示一個制表符 \\ 表示 \ 字符本身
?
如果一個字符串包含很多需要轉義的字符,對每一個字符都進行轉義會很麻煩。為了避免這種情況,我們可以在字符串前面加個前綴
?r?
,表示這是一個?raw?字符串,里面的字符就不需要轉義了。例如:
r'\(~_~)/ \(~_~)/'
但是
r'...'
表示法不能表示多行字符串,也不能表示包含
'
和?
"
的字符串(為什么?)
如果要表示多行字符串,可以用
'''...'''
表示:
'''Line 1 Line 2 Line 3'''
上面這個字符串的表示方法和下面的是完全一樣的:
'Line 1\nLine 2\nLine 3'
還可以在多行字符串前面添加
?r?
,把這個多行字符串也變成一個
raw字符串
:
r'''Python is created by "Guido". It is free and easy to learn. Let's start learn Python in imooc!'''
?
因為Python的誕生比Unicode標準發布的時間還要早,所以最早的Python只支持ASCII編碼,普通的字符串 'ABC' 在Python內部都是 ASCII編碼 的。
Python在后來添加了對Unicode的支持,以Unicode表示的字符串用u'...'表示,比如:
print u'中文' 中文
注意: ? 不加 u ,中文就不能正常顯示。
?
轉義:
u'中文\n日文\n韓文'
多行:
u'''第一行 第二行'''
raw+多行:
ur'''Python的Unicode字符串支持"中文", "日文", "韓文"等多種語言'''
如果中文字符串在Python環境下遇到 UnicodeDecodeError,這是因為.py文件保存的格式有問題。可以在第一行添加注釋
# -*- coding: utf-8 -*-
目的是告訴Python解釋器,用UTF-8編碼讀取源代碼。然后用Notepad++ 另存為... 并選擇UTF-8格式保存。
?
Python的 整數運算結果仍然是整數,浮點數運算結果仍然是浮點數 :
1 + 2 # ==> 整數 3 1.0 + 2.0 # ==> 浮點數 3.0
但是 整數和浮點數混合運算的結果就變成浮點數了:
1 + 2.0 # ==> 浮點數 3.0
?
為什么要區分整數運算和浮點數運算呢
?這是因
為整數運算的結果永遠是精確的,
而浮
點數運算的結果不一定精確
,因為計算機內存再大,也無法精確表示出無限循環小數,比如
?0.1
換成二進制表示就是無限循環小數。
?
Python的除法運算和java一樣。/ 是整除。%是取余。
?
在Python中,布爾類型還可以與其他數據類型做 and、or和not運算,請看下面的代碼:
a = True print a and 'a=T' or 'a=F'
計算結果不是布爾類型,而是字符串 'a=T',這是為什么呢?
因為Python把
0
、
空字符串''
和
None
看成?
False
,
其他數值
和
非空字符串
都看成
?True
,所以:
True and 'a=T' 計算結果是 'a=T' 繼續計算 'a=T' or 'a=F' 計算結果還是 'a=T'
要解釋上述結果,又涉及到 and 和 or 運算的一條重要法則: 短路計算 。
?
1.?在計算
?a and b?
時,如果 a 是 False,則根據與運算法則,整個結果必定為 False,因此返回 a;如果 a 是 True,則整個計算結果必定取決與 b,因此返回 b。
2. 在計算
?a or b?
時,如果 a 是 True,則根據或運算法則,整個計算結果必定為 True,因此返回 a;如果 a 是 False,則整個計算結果必定取決于 b,因此返回 b。
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
