li =[1,2,3,4]a = li.__iter__
()while
true:
try:
print(a.__next__
())
except
stopiteration as e:
break
#fla=true
#裝飾器
defflag(fla):
defouter(func):
def inner(*args,**kwargs):
iffla:
print('
函式執行前')
res = func(*args,**kwargs)
print('
函式執行後')
return
res res = func(*args, **kwargs)
return
res
return
inner
return
outer
fla=false
@flag(fla)
deffunc2():
print('
執行函式')
func2()
1. 裝飾器方式實現
#裝飾器實現單例模式
defsinglenton(cls):
_instance ={}
def _singlenton(*args,**kwargs):
if cls not
in_instance:
_instance[cls] =cls(*args,**kwargs)
return
_instance[cls]
return
_singlenton
@singlenton
class
a():
def__init__
(self,x):
self.x=x
pass
a1=a(1)
a2=a(2)
print(id(a1),id(a2)) #
1584069849608 1584069849608
2. 基於 __new__實現單例模式
classsinglenton(object):
_instance=none
def__init__
(self):
pass
def__new__(cls, *args, **kwargs):
ifnot hasattr(singlenton,'
_instance'):
singlenton._instance=cls
return
singlenton._instance
s1 =singlenton()
s2 =singlenton()
print(id(s1),id(s2)) #
1867687056 1867687056
#1 1 2 3 5 8
deffunc(n):
#n 表示斐波拉契數列第幾位數
if n<=2:
return 1
return func(n-1)+func(n-2)
#斐波拉契 數列
n =8
for i in range(1,n+1):
print(func(i))
#map()
li=[4,6,3,1]
defsquare(x):
return x*x
(list(map(square,li)))
#zip()
#filter()
defis_odd(n):
return n%2==1li2=[1,2,3,4,5,6]
new_list=filter(is_odd,li2)
(list(new_list))
#sorted()
dic=[,,]
sort_dic=sorted(dic,key=lambda x:x['
age'
])print(sort_dic)
遞迴詳解(斐波拉契和漢諾塔應用)
1 什麼是遞迴 遞迴是一種特殊的演算法,簡單來說,程式中的函式不僅僅是被其他函式呼叫,也可以被自己本身呼叫,乙個函式呼叫自己就是所謂的 遞迴 任何可以用選擇結構和迴圈結構來編寫的程式 都可以用遞迴編寫。2 遞迴的條件 1 可以反覆執行的遞迴過程 2 有乙個跳出遞迴過程的條件,也就是不能無限遞迴。舉乙...
裝飾器和單例模式練習
coding utf 8 usr bin env python3 coding utf 8 time 2020 5 15 23 46 author 小多肉 email 1021181701 qq.com todo 1 實現乙個網路請求超時重試的裝飾器,裝飾下面的功能函式 如果請求網路超時,或者連線超...
遞迴和非遞迴分別實現求第n個斐波那契數
在數學上,斐波納契數列以如下被以遞迴的方法定義 f 0 0,f 1 1,f n f n 1 f n 2 n 2,n n include include int fib int n else int main 一直以來很多c語言教科書在講遞迴函式的時候總會拿斐波那契數列作為例子。但是這不意味著fibo...