Day02_變量及數據類型

1羡鸥、標識符

標識符是程序中某一元素(變量、關鍵字惧浴、函數、類捐腿、模塊、對象)名字集合操软,包含保留字宪祥。說通俗點,標識符就是以后給我們寫的每個代碼所起的名字藏澳,就好比我們每個人生下來都要起名字肘交。除了Python保留字的名字是固定的,其它元素都可以根據標識符的命名規(guī)則進行命名凉驻。

合法的 Python 標識符复罐,需要遵守如下規(guī)定:
-第一個字符必須是字母或下劃線(_)
-剩下的字符可以是字母和數字或下劃線
-大小寫敏感
-不能是 Python 的保留字,例如 def胀滚、class 就不能作為標識符

Hello
hello
_max
_Min
Apple10
apple_10
V_3_V
CON2_5
_Test_3

以雙下劃線開頭的 __foo 代表類的私有成員乱投,以雙下劃線開頭和結尾的 foo 代表 Python 里特殊方法專用的標識戚炫,如 init() 代表類的構造函數。

在 Python 中的保留字双肤。這些保留字不能用作常數或變數茅糜,或任何其他標識符名稱。
查看保留字可以通過以下代碼查看蔑赘。

import keyword
print("keyword:",keyword.kwlist)

運行代碼:

keyword: ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']

2、變量

變量是標識符的一種贮庞,是一個用于保存值的占位符究西∥锱纾可以通過變量名獲得對值的引用,可以是任意的數據類型扇丛。變量命名時盡量體現出值的數據類型尉辑。如命名 count、length 和 size 表明數據類型是數字卓练,命名 name购啄、title 和 message 表明數據類型是字符串,單個字符命名的變量諸如 i顽悼、j几迄、k 通常在循環(huán)中使用。

Python 中的變量不需要聲明木羹,每個變量在使用前都必須賦值屿愚,變量賦值以后該變量才會被創(chuàng)建。在 Python 中穷遂,變量就是變量娱据,它沒有類型,我們所說的"類型"是變量所指的內存中對象的類型(如整型忌穿,字符串,數組等)屈芜。
等號 = 是賦值語句朴译,可以把任意數據類型賦值給變量眠寿,同一個變量可以反復賦值,而且可以是不同類型的變量盯拱。

變量賦值

a = 123 # a 是整數
a = 'abc' # a 是字符串

多個變量賦值

a = b = c = 1

以上實例狡逢,創(chuàng)建一個整型對象,值為 1明吩,從后向前賦值殷费,三個變量被賦予相同的數值。

a, b, c = 1, 2, "neo"

以上實例仍律,兩個整型對象 1 和 2 的分配給變量 a 和 b实柠,字符串對象 "neo" 分配給變量 c。

常量

所謂常量就是不能變的變量草则,比如常用的數學常數 π 就是一個常量蟹漓。在 Python 中葡粒,通常用全部大寫的變量名表示常量:

PI=3.14

事實上 PI 仍然是個變量膜钓,Python 根本無法保證 PI 不會被改變卿嘲,所以,用全部大寫的變量名表示常量只是一個習慣上的用法沃疮,如果你一定要改梅肤,語法也不會報錯。

3、數據類型

Python3 中有六個標準的數據類型:Number(數字)似扔、String(字符串)盯桦、List(列表)泉手、Tuple(元組)、Sets(集合)斩萌、Dictionary(字典)颊郎。

Python3 的六個標準數據類型中:
不可變數據(3 個):Number(數字)、String(字符串)姆吭、Tuple(元組)内狸;
可變數據(3 個):List(列表)、Dictionary(字典)锰瘸、Set(集合)瘪撇。

Number(數字)

Python 支持三種不同的數值類型:
整型(Int) - 通常被稱為是整型或整數港庄,是正或負整數鹏氧,不帶小數點佩谣。Python3 整型是沒有限制大小的,可以當作 Long 類型使用吊履,所以 Python3 沒有 Python2 的 Long 類型调鬓。
布爾(bool)- bool 類型來表示真(對)或假(錯),并分別用 Ture(真或對)或 False(假或錯)來表示缀踪。 bool 值可以當作整數來代替虹脯,即 True 代表整數1循集,False 代表整數 0,并可以參與運算疆柔,但在項目開發(fā)中不能這樣用蔼紧。
浮點型(float) - 浮點型由整數部分與小數部分組成,浮點型也可以使用科學計數法表示(2.5e2 = 2.5 x 100 = 250)
復數( (complex)) - 復數由實數部分和虛數部分構成彬犯,可以用a + bj,或者complex(a,b)表示查吊, 復數的實部a和虛部b都是浮點型逻卖。

counter = 100          # 整型變量
miles   = 1000.0       # 浮點型變量
name    = "test"     # 字符串
 
print (counter)
print (miles)
print (name)

如果改變了數字數據類型的值,將重新分配內存空間炼杖。

數字類型轉換
--int(x) 將x轉換為一個整數。
--.float(x) 將x轉換到一個浮點數熙含。
--complex(x) 將x轉換到一個復數艇纺,實數部分為 x,虛數部分為 0蚓聘。
--complex(x, y) 將 x 和 y 轉換到一個復數盟劫,實數部分為 x侣签,虛數部分為 y。x 和 y 是數字表達式。額外說明

print (5 + 4)  # 加法   輸出 9
print (4.3 - 2) # 減法   輸出 2.3
print (3 * 7)  # 乘法  輸出 21
print (2 / 4)  # 除法袋毙,得到一個浮點數    輸出 0.5
print (2 // 4) # 除法听盖,得到一個整數 輸出 0
print (17 % 3) # 取余   輸出 2
print (2 ** 5) # 乘方  輸出 32

String(字符串)

創(chuàng)建字符串可以使用單引號、雙引號仓坞、三單引號和三雙引號腰吟,其中三引號可以多行定義字符串,Python 不支持單字符類型嫉称,單字符也在Python也是作為一個字符串使用灵疮。

s = '學習Python'
# 切片
s[0], s[-1], s[3:], s[::-1] # '優(yōu)', 'n', 'ython', 'nohtyP的習學'
# 替換震捣,還可以使用正則表達式替換
s.replace('Python', 'Java') # '學習Java'
# 查找闹炉,find()润樱、index()祥国、rfind()、rindex()
s.find('P')         # 3, 返回第一次出現的子串的下標
s.find('h', 2)          # 6, 設定下標2開始查找
s.find('23333')         # -1, 查找不到返回-1
s.index('y')            # 4, 返回第一次出現的子串的下標
s.index('P')        # 不同與find(), 查找不到會拋出異常
# 轉大小寫, upper()啊犬、lower()壁查、swapcase()、capitalize()语御、istitle()应闯、isupper()挂捻、islower()
s.upper()           # '學習PYTHON'
s.swapcase()            # '學習pYTHON', 大小寫互換
s.istitle()         # True
s.islower()         # False
# 去空格,strip()、lstrip()骨田、rstrip()
# 格式化
s1 = '%s %s' % ('Windrivder', 21)   # 'Windrivder 21'
s2 = '{}, {}'.format(21, 'Windridver')  # 推薦使用format格式化字符串
s3 = '{0}, {1}, {0}'.format('Windrivder', 21)
s4 = '{name}: {age}'.format(age=21, name='Windrivder')
# 連接與分割,使用 + 連接字符串声怔,每次操作會重新計算态贤、開辟、釋放內存醋火,效率很低悠汽,所以推薦使用join
l = ['2017', '03', '29', '22:00']
s5 = '-'.join(l)            # '2017-03-29-22:00'
s6 = s5.split('-')          # ['2017', '03', '29', '22:00']

需要注意的是字符串編碼,所有的 Python 字符串都是 Unicode 字符串芥驳,當需要將文件保存到外設或進行網絡傳輸時介粘,就要進行編碼轉換晚树,將字符轉換為字節(jié)姻采,以提高效率。

# encode 將字符轉換為字節(jié)
str = '學習Python'
print (str.encode())            # 默認編碼是 UTF-8  輸出:b'\xe5\xad\xa6\xe4\xb9\xa0Python'
print (str.encode('gbk'))      # 輸出  b'\xd1\xa7\xcf\xb0Python'
# decode 將字節(jié)轉換為字符
print (str.encode().decode('utf8'))   # 輸出 '學習Python'
print (str.encode('gbk').decode('gbk'))             # 輸出 '學習Python'

List(列表)

列表是寫在方括號 [] 之間、用逗號分隔開的元素列表慨亲,列表可以完成大多數集合類的數據結構實現婚瓜。列表中元素的類型可以不相同,它支持數字刑棵,字符串甚至可以包含列表(所謂嵌套)巴刻,列表中的元素是可以改變。
列表用 [ ] 標識蛉签,是 python 最通用的復合數據類型胡陪。
列表中值的切割也可以用到變量 [頭下標:尾下標] ,就可以截取相應的列表碍舍,從左到右索引默認 0 開始柠座,從右到左索引默認 -1 開始,下標可以為空表示取到頭或尾片橡。
列表

Weekday = ['Monday','Tuesday','Wednesday','Thursday','Friday']
print(Weekday[0])   # 輸出 Monday
#list 搜索
print(Weekday.index("Wednesday"))
#list 增加元素
Weekday.append("new")
print(Weekday)
# list 刪除
Weekday.remove("Thursday")
print(Weekday)

Tuple(元組)

元組(tuple)與列表類似妈经,不同之處在于元組的元素不能修改。元組寫在小括號 () 里捧书,元素之間用逗號隔開吹泡,組中的元素類型也可以不相同。

letters = ('a','b','c','d','e','f','g')
print(letters[0])  # 輸出 'a'
print(letters[0:3])  # 輸出一組 ('a', 'b', 'c')

Sets(集合)

集合(set)是一個無序不重復元素的序列经瓷,使用大括號 {} 或者 set() 函數創(chuàng)建集合爆哑,集合不能被切片也不能被索引,除了做集合運算之外舆吮,集合元素可以被添加還有刪除泪漂。

注意:創(chuàng)建一個空集合必須用 set() 而不是 {} ,因為 {} 是用來創(chuàng)建一個空字典歪泳。

a_set = {1,2,3,4}
# 添加
a_set.add(5)
print(a_set)  # 輸出{1, 2, 3, 4, 5}
# 刪除
a_set.discard(5)
print(a_set)  # 輸出{1, 2, 3, 4}

Dictionary(字典)

字典是一種映射類型,它的元素是鍵值對露筒,字典的關鍵字必須為不可變類型呐伞,且不能重復。創(chuàng)建空字典使用 {} 慎式。

Logo_code = {
 'BIDU':'Baidu',
 'SINA':'Sina',
 'YOKU':'Youku'
 }
print(Logo_code)
# 輸出{'BIDU': 'Baidu', 'YOKU': 'Youku', 'SINA': 'Sina'}
print (Logo_code['SINA'])       # 輸出鍵為 'one' 的值
print (Logo_code.keys())   # 輸出所有鍵
print (Logo_code.values()) # 輸出所有值
print (len(Logo_code))  # 輸出字段長度

4伶氢、運算符

運算符主要包括算術運算符、比較運算符瘪吏、賦值運算符癣防、位運算符、邏輯運算符掌眠、成員運算符和身份運算符蕾盯。

算術運算符

運算符 含義 描述 實例
+ 兩個對象相加 a + b 輸出結果 31
- 得到負數或是一個數減去另一個數 a - b 輸出結果 -11
* 兩個數相乘或是返回一個被重復若干次的字符串 a * b 輸出結果 210
/ x 除以 y b / a 輸出結果 2.1
% 取模 返回除法的余數 b % a 輸出結果 1
** 返回 x 的 y 次冪 a ** b 為10的21次方
// 取整除 往小的方向取整數 b // a 輸出結果 2

比較運算符

運算符 含義 描述 實例
== 等于 比較對象是否相等 a == b 返回 False
!= 不等于 比較兩個對象是否不相等 a != b 返回 True
> 大于 返回 x 是否大于 y a > b 返回 False
< 小于 返回 x 是否小于 y a < b 返回 True
>= 大于等于 返回 x 是否大于等于 y a >= b 返回 False
<= 小于等于 返回 x 是否小于等于 y a <= b 返回 False

賦值運算符

運算符 含義 實例
= 簡單的賦值運算符 c = a + b 將 a + b 的運算結果賦值為 c
+= 加法賦值運算符 c += a 等效于 c = c + a
-= 減法賦值運算符 c -= a 等效于 c = c - a
*= 乘法賦值運算符 c *= a 等效于 c = c * a
/= 除法賦值運算符 c /= a 等效于 c = c / a
%= 取模賦值運算符 c %= a 等效于 c = c% a
**= 冪賦值運算符 c **= a 等效于 c = c ** a
//= 取整除賦值運算符 c //= a 等效于 c = c // a

位運算符

位運算就是直接對整數在內存中對應的二進制位進行操作

#a 為 60,b 為 13
#內存二進制值為
#a = 0011 1100
#b = 0000 1101
運算符 含義 描述 實例
& 按位與運算符 參與運算的兩個值,如果兩個相應位都為 1蓝丙,則該位的結果為 1级遭,否則為 0 (a & b) 輸出結果 12 望拖,二進制解釋:0000 1100
| 按位或運算符 只要對應的二個二進位有一個為 1 時,結果位就為 1 (a |b) 輸出結果 61 挫鸽,二進制解釋: 0011 1101
^ 按位異或運算符 當兩對應的二進位相異時说敏,結果為 1 (a ^ b) 輸出結果 49 ,二進制解釋:0011 0001
~ 按位取反運算符 對數據的每個二進制位取反丢郊,即把 1 變?yōu)?0盔沫,把 0 變?yōu)?1。~x 類似于 -x-1 (~a ) 輸出結果 -61 枫匾,二進制解釋: 1100 0011架诞, 在一個有符號二進制數的補碼形式。
<< 左移動運算符 運算數的各二進位全部左移若干位婿牍,由“<<”右邊的數指定移動的位數侈贷,高位丟棄,低位補0 a << 2 輸出結果 240 等脂,二進制解釋: 1111 0000
>> 右移動運算符 把“>>”左邊的運算數的各二進位全部右移若干位俏蛮,“>>”右邊的數指定移動的位數 a >> 2 輸出結果 15 ,二進制解釋: 0000 1111

邏輯運算符

運算符 含義 邏輯表達式 描述
and 布爾“與” x and y 同真為真上遥,一假則假
or 布爾“或” x or y 同假才假搏屑,一真即真
not 布爾“非” x not y 非真即假,非假即真

Python 也把任意的空數據結構視為假粉楚,把任何非空數據結構視為真辣恋。真和假的概念是 Python 中每個對象的固有屬性,一般來說:① 數字如果非零模软,則為真伟骨;② 其他對象如果非空,則為真燃异。Python 還有一個特殊對象:None携狭,它總被認為是假。

成員運算符

運算符 描述
in 如果在指定的序列中找到值返回 True回俐,否則返回 False
not in 如果在指定的序列中沒有找到值返回 True逛腿,否則返回 False
a = 1
b = 2
list = [2, 3, 4, 5]

if a in list:
    print("a在列表中")
else:
    print("a不在列表中") #輸出:a不在列表中

if b not in list:
    print("b不在列表中")
else:
    print("b在列表中") #輸出:b在列表中

身份運算符

份運算符是 Python 用來判斷的兩個對象的存儲單元是否相同的一種運算符號,身份運算符只有 is 和 is not 兩個運算符仅颇,返回的結果都是 True 或者 False

運算符 描述 實例
is 判斷兩個標識符是不是引用自一個對象 x is y单默, 如果引用的是同一個對象則返回 True,否則返回 False
is not 是判斷兩個標識符是不是引用自不同對象 x is not y忘瓦,如果引用的不是同一個對象則返回結果 True搁廓,否則返回 False

···
a = [0, 1, 2] #變量 a 當中的元素都是數字
b = [1-1, 2-1, 3-1] #變量 b 當中的每個元素都是表達式
c = a
print(a) #結果:[0, 1, 2]
print(b) #結果:[0, 1, 2]
print(a is b) #結果:False
print(a is c) #結果:True
···

is 用于判斷兩個變量引用對象是否為同一個,== 用于判斷引用變量的值是否相等。

運算符優(yōu)先級

優(yōu)先級 運算符 描述 結合性
19 () 小括號
18 x[i] 索引運算符
17 x.attribute 屬性訪問
16 ** 乘方(指數) 右(注意)
15 ~ 按位取反 右(注意)
14 +, - 正號枚抵,負號 右(注意)
13 *, /, %, // 乘线欲,除,取模汽摹,取整除
12 +, - 加號李丰,減號
11 >>, << 右移動運算符,左移動運算符
10 & 按位與運算符 右(注意)
9 ^ 按位異或運算符
8 | 按位或運算符
7 ==, !=, <=, <, >, >= 等于逼泣,不等于趴泌,小于等于,小于拉庶,大于等于嗜憔,大于
6 is, is not 身份運算符
5 in, not in 成員運算符
4 not 邏輯運算符非 右(注意)
3 and 邏輯運算符與
2 or 邏輯運算符或
1 exp1, exp2 逗號運算符
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市氏仗,隨后出現的幾起案子吉捶,更是在濱河造成了極大的恐慌,老刑警劉巖皆尔,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呐舔,死亡現場離奇詭異,居然都是意外死亡慷蠕,警方通過查閱死者的電腦和手機珊拼,發(fā)現死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來流炕,“玉大人澎现,你說我怎么就攤上這事∶勘伲” “怎么了剑辫?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵,是天一觀的道長渠欺。 經常有香客問我妹蔽,道長,這世上最難降的妖魔是什么峻堰? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮盅视,結果婚禮上捐名,老公的妹妹穿的比我還像新娘。我一直安慰自己闹击,他們只是感情好镶蹋,可當我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般贺归。 火紅的嫁衣襯著肌膚如雪淆两。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天拂酣,我揣著相機與錄音秋冰,去河邊找鬼。 笑死婶熬,一個胖子當著我的面吹牛剑勾,可吹牛的內容都是我干的。 我是一名探鬼主播赵颅,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼虽另,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了饺谬?” 一聲冷哼從身側響起捂刺,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎募寨,沒想到半個月后族展,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡绪商,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年苛谷,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片格郁。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡腹殿,死狀恐怖,靈堂內的尸體忽然破棺而出例书,到底是詐尸還是另有隱情锣尉,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布决采,位于F島的核電站自沧,受9級特大地震影響,放射性物質發(fā)生泄漏树瞭。R本人自食惡果不足惜拇厢,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晒喷。 院中可真熱鬧孝偎,春花似錦、人聲如沸凉敲。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至势决,卻和暖如春阻塑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背果复。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工陈莽, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人据悔。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓传透,卻偏偏與公主長得像,于是被迫代替她去往敵國和親极颓。 傳聞我的和親對象是個殘疾皇子朱盐,可洞房花燭夜當晚...
    茶點故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內容