2018年10月17日水曜日

開発環境

  • 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 コメント:

コメントを投稿