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 | 逗號運算符 | 左 |