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

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