生成器的三個方法
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/zhongxin/desktop/py/zx/03/0809.py", line 5, in print(next(gen))
stopiteration
"""
gen = (i for i in range(0, 20, 2))
gen.throw(nameerror, 'name is ***')
"""traceback (most recent call last):
file "/users/zhongxin/desktop/py/zx/03/0809.py", line 2, in gen.throw(nameerror, 'name is ***')
file "/users/zhongxin/desktop/py/zx/03/0809.py", line 1, in gen = (i for i in range(0, 20, 2))
nameerror: name is ***
"""
在函式中呼叫函式自身,我們把這種函式叫做遞迴函式遞迴邊界:遞迴的終止條件
def func(n):
print(n)
func(n - 1)
func(10)
"""traceback (most recent call last):
file "/users/zhongxin/desktop/py/zx/03/0809_1.py", line 5, in func(10)
file "/users/zhongxin/desktop/py/zx/03/0809_1.py", line 3, in func
func(n - 1)
file "/users/zhongxin/desktop/py/zx/03/0809_1.py", line 3, in func
func(n - 1)
file "/users/zhongxin/desktop/py/zx/03/0809_1.py", line 3, in func
func(n - 1)
[previous line repeated 993 more times]
file "/users/zhongxin/desktop/py/zx/03/0809_1.py", line 2, in func
print(n)
recursionerror: maximum recursion depth exceeded while calling a python object
"""def func1(n):
print(n)
if n == 1:
return
else:
func(n - 1)
func1(10)
"""1098
7654
321"""
實現乙個累加函式
1 1
2 1+2
3 1+2+3
4 1+2+3+4
5 1+2+3+4+5
...
def fun_add(n):
if n == 1:
return 1
return n + fun_add(n - 1)
print(fun_add(6))
檢視最大遞迴次數import sys
print(sys.getrecursionlimit()) # 預設1000 實際996
sys.setrecursionlimit(3000) # 實際2996
使用裝飾器快取呼叫
呼叫同樣的引數後,使用快取,不會重新開闢空間
乙個題目:
@functools.lru_cache(maxsize=128, typed=false)
乙個為函式提供快取功能的裝飾器,快取 maxsize 組傳入引數,在下次以相同引數呼叫時直接返回上一次的結果。用以節約高開銷或i/o函式的呼叫時間。
由於使用了字典儲存快取,所以該函式的固定引數和關鍵字引數必須是可雜湊的。
爬100個台階,爬台階每一步可以上一階,兩階,或三階,請問一共有多少種爬法
from functools import lru_cache
@lru_cache(maxsize=128)
def func999(n):
if n == 1:
return 1
elif n == 2:
return 2
elif n == 3:
return 4
else:
return func999(n - 1) + func999(n - 2) + func999(n - 3)
print(func999(100)) # 180396380815100901214157639
乙個函式的返回結果只依賴於它的引數,並且在執行過程裡面沒有***
函式的***:
def func(a, b):
return a * b + 100
print(func(11, 222))
內建函式li = [1, 2, 3, 4, 5, 6, 7] # 每個元素*1000/2
def fun(n):
return n * 1000 / 2
res = map(fun, li)
print(res) # print(list(res)) # [500.0, 1000.0, 1500.0, 2000.0, 2500.0, 3000.0, 3500.0]
def func1(n):
return n >= 5
res1 = filter(func1,li)
print(res1) # print(list(res1)) # [5, 6, 7]
長度不一樣,以最短為準
title = ['name', 'age', 'gender']
data = ['zx', 26, '男']
print(list(zip(title,data))) # [('name', 'zx'), ('age', 26), ('gender', '男')]
print(dict(zip(title,data))) #
num = [1, 2, 3]
print(list(zip(title, data, num))) # [('name', 'zx', 1), ('age', 26, 2), ('gender', '男', 3)]
關鍵字:lambda
lambda 引數:表示式(返回值)
res = (lambda n: n * 2)(4)
print(res) # 8
# 偏函式之前的寫法
li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list(filter(lambda x:x>5,li))) # [6, 7, 8, 9, 10]
from functools import partial
li = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
myfilter = partial(filter, lambda x: x > 5)
print(list(myfilter(li))) # [6, 7, 8, 9, 10]
乙個簡單的例子:
from functools import partial
def func1(a, b, c):
print(a, b, c)
func1(11, 22, 33)
func1(11, 'bb', 'cc')
func1(11, 'dd', 'ee')
myfilter1 = partial(func1, 11)
myfilter1(22, 33)
myfilter1('bb', 'cc')
myfilter1('dd', 'ee')
myfilter2 = partial(func1, b=22)
myfilter2(a=11, c='cc') # 11 22 cc
myfilter2 = partial(func1, a=11, b=22)
myfilter2(c='cc') # 11 22 cc
測試開發高階 二
數值串行型別 元祖在定義的時候就確認了存放的空間,記憶體固定,占用空間較小 列表的空間可以動態變化,記憶體占用的空間比元祖大的多 在資料固定的情況下使用元祖 雜湊 from collections import namedtuple普通元祖 tu zx 1994 男 print tu 0 命名元祖 ...
測試開發探秘
不知道從什麼時候開始,出現了測試開發工程師這個稱呼,以前的測試是測試工程師,開發是開發工程師,可究竟什麼時候出現的測試開發工程師呢?怎麼才算得上是測試開發工程師呢?其實雖然我做測試開發,高階測試開發,以及資深測試開發很久了,但是不能給出乙個準確的定義。但是從以往的工作,招聘面試等經驗中,可以分析一下...
入行測試開發
02資料庫測試需要掌握哪些技能 直播 資料庫測試需要掌握哪些技能 11月5日 20 00 21 00 03 玩轉介面自動化測試 直播 玩轉介面自動化測試 11月6日 20 00 21 00 04 玩轉web自動化測試 直播 資料庫測試需要掌握哪些技能 11月7日 20 00 21 00 05 玩轉壓...