測試開發高階 二

2021-09-28 18:23:52 字數 4631 閱讀 6866

數值串行型別

元祖在定義的時候就確認了存放的空間,記憶體固定,占用空間較小

列表的空間可以動態變化,記憶體占用的空間比元祖大的多

在資料固定的情況下使用元祖

雜湊

from collections import namedtuple
普通元祖:

tu = ('zx', '1994', '男')

print(tu[0])

命名元祖:

使用namedtuple相當於建立了乙個類,s1相當於例項話了乙個包含name,age,gender三個屬性的類。

__main__:當前模組下

from collections import namedtuple

student = namedtuple('student', ['name', 'age', 'gender'])

print(type(student)) # 乙個類    

s1 = student('zx', '1994', '男')

print(type(s1)) # print(s1.name) # zx

print(s1[0]) # zx

列表推導式

普通列表建立

"""列表推導式

"""三目運算

a = 10

if a > 5:

print(5)

else:

print(0)

a = 4

res = 5 if a > 5 else 0 # (判斷語句成立)if(判斷語句)else(判斷語句不成立)

print(res) # 0

res = 5 if a > 5 else ('=' if a > 5 else "!")

print(res) # !

結合列表推導式

[i for i in range(10) if i % 2 == 0] # [0, 2, 4, 6, 8]

[i if i % 2 == 0 else -1 for i in range(10) ] # [0, -1, 2, -1, 4, -1, 6, -1, 8, -1]

字典推導式
dic =  

# 集合

dic =  

# 字典

dic = 

#  錯誤 ❌❌❌

dic = 

#  正確 ✅✅✅

# 其實就是:

dict(zip([1, 2, 3], [3, 2, 1]))

生成器表示式
tu = (i for i in range(5))

# at 0x11433d138>

next(tu) # 0

next(tu) # 1

next(tu) # 2

next(tu) # 3

next(tu) # 4

next(tu) 

"""traceback (most recent call last):

file "/users/zhongxin/desktop/py/zx/02/0807_2.py", line 33, in print(next(tu))

stopiteration

"""

生成器的作用:當我們要儲存大量資料的時候,使用生成器可以節約記憶體

建立生成器的方式:

生成器表示式

yield

只能用於函式中,當乙個函式**現yield這個關鍵字,那麼這個函式就是乙個生成器函式。

# yield 後面不寫東西

def gen():

for i in range(100000):

yield

res = gen() # next(res) # none

# yield 後面寫i

def gen1():

for i in range(100000):

yield i

res = gen()

next(res) # 1

next(res) # 2

def gen3():

for i in range(100000):

print(f'--*******')

yield i

print(f'--#######')

res = gen3()

print(res)

print(next(res))

"""第一次next列印內容

0--*******

0"""

print(next(res))

"""第一次next列印內容

0--*******

0第二次next列印內容

0--#######

1--*******

1"""

可迭代物件和迭代器
物件內部實現了迭代協議的稱之為可迭代物件

迭代協議:該物件實現了__iter__方法

li = [11, 22, 33, 44]

for i in li:

print(i)

要求:

物件實現了迭代協議

內部還要實現_next方法

next()方法

通過iter()可以將可迭代物件轉化為迭代器

生成器是一種特殊的迭代器

li = [11, 22, 33, 44]

item = iter(li)

print(item) # print(next(item)) # 11

迭代器和生成器的區別:

生成器相比迭代器多了三種方法:send(),close(),throw()

def gen():

i = 0

while i < 10:

j = yield i

print(j)

i += 1

g = gen()

print(g) # print(next(g)) # 0

print(next(g)) # none 1

print(g.send(8)) # 8 2

def gen1():

i = 0

while i < 10:

j = yield i

if j is not none:

i = j

i += 1

g = gen1()

print(next(g)) # 0

print(g.send(8)) # 9

print(g.send(5)) # 6

print(g.send(10))

"""traceback (most recent call last):

file "/users/zhongxin/desktop/py/zx/02/0807_5.py", line 26, in print(g.send(10))

stopiteration

"""

測試開發高階 三

生成器的三個方法 close 關閉生成器 gen i for i in range 0,20,2 print next gen 0 print next gen 2 gen.close print next gen traceback most recent call last file users...

測試開發題目整理 二

3 題目內容 發現效能測試瓶頸的常用方法和可能出現效能瓶頸的地方?解析 1 常用方法 排除法 極限法 猜錯法 探針法 清單法等等 2 可能的效能瓶頸 大量大圖法 程式記憶體洩漏 程式死鎖 檔案頻繁讀寫 慢sql 快取雪崩等等 例如 慢sql,比如我們的資料庫使用的是mysql,存量資料大增後,執行s...

測試開發探秘

不知道從什麼時候開始,出現了測試開發工程師這個稱呼,以前的測試是測試工程師,開發是開發工程師,可究竟什麼時候出現的測試開發工程師呢?怎麼才算得上是測試開發工程師呢?其實雖然我做測試開發,高階測試開發,以及資深測試開發很久了,但是不能給出乙個準確的定義。但是從以往的工作,招聘面試等經驗中,可以分析一下...