def trace(func):
result = func(*args, **kwargs)
print('%s(%r, %r) -> %r' % (func.__name__, args, kwargs, result))
return result
@trace
# 裝飾器含義就是 fibonacci = trace(fibonacci)
def fibonacci(n):
"""返回第 n 個斐波那契數字。"""
if n in (0, 1):
return n
return (fibonacci(n-2) + fibonacci(n-1))
fibonacci(3)
>>>
fibonacci((1,), {}) -> 1
fibonacci((0,), {}) -> 0
fibonacci((1,), {}) -> 1
fibonacci((2,), {}) -> 1
fibonacci((3,), {}) -> 2
print(fibonacci)
>>>
等需要使用內省機制
的那些工具來說,這樣的行為會干擾它們的正常運作。會使help函式失效:help(fibonacci)。
from functools import *
def trace(func):
@wraps(func)
result = func(*args, **kwargs)
print('%s(%r, %r) -> %r' % (func.__name__, args, kwargs, result))
return result
@trace
# 裝飾器含義就是 fibonacci = trace(fibonacci)
def fibonacci(n):
"""返回第 n 個斐波那契數字。"""
if n in (0, 1):
return n
return (fibonacci(n-2) + fibonacci(n-1))
print(fibonacci)
>>>
help(fibonacci)
>>>
help on function fibonacci in module __main__:
fibonacci(n)
返回第 n 個斐波那契數字。
python學習之內置模組的使用
time模組 datetime模組 時間計算 random模組 生成隨機數 os模組 提供對作業系統呼叫的介面 sys模組 提供對直譯器的相關操作 shutil模組 高階的檔案,資料夾,壓縮包處理模組 shelve模組 乙個簡單的k,v將記憶體資料通過檔案持久化的模組 logging模組 用於記錄日...
Python3之內置模組collections
collections是python內建的乙個集合模組,提供了許多有用的集合類。namedtuple 我們知道tuple可以表示不可變集合,例如,乙個點的二維座標可以表示成 p 1,2 但是,看到 1,2 很難看出這個tuple是用來表示乙個座標的。定義乙個class又小題大做了,這時,namedt...
python之內置函式
非空即真,非0即真 記住這句話可以讓你少寫好多 l asdfgwert3r 1 sorted l 排序 字串可以直接使用sorted排序 2 all 如果list裡面都為真的情況返回為 true all 1 2,3 4 print true all 1 2,3 0 print false all 1...