python極簡教程01:基礎變數

測試奇譚發表於2021-12-31

測試奇譚,BUG不見。

其實很久之前,就有身邊的同事或者網友讓我分享一些關於python程式語言的教程,他們同大多數自學程式語言的人一樣,無外乎遇到以下這些問題:

  • 網路上的資料過多且良莠不全,不知道如何分辨;
  • “冗餘”知識太多,初學不知如何下手;
  • 既想掌握一門程式語言,又不想花費過多時間。

作為半路出家的非科班測試人,我在求知路上,同樣遇到過這些問題,走過不少彎路,但所幸我戰勝了它!

所以,我特別愛講一句話:辦法總比問題多。

當你看到這裡時,我不想給你灌更多的雞湯,簡言之:學會python,真的很有用

這個有用,並不是指學會python,你便能做自動化測試、能拿到更高的工資、能更好的就業等等,而是你要理解到python對於你工作方式的改變,並認識程式語言只是一種工具

就好比我可以用文字對比軟體,取代人工逐字比對——前者大大提升了你的工作效率。

python亦如此,它能顯著的提升你的工作效率,也能改進你工作的思維方式。

這種隱性的、思維性技能的升級,才是對你最大的幫助,哪怕你以後不再繼續從事測試職業。

希望這些“廢話”對你有用。


接下來談正題,我就最近兩月給組內測試做培訓的內容,給大家分享一套極簡的、快速掌握python的教程。

先說說教程目的:你能依葫蘆畫瓢,上手可用

再說說教程內容:大部分是我平時編碼中用得比較多的場景,解決你不知道學什麼的煩惱,避免初學時攝入過多“冗餘”知識。

這一場,主講python的變數型別。

目標:熟悉python中的基礎變數型別,以及我們該重點關注的知識點。

說明:Python 中的變數賦值不需要型別宣告。

常用的python變數型別是:

counter = 100 # 整型
miles = 1000.0 # 浮點型
name = "John" # 字串
py_list = [123, 'john'] # 列表
py_tuple = (123, 'john') # 元組
py_dict = {'name': 'runoob','code':6734, 'dept': 'sales'} # 字典

整型和浮點型,就是整數和小數,學過數學的都清楚,沒什麼說的,我從字串開始說起。

字串

【常用場景1】格式轉換,eg:字串、json 、字典型別之間的轉換

# 內建函式-字串轉json
str1 = "{'key':1,'value':2}"
eval(str1)
# 一般轉換採用此方法,但它有個問題,如果json中有null值,則無法使用,這時需要用到json庫

import json
json1= '{"key":null,"value":2}'
dicts = json.loads(json1)  # 可將json的null替換為python能識別的None
print(dicts)

【常用場景2】單雙引號使用

# 雙引號中的雙引號需要轉義
string1 = "hello,my,\"god\" "
# 單引號中的雙引號不需要轉義
string2 = 'hello, my "god" '

【常用場景3】多引號使用

# 比如我們需要在py檔案裡寫一條sql語句
sql_a = 'select * from asset where asset_create_at >= "2018-08-01" '
# 注意每一個右引號左邊都需要空格,寫程式碼特別麻煩
sql_b = ('select * '
    'from asset '
    'where asset_id = "123456";'
    )
sql_c = '''
select * from asset where asset_create_at >= "2018-08-01"
'''
# 也可以在三個引號內隨意寫,這種寫法更加方便,但要注意,實際字串是包含了三行,即sql前面換行的\n和sql後面的換行\n(其實無傷大雅)

列表

列表的索引 重點必須掌握!!!

lst = ['a', 'b', 'c','d','e','f']
lst.append('g') # 在列表尾部新增值
lst.pop(0) # 刪除索引位置的值
lst[0] # 取index=0的值
lst[1:3] # 取index從0開始(不包括),到index=3的值

列表遍歷迭代 重點必須掌握!!!

li = ['a', 'b', 'c', 'd', 'e']
# 一般的遍歷
for i in li:
    print(i)

# 帶索引的遍歷
for i, e in enumerate(li):
    print("index:",i,"element:",e)

【擴充場景1】:多列表迭代

# 迴圈巢狀
# 缺點:程式碼複雜度高
x_list, y_list, z_list = [], [], []
for x in x_list:
    for y in y_list:
		for z in z_list:
     		None
# itertools標準庫
# 缺點:不方便除錯
from itertools import product
for x, y, z in product(x_list, y_list, z_list):
	None

【擴充場景2】:交集、並集、差集

a=[2,3,4,5]
b=[2,5,8]
# 交集 
print(list(set(a).intersection(set(b))))
# 並集
list(set(a).union(set(b)))
# 差集
list(set(b).difference(set(a))) # b中有而a中沒有的
list(set(a).difference(set(b))) # a中有而b中沒有的

元組

如何理解:可以將元組當成不可編輯的list(一般很少用到該型別)

('a','b','c','d')

字典

如何理解:key-value鍵值對

取值 重點必須掌握!!!

personinfo = {'name': 'joe', 'age':'20', 'hobby':'football'}
personinfo['name']

遍歷迭代 重點必須掌握!!!

personinfo = {'name': 'joe', 'age':'20', 'hobby':'football'}
for k, v in personinfo.items():
    print(k, v)

【實用場景1】合併和複製

# 合併
date_info = {'year': "2020", 'month': "01", 'day': "01"}
track_info = {'artist': "Beethoven", 'title': 'Symphony No 5'}
all_info = {**date_info, **track_info}
# 新增值
date_info = {'year': '2020', 'month': '01', 'day': '7'}
event_info = {**date_info, 'group': "Python Meetup"}
# 在複製/合併字典的同時重寫特定的值
event_info = {'year': '2020', 'month': '01', 'day': '7', 'group':'Python Meetup'}
new_info = {**event_info, 'day': "14"}

【實用場景2】json和字典的轉換 重點必須掌握!!!

import json
data = {"spam" : "foo", "parrot" : 42} # 把python物件轉換成json
python_to_json = json.dumps(data)
print(python_to_json)
json_to_python = json.loads(python_to_json) # 將json轉換成python物件
print(json_to_python)

擴充

isinstance:用來判斷物件的型別,也可以判斷一個物件是否是一個類的例項

# 【常用場景1】:判斷物件的型別
py_int = 1
py_str = 'a'
py_list = ['a','b']
py_dict = {'a':1,'b':2}
isinstance(py_int, int)

# 【常用場景2】:一個物件是否是一個類的例項
class C():
	pass
cc = C()
isinstance(cc, C)

format:用於組裝和格式化資料

# 【常用場景1】:裝載字串
py_str = "hello {0}".format("world")
py_str = "hello {}{}".format("great","world!")
# 【常用場景2】:裝載列表
a = [1,2]
py_list = '列表第一個: {0}; 列表第二個: {1}'.format(a[0],a[1])
py_list = '列表第一個: {0[0]}; 列表第二個: {0[1]}'.format(a)
# 常用場景3:裝載字典
student = {"name": "zhao", "age": 5}
"My name is {} and my age is {}".format(student['name'],student['age'])
"My name is {pig[name]} and my age is {pig[age]}".format(pig=student)

一如既往,做個總結

01 python的變數是python語法基礎中的基礎,重要中的重要

02 一定要上手實操一遍

相關文章