Pythonの21日目の努力--モジュール1
3817 ワード
01内容の回顧と練習装飾器:開放閉鎖の原則を完璧に示しています.装飾器の本質:閉包. 練習:
02モジュール1カスタムモジュール モジュールとは何か:本質は.pyファイル、カプセル化文の最小単位. カスタムモジュール:実際には定義:py 変数定義、実行可能文、forループ、関数定義などを含むことができます.モジュールのメンバー と総称されます
モジュールの運転方式 スクリプト方式:解釈器で直接実行します.またはPycharmで右クリックして実行します. モジュール方式:他のモジュールにインポートされます.彼のモジュールをインポートするためにリソース(変数、関数定義、クラス定義など...)を提供します.
スクリプト方式の実行時、 モジュール方式で導入された場合、
システムインポートモジュールのパス メモリ:モジュールが正常にインポートされた場合は、既存のモジュール を直接使用します.内蔵パス:インストールパス:Lib PYTHONPATN:importでモジュールパスを探します. sys.path:パスのリストです.
もし上に見つからなかったら、間違いを報告します.動的修正sys.path. os.path.dirname():パスの親パスを取得します.現在のモジュールを取得するための相対パス
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
'''
:for ,if , ..... 。
'''
#
a = 1
print(a)
for x in range(3):
print(x)
#
def f():
print('hello world')
f()
__name__
プロパティの使用__name__
は固定文字列である:__main__
__name__
は本モジュールの名前である.# ,
def main():
print(a)
for x in range(3):
print(x)
f()
if __name__ == '__main__':
main()
もし上に見つからなかったら、間違いを報告します.動的修正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')
が一般的である.