*args就是一個元組
**dict就是字典

[x*x for x in range(0,10)] //清單生成式,這裡是中括号
//結果 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
例子:
In [33]: def fun(n):
...: for i in range(1,n):
...: print(i*2)
結果:fun(1000000)
會一直列印,直到結束為止,這樣占用大量的系統的資源
(x*x for x in range(0,10)) //生成器, 這裡是小括号
//結果 <generator object <genexpr> at 0x7f0b072e6140>
一個直接傳回了表達式的結果清單, 而另一個是一個對象,該對象包含了對表達式結果的計算引用, 通過循環可以直接輸出
生成式和生成器的差別:
當表達式的結果數量較少的時候, 使用清單生成式還好, 一旦數量級過大, 那麼清單生成式就會占用很大的記憶體,而生成器并不是立即把結果寫入記憶體, 而是儲存的一種計算方式, 通過不斷的擷取, 可以擷取到相應的位置的值,是以占用的記憶體僅僅是對計算對象的儲存
yield可以輸出多個值 return隻能輸出一個值(當函數碰到return就跳出整個函數,不會執行下面的):
執行結果:
裝飾器傳參數: