Guest User

Untitled

a guest
Nov 18th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.57 KB | None | 0 0
  1. import functools
  2. import copy
  3.  
  4. def clear_func_default(f):
  5. # 関数のデフォルト値が上書きされることを防ぐためのデコレータ
  6. @functools.wraps(f)
  7. def wrapper(*args, **kward):
  8. temp = copy.deepcopy(f.func_defaults)
  9. result = f(*args, **kward)
  10. f.func_defaults = temp
  11. return result
  12. return wrapper
  13.  
  14. @clear_func_default
  15. def bar(a=[]):
  16. """
  17. >>> bar()
  18. ['A']
  19. >>> bar()
  20. ['A']
  21. >>> bar(['B'])
  22. ['B', 'A']
  23. """
  24. a.append("A")
  25. return a
  26.  
  27. def _test():
  28. import doctest
  29. doctest.testmod()
  30.  
  31. if __name__ == "__main__":
  32. _test()
Add Comment
Please, Sign In to add comment