Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import functools
- import copy
- def clear_func_default(f):
- # 関数のデフォルト値が上書きされることを防ぐためのデコレータ
- @functools.wraps(f)
- def wrapper(*args, **kward):
- temp = copy.deepcopy(f.func_defaults)
- result = f(*args, **kward)
- f.func_defaults = temp
- return result
- return wrapper
- @clear_func_default
- def bar(a=[]):
- """
- >>> bar()
- ['A']
- >>> bar()
- ['A']
- >>> bar(['B'])
- ['B', 'A']
- """
- a.append("A")
- return a
- def _test():
- import doctest
- doctest.testmod()
- if __name__ == "__main__":
- _test()
Add Comment
Please, Sign In to add comment