開発環境
- macOS Mojave - Apple
- Emacs (Text Editor)
- Python 3.7 (プログラミング言語)
Head First Python 第2版 ―頭とからだで覚えるPythonの基本 (Paul Barry (著)、嶋田 健志 (監修)、木下 哲也 (翻訳)、オライリージャパン)の10章(関数デコレーター - 関数を包む)、自分で考えてみよう(p. 401)を取り組んでみる。
コード(Emacs)
Python 3
session = {} def check_logged_in(func: object) -> object: def wrapper(*args, **kwargs): if 'logged_in' in session: return func(*args, **kwargs) return 'ログインしていません。' return wrapper if __name__ == '__main__': def func(): print('wrapper') wrapper = check_logged_in(func) print(wrapper()) session['logged_in'] = True print(wrapper()) wrapper1 = check_logged_in(id) print(wrapper1(wrapper)) def func2(a:int, b:int, c:int): print(a, b, c) return a + b + c wrapper2 = check_logged_in(func2) print(wrapper2(1, 2, 3)) print(wrapper2(1, c=2, b=3))
入出力結果(Terminal, Jupyter(IPython))
$ python3 checker.py ログインしていません。 wrapper None 4459431184 1 2 3 6 1 3 2 6 $
0 コメント:
コメントを投稿