Pythonの21日目の努力--モジュール1

3817 ワード

01内容の回顧と練習
  • 装飾器:開放閉鎖の原則を完璧に示しています.装飾器の本質:閉包.
  • def wrapper(f):
        def inner(*args,**kwargs):
            '''            '''
            ret = f(*args,**kwargs)
            '''            '''
            return ret
        return inner
    
  • def wrapper(f):
        def inner(*args,**kwargs):
            print(111)
            ret = f(*args,**kwargs)
            print(222)
            return ret
        return inner
    
    @wrapper        # func = wrapper(func)
    def func():
        print('in func')
    func()
    
    # 111
    # in func
    # 222
    
  • 練習:
  • # 2.     ,                
    # ’                  ,          ’。
    def wrapper(f):
        def inner(*args,**kwargs):
            print('                  ,          ')
            ret = f(*args,**kwargs)
            return ret
        return inner
    
  • # 3.         ,        +100      。
    #
    
    def wrapper(f):
        def inner(*args,**kwargs):
    
            ret = f(*args,**kwargs)
    
            return ret + 100
        return inner
    
    @wrapper
    def func():
        return 7
    
    result = func()
    print(result)
    
  • # 4.        ,             5 。
    
    def wrapper(f):
        def inner(*args,**kwargs):
            for i in range(5):
                ret = f(*args,**kwargs)
            return ret
        return inner
    
    @wrapper        # func = wrapper(func)
    def func():
        print('in func')
    func()
    
  • # 5.        ,       ,                     。
    #
    #     :
    # import time
    # struct_time = time.localtime()
    # print(time.strftime("%Y-%m-%d %H:%M:%S",struct_time)) #       
    # #
    # def wrapper():
    #     pass
    # def func1(f):
    #     print(f.__name__)
    # func1(wrapper)
    #      :    .__name__  。
    
    import time
    
    
    def wrapper(f):
        def inner(*args,**kwargs):
            with open('log',encoding='utf-8',mode='a') as f1:
                struct_time = time.localtime()
                f1.write(f'    :{time.strftime("%Y-%m-%d %H:%M:%S",struct_time)}   {f.__name__}  
    ') ret = f(*args,**kwargs) return ret return inner @wrapper def nb(): print('in nb') nb() time.sleep(2) nb() time.sleep(1) nb()


  • 02モジュール1
  • カスタムモジュール
  • モジュールとは何か:本質は.pyファイル、カプセル化文の最小単位.
  • カスタムモジュール:実際には定義:py
  • 変数定義、実行可能文、forループ、関数定義などを含むことができます.モジュールのメンバー
  • と総称されます
  • '''
    
         
            :for  ,if  ,    .....        。
    
    '''
    
    #      
    a = 1
    print(a)
    
    for x in range(3):
        print(x)
    
    
    #     
    def f():
        print('hello world')
    
    f()
    


  • モジュールの運転方式
  • スクリプト方式:解釈器で直接実行します.またはPycharmで右クリックして実行します.
  • モジュール方式:他のモジュールにインポートされます.彼のモジュールをインポートするためにリソース(変数、関数定義、クラス定義など...)を提供します.

  • __name__プロパティの使用
  • スクリプト方式の実行時、__name__は固定文字列である:__main__
  • モジュール方式で導入された場合、__name__は本モジュールの名前である.
  • #       ,      
    def main():
        print(a)
        for x in range(3):
            print(x)
    
        f()
    
    
    if __name__ == '__main__':
        main()
    

  • システムインポートモジュールのパス
  • メモリ:モジュールが正常にインポートされた場合は、既存のモジュール
  • を直接使用します.
  • 内蔵パス:インストールパス:Lib
  • PYTHONPATN:importでモジュールパスを探します.
  • sys.path:パスのリストです.

  • もし上に見つからなかったら、間違いを報告します.動的修正sys.path. os.path.dirname():パスの親パスを取得します.現在のモジュールを取得するための相対パス
    #   a.py      sys.path 
    import sys
    # sys.path.append(r'E:\pycharm\Python  \ 0   Python\day14\aa')
    
    
    #         aa   
    # print(__file__)     #          
    
    #   os            
    import os
    # print(os.path.dirname(__file__) + '/aa')
    sys.path.append(os.path.dirname(__file__) + '/aa')
    
    が一般的である.