由于最近有自動化測試的需要,對Python的語法不是很熟悉,Python的介紹就忽略了,下面開始Python基本語法的學習
一、第一個Python程序
下載安裝Pycharm
:https://www.jetbrains.com/pycharm/download/#section=windows
創建工程比較簡單,這邊就直接開始擼碼:
python中的main
函數使用if __name__ == '__main__':
開始
if __name__ == '__main__':
print("hello python")
運行結果:
二、數據類型
在使用數據類型之前,先來了解下python中的注釋:
單行注釋:#內容
多行注釋:'''內容'''
或"""內容"""
1. 整型
表示一個整數:
if __name__ == '__main__':
# 定義整數變量
i = 10
print(i)
# 輸出變量類型
print(type(i))
運行結果:
2. 浮點型
表示一個小數:
if __name__ == '__main__':
# 定義小數變量
f = 8.8
print(f)
print(type(f))
運行結果:
3. 布爾類型
Python中布爾類型使用True
和False
表示,這兩位還可以表示1
和0
的整數。
if __name__ == '__main__':
# 定義布爾類型
b = True
print(b)
print(type(b))
# 將True和False轉為為整形表示
print(int(True))
print(int(False))
運行結果:
4. 字符串類型
4.1 定義方式
字符串是我們使用的最常見的類型,python中字符串類型定義方式有三種:
定義方式 | 描述 |
---|---|
單引號:'內容'
|
表示單行字符串 |
雙引號:"內容"
|
和單引號相同,表示單行字符串 |
三對單引號:'''內容'''
|
表示多行字符串 |
三對雙引號:"""內容"""
|
表示多行字符串 |
if __name__ == '__main__':
info = '一對單引號'
print(info, type(info))
print("-------------")
info = "一對雙引號"
print(info, type(info))
print("-------------")
info = '''三對單引號
三對單引號
三對單引號
'''
print(info, type(info))
print("-------------")
info = '''三對雙引號
三對雙引號
三對雙引號
'''
print(info, type(info))
print("-------------")
運行結果:
4.2 獲取字符串長度
兩種方式:
- 使用內置
len
函數:
info = "abc"
print(len(info))
- 使用字符串的
__len__
函數:
info = "abc"
print(info.__len__())
4.3 獲取字符串拼接
python中,字符串拼接使用+
號,但數字型變量(整型和浮點型)和字符串相加會報錯:
info = "abc"
print(info + 1)
運行結果:
可以調用內置函數str
,將之轉為字符串類型:
print(info + str(1))
5. 類型轉換
上面基本類型之間都可以相互轉換,方式如下:
轉換方法 | 描述 |
---|---|
str(var) |
將var 轉換為字符串 |
int(var) |
將var 轉換為整形 |
float(var) |
將var 轉換為浮點型 |
三、循環
除了循環外,我把條件控制也放在這塊了
1. 條件控制
1.1 單分支
用于判斷表達式是否成立,語法:if 表達式:
if True:
print("真")
else:
print("假")
運行結果:
1.2 多分支
多分支使用elif
:
i = 10
if i > 10:
print("i大于10")
elif i < 10:
print("i小于10")
else:
print("i等于10")
運行結果:
1.3 三目運算符
python中的三目運算符是我見過的最奇葩的,語法:成立執行語句 if 條件 else 不成立執行語句
:
gender = 0
print("男") if gender == 1 else print("女")
運行結果:
2. for循環
2.1 for循環基本語法
學習for循環之前,先來了解下range
,range
也是python中一個容器類型,表示一個區間,定義語法為:range([開始],結束,[步長])
for循環可以遍歷range
中的內容,for循環的語法為:for 變量名 in 容器:
for i in range(0, 10, 2):
print(i)
運行結果:
2.2 continue 與break
-
continue
可以直接進入循環的下一次
for i in range(10, 2):
if i == 4:
continue
print(i)
運行結果:
-
break
可以直接跳出循環:
for i in range(10, 2):
if i == 4:
break
print(i)
運行結果:
2.3 else追加執行
python特有的特性,當循環正常執行完成(不使用break
跳出循環),使用else
可以追加執行一塊代碼:
for i in range(0, 10, 2):
if i == 4:
continue
print(i)
else:
print("循環執行結束啦")
運行結果:
3. while循環
while循環和for循環類似,只是結束條件需要自己指定,語法為:while 條件:
i = 0
while i < 10:
print(i)
i += 2
執行結果:
除此以外,while循環中也可以使用continue
、break
、else
四、運算符
這邊只介紹python中一些特殊的運算符
1. 算術運算符
1.1 取余:%
python中一正一負的取余操作要采用新的公式:余數 = 被除數 - 除數 * 商
,其中商向上取整
print(8 % -3)
執行結果:
1.2 取整://
python使用//
進行取整操作,一正一負的情況向下取整:
print(12 // 5)
print(12 // -5)
執行結果:
1.3 冪運算:**
python中可以直接使用**
來進行冪運算
print(2 ** 3)
執行結果:
2. 賦值運算符
python中不支持++
、--
操作,需要使用+=1
、-=1
2.1 解構
python也支持多個變量賦值:
a, b, c = range(3)
print(a, b, c)
運行結果:
交換兩個變量的值就可以使用解構了:
a, b = 10, 20
a, b = b, a
print(a, b)
運行結果:
3. 比較運算符
3.1 值相等:==
python中的==
表示的是變量的值相等
,并不表示內存地址相同
由于編譯器會優化以及常量池,所以使用列表進行測試,列表在后續容器中會介紹:
a = [10, 20, 30]
b = [10, 20, 30]
print(a == b)
運行結果:
3.2 地址相等:is
python中使用is
對比兩個變量是否是一個內存地址:
a = [10, 20, 30]
b = [10, 20, 30]
print(a == b)
print(a is b)
運行結果:
與is
相對應,is not
則表示兩個變量內存地址不相等,返回True
4. 邏輯運算符
符號 | 描述 |
---|---|
and | 并且 |
or | 或者 |
not | 非 |
五、容器
Java中有很多類型的容器,像List
,Map
等,他們用于存放指定類型的數據,Python中也有對應的容器
1. 列表
和Java的List
對應,python中定義列表使用:[]
、list()
m_list = [1, 2]
print(m_list)
也可以使用list()
函數,將range
轉換為list:
m_list = list(range(0, 2))
print(m_list)
1.1 獲取列表的元素
獲取列表元素使用:變量名[索引]
m_list = [1, 2]
print(m_list[0])
運行結果:
python中可以使用負數作為索引,表示倒著取元素:
m_list = [1, 2]
print(m_list[-1])
運行結果:
1.2 列表增加元素
添加元素有三種方式:
-
append()
方法在列表尾添加一個元素,相當于Java的add()
:
m_list = [1, 2]
m_list.append(3)
print(m_list)
運行結果:
-
extend()
方法在列表尾添加一個列表,相當于Java的addAll()
:
m_list = [1, 2]
m_list.append(3)
m_list.extend([4, 5])
print(m_list)
運行結果:
-
insert()
方法在列表指定索引后添加一個元素:
m_list = [1, 2]
m_list.append(3)
m_list.extend([4, 5])
m_list.insert(2, 10)
print(m_list)
運行結果:
1.3 查找元素的索引
使用index()
方法,查找元素的索引,并支持指定索引范圍:
print(m_list.index(10))
print(m_list.index(10, 0, 4))
運行結果:
如果查找不到,拋出異常:
print(m_list.index(8))
運行結果:
1.4 列表元素的修改與刪除
修改列表元素很簡單,只要賦值新的值即可:
m_list = [1, 2]
m_list[0] = 3
print(m_list)
運行結果:
元素刪除可以通過值刪除(remove()
方法),也可以通過索引刪除(pop()
方法):
# 值刪除
m_list.remove(2)
print(m_list)
# 索引刪除
m_list.pop(0)
print(m_list)
運行結果:
列表清空使用
del
關鍵字或clear()
方法,其中del
會將內存清空,變量不可使用:
clear()
方式:
m_list.clear()
print(m_list)
運行結果:
del
方式:
del m_list
print(m_list)
運行結果:
1.5 元素是否存在于列表中
使用in
關鍵字,判斷元素是否在列表中:
m_list = [1, 2]
# 判斷3是否在列表中
print(3 in m_list)
運行結果:
1.6 元素遍歷
元素遍歷使用for
循環,語法為for 變量名 in 列表名
:
m_list = [1, 2]
for item in m_list:
print(item)
運行結果:
1.7 列表操作總結
功能 | 方法 | 描述或例子 |
---|---|---|
定義列表 | 變量名=[] |
空列表:m_list=[] ;初始值列表:m_list=[1,2] |
list([range([開始],結束,[步長])]) |
空列表:m_list=list() ;初始值列表:m_list = list(range(0, 2)) | |
獲取列表的元素 | 變量名[索引] |
索引支持負數,獲取索引為1的元素:m_list[1] |
列表增加元素 | append(元素) |
增加一個元素:m_list.append(3) |
extend(列表) |
添加一個列表:m_list.extend([4,5]) | |
insert(索引,元素) |
指定索引后面追加一個元素:m_list.insert(2,10) | |
查找元素的索引 | index(元素,[開始],[結束]) |
如果元素存在,返回元素的索引,反之拋出異常:m_list.index(20) |
列表元素的修改 | 變量名[索引]=新元素 |
賦值一個新元素:m_list[0]=100 |
列表元素的刪除 | remove(元素) |
刪除指定元素:m_list.remove(100) |
pop(索引) |
刪除指定索引下的元素:m_list.pop(1) | |
clear() |
清空列表元素:m_list.clear() | |
del |
刪除變量內存:del m_list | |
元素是否存在于列表中 | in |
判斷元素是否在列表中:2 in m_list |
元素遍歷 | for 變量名 in 列表名 |
遍歷列表:for item in m_list |
列表生成推導式 | [i for i in range([開始],結束,[步長])] |
快速生成一個列表:m_list = [i for i in range(0, 10,2)] |
2. 字典
字典對應Java中的HashMap
,存放的是鍵值對,定義字典使用:{}
、dict()
{}
用法:
d = {"name": "張三", "age": 18}
print(d)
運行結果:
dict()
用法:
d = dict(name="張三", age=19)
print(d)
運行結果:
2.1 字典元素的獲取
字典元素都是通過鍵獲取的,獲取有兩種方式:
[索引]
獲取:
print(d["name"])
get()
方法獲取:
print(d.get("name"))
還可以根據返回是否為None
,判斷是否存在鍵值對:
print(d.get("name1"))
同樣的可以使用in
關鍵字,判斷是否存在鍵:
print("name1" in d)
運行結果:
2.2 字典元素的增刪改
字典增加和修改元素使用[key]
直接賦值即可:
d["gender"] = '女'
print(d["gender"])
刪除元素可以使用del
:
del d["gender"]
print("gender" not in d)
運行結果:
清空元素可以使用clear()
:
d.clear()
print(list(d.keys()))
運行結果:
2.3 字典所有的key和value獲取
keys()
方法用于獲取字典中所有的key,使用list()
將它轉換為列表:
print(list(d.keys()))
values()
方法用于獲取字典中所有的value:
print(list(d.values()))
items()
方法用于獲取字典中所有的鍵值對,使用list()
將它轉換為元表,元表后續會介紹:
print(list(d.items()))
運行結果:
2.4 字典元素的遍歷
遍歷還是使用for循環即可,其中由于python的解構特性,for循環變量也支持多個:
for k, v in d.items():
print(k, v)
運行結果:
2.5 字典操作總結
功能 | 方法 | 描述或例子 |
---|---|---|
定義字典 | 變量名={} |
空字典:d={} ;初始值字典:d = {"name": "張三", "age": 18} |
dict() |
空字典:d=dict() ;初始值字典:d= dict(name="張三", age=19) | |
獲取字典的元素 | 變量名[key] |
獲取key為name的元素:d["name"],不存在拋出異常
|
get(key) |
獲取key為name的元素:d.get("name"),不存在返回None
|
|
字典增加元素 | 變量名[key]=value |
增加一個元素:d["gender"] = '女' |
字典元素的修改 | 變量名[key]=新value |
將key賦值一個新value:d["gender"] = '男' |
字典元素的刪除 | del |
刪除指定鍵值對:del d["gender"] |
clear() |
清空列表元素:d.clear() | |
元素是否存在于字典中 | in |
判斷元素是否在字典中:"name1" in d |
元素遍歷 | for 變量名 in 字典名 |
遍歷字典:for k, v in d.items() |
字典生成推導式 | {k:v for k,v in zip(列表1, 列表2)} |
快速生成一個字典:d = {k: v for k, v in zip(keys, values)} |
3. 元組
python中元組是不可變的列表,一旦創建,內存就不可修改了,只能讀取,對多線程下操作提升了性能
元組的定義使用:()
、tuple()
()
方式:
t = (1, 2)
print(t)
tuple()
方式,tuple的入參需要一個容器,其實就是將其他容器轉換為元組:
t = tuple((1, 2))
print(t)
運行結果:
元組除了不能增加修改外,其他用法和列表相同
4. 集合
集合對應Java中的HashSet
,如果熟悉源碼的就知道,HashSet
就是HashMap
,只是HashSet
存放的value
都是null
,所以集合的使用和字典差不多,定義集合使用:{}
、set()
{}
方式:
s = {1, 2}
print(s)
set()
方式,也元素一樣需要一個容器:
s = set([1, 2])
print(s)
運行結果:
4.1 判斷元素是否在集合中
使用in
來判斷:
print(3 in s)
4.2 集合元素的增加
兩種方式:add()
、update()
add()
方法一次增加一個元素:
s.add(3)
print(s)
運行結果:
update()
方法傳入一個容器,一次增加多個元素:
s.update([4, 5, 6])
print(s)
運行結果:
4.3 集合元素的刪除
remove()
方法,刪除指定的key
,如果不存在拋出異常:
s.remove(3)
print(s)
discard()
方法,刪除指定的key
,如果不存在不拋出異常:
s.discard(3)
print(s)
pop()
方法,隨機刪除一個元素:
s.pop()
print(s)
clear()
方法,清空集合:
s.clear()
print(s)
運行結果:
4.4 集合間比較
集合除了使用==
對比兩個集合中元素是否一樣外,還支持以下比較操作:
issubset()
方法用于判斷本集合是否是其他集合的子集:
s1 = {1, 2, 3}
s2 = {1, 2}
print(s2.issubset(s1))
與之相對的,issuperset()
方法用于判斷本集合是否是其他集合的超集:
print(s1.issuperset(s2))
運行結果:
isdisjoint()
方法用于判斷本集合和另一個集合是否沒有交集:
s1 = {1, 2, 3}
s2 = {4, 5}
print(s1.isdisjoint(s2))
運行結果:
4.5 集合數據操作
集合還支持以下的數學操作:
intersection()
方法,求交集:
s1 = {1, 2, 3, 4}
s2 = {4, 5}
print(s1.intersection(s2))
union()
方法,求并集:
print(s1.union(s2))
difference()
方法,求差集:
print(s1.difference(s2))
symmetric_difference()
方法,求對稱差集:
print(s1.symmetric_difference(s2))
運行結果:
4.6 集合操作總結
功能 | 方法 | 描述或例子 |
---|---|---|
定義集合 | 變量名={} |
空集合:s={} ;初始值集合:s = {1, 2} |
set() |
空集合:s = set() ;初始值集合:s = set([1, 2]) | |
集合增加元素 | add() |
增加一個元素:s.add(3) |
update() |
增加多個元素:s.update([4, 5, 6]) | |
字典元素的刪除 | remove() |
刪除指定元素,不存在拋異常:s.remove(3) |
discard() |
刪除指定元素,不存在不拋異常:s.discard(3) | |
pop() |
刪除隨機元素:s.pop() | |
clear() |
清空集合:s.clear() | |
元素是否存在于集合中 | in |
判斷元素是否在集合中:3 in s |
元素遍歷 | for 變量名 in 集合名 |
遍歷集合:for k in s1 |