20200221 - Pythonの学習14日目

今日のコンテンツ

  N回実行されるフラッシュ・フレームジャンゴ+ +書き込みキャッシュが実装された装飾が施された装飾機能:パラメータを持つデコレーター

  モジュール:

    インクルード

    SYS

    時間

    [理解]とタイムゾーンの日時

レビューと補足コンテンツ

  1.ファンクション

    コードを書き込む方法:プロセス指向 - 「関数プログラミング - 」オブジェクト指向

    1.1基底関数

      デフFUNC(A1、A2):

        パス

      結果= FUNC(1,2)

    1.2パラメータ

      追加:注意変数タイプと機能のデフォルト値について。

説明:

デフォルト値を設定したい場合は#空のリストされた
#が推奨されていません(ピット)
DEF FUNC(データ、値= []):
パスの

推奨#
:DEF FUNC(データ、値=なし)
IFない値:
値= []
#インタビュー質問
DEF FUNC(データ、値= []):
value.append(データ)
戻り値
V1 FUNC =(1)
V2 FUNC =(1、[11,22,33,44]。)
V3 = FUNC(2)
(V1、V2、V3)を印刷
#戻り[1,2] [1,11,22,33,44] [1,2]の値

の結果を参照する#書き込みコード
:DEF FUNC(データ、値= [])
の値を.append(データ)
の戻り値

(1)は#の値を返し、[1] FUNC
FUNC(2、[11,22,33])#戻り値[11,22,33,2]
FUNC(3)は#の値を返します[1,3]

    1.3戻り値

      メモリ分析機能が実行さ        

        DEF FUNC(名):
        DEFインナー():
        印刷(名)
        リターン123
        リターンインナー
        V1 = FUNC( "アレックス")
        V2 = FUNC( "エリック")
        V1()
        V2()
クロージャは、例えば、決定されているかどうか
#クロージャーない
DEF関数func1(名):
DEFインナー():
リターン123
リターンインナー

#の閉鎖は次のとおりです。パッケージは、内部関数値+を使用する必要があり
:DEFの関数func2(名)
DEFインナー():
印刷(名)
123を返す
リターンをインナー

    1.4適用範囲

    1.5再帰

      関数が自分自身を呼び出します。(非効率)

#再帰ループの例には1000以上の呼び出しない
:DEF FUNC()
(1)印刷
FUNC()
FUNC()

の例示的な2
DEF FUNC(I):
プリント(I)
(I + 1)FUNCを
FUNC(1)

例3
DEF FUNC(A、B)
。#func(0,1)1
。#func(1,1)1
#func(1,2)2
#func(2,3)3。
#fun(3,5)5。
(B)印刷
FUNC(B、A + B)

FUNC(0,1)

:DEF FUNC(A)
。IF A == 5:
リターン100000
結果FUNC =(A + 1)+10
リターン結果
V FUNC =(1)。これは、#100000 + 10 + 10 + 10 + 10の値を返します。
#再帰戻り値
DEF FUNC(A):
IF A == 5:
リターン100000
結果FUNC =(A + 1)+10
(1)V1 FUNCは=#なしの値を返す

名前= "アレックス"
:DEF FUNCを()
インナーDEF():
印刷(名)
リターンインナー
V = FUNC(A)

   2.モジュール

    ランダム/ hashlib / GETPASS /時間/

コンテンツ詳細

  1.デコレータ

    1.1基本的なフォーマット 

DEF X(FUNC):
DEF内側():
戻りFUNC()
内部戻り
@xの
DEFインデックス():
合格

    1.2についてのパラメータ

試料#含むパラメータ
:DEF X(FUNC)
DEFインナー(A1):
リターンFUNC(A1)は、
内部戻り
@x
:DEF指数(A1)
パス

二種を含有する#典型的な二つのパラメータ
DEF X(FUNC)を:
DEF内部を( A1、A2):
リターンFUNC(A1、A2)は、
内部戻り
@x
:DEF指数(A1、A2)
パス
#INDEX =インナー
インデックス(1,2)


例3
DEF X(FUNC):
DEFインナー(A1)を:
FUNCリターン(A1)は、
インナー返す
@x
DEF指数(A1):
パスを
################################## ##参照インデックスの元の関数に渡された同じ目的のパラメータである
:DEF X(FUNC)
:DEFインナー(A1、A2)
)(戻りFUNC
インナーリターン
@x
DEFインデックス():
パス
#FUNC =元の索引機能
#INDEX =インナー
インデックス(1、2)

あなたはどのように行う、同じデコレータのいくつかの機能を#を記述する場合
:DEF X-(FUNC)
DEFインナー(* argsを、** kwargsから):
リターンFUNC(* argsを、** kwargsから)
インナー返し
@x
(DEF F1を):
パス

@x
DEF F2(A1):
パス

@x
DEF F3(A1、A2):
パス

    1.3戻り値について

例#
DEFのX1(FUNC):
DEFインナー(* argsを、** kwargsから):
データ= FUNC(* argsを、** kwargsから)
データを返す
リターンインナーを
X1 @
DEF F1():
印刷(123)

(V = F1 )#実行内側関数func関数の実行、123印刷、なしの値を返し
プリント(V)であり、出力#なし


#の例示的な2
:DEFのX1(FUNC)
(DEF内側*引数、** kwargsからの)
データ= FUNC(引数*、** kwargsから)
データを返す
内部戻り
X1 @
DEF F1():
プリント(123)
リターン666

V = F1()は#123を印刷、内部関数funcの機能の実行を行い、666の値を返し
印刷(V)#出力は666である

。#例3つの
DEFのX1(FUNC):
DEFインナー(*引数、** kwargsから)
データ= FUNC(*引数、** kwargsから)
内部戻り
X1 @
)(DEF F1:
プリント(123)
リターン666

V = F1()#戻り値666は、データ変数を割り当て、123印刷、FUNC機能を実行する、内部機能を実行するが、内側の関数は戻り値を有していない
印刷(V)を出力は、#なしで

書かれた#デコレータの推奨
:DEF X1(FUNC)
DEFインナー(* argsを、** kwargsから):
データ= FUNC(* argsを、** kwargsから)
復帰データ
の復帰インナー

    1.4ザ・ポスト

X1 DEF(FUNC):
DEFインナー(* argsを、** kwargsから):
"元の関数を呼び出す前に")の印刷
データ= FUNC(*引数を、** kwargsから)
( "呼び出し元の関数の後")を印刷
データを返す
リターンインナー

X1 @
DEFインデックス():
印刷(123)
インデックス()

    パラメータを持つ1.5デコレータ

ステップ#:XXXは=行うRET(インデックス)
#ステップ:RET =戻り値インデックス
@xxxの
DEFインデックス():
パス

#ステップ1:実行UUU = V(9)
ステップ:RET = V(インデックス)
#ステップ:指数= RET
(9)@uuu
DEFインデックス():
パス

########################### #############共通デコレータ####################
DEFラッパー(FUNC):
DEFインナー(* argsを、** :kwargsから)
(印刷"元の関数を呼び出す前に")
データ= FUNC(* argsを、** kwargsからの
印刷() "元の関数を呼び出した後、"
データを返す
リターンインナーを

@wrapper
DEFインデックス():
パス
###### ##################################パラメータを持つデコレータ########## ##########
DEF X-(カウンタ):
DEFラッパー(FUNC):
インナーDEF(* argsを、** kwargsから):
印刷する( "元の関数を呼び出す前に")
データ= FUNC(* argsを、** kwargsから)
( "元の関数を呼び出した後")を印刷
復帰データ
の復帰インナー
リターンwarpperの

(@xを9。 )
DEFインデックス():
パス

    演習

#達成するためのパラメータを持つデコレータを書く:パラメータは、関数が何度も、結果はリスト、最終的なリターンのリストに追加されるたびに飾られて行う必要があるどのくらいです。
X DEF(カウンタ):
DEF warpper(FUNC):
DEFインナー(* argsを、** kwargsから):
user_list = []
Iレンジ(カウンター)でのために:
データ= FUNC(* argsを、** kwargsから)
user_list.append(データ)は
user_list戻す
リターンインナー
戻りwarpperする

。@x(9)
DEFインデックス():
リターン8
V =指数()
印刷(V)#出力である:[8,8、8,8、8,8、8,8 8]

書き込み達成するためのパラメータを持つデコレータ:パラメータが何回も飾られている機能を実行するために必要であるどのくらいで、[面の最後の実行結果]質問返し
DEF X-(カウンタ):
DEFラッパー(FUNC) :
:DEFインナー(* argsを、** kwargsから)
レンジ(カウンター)での私のために:
FUNC =データ(* argsを、** kwargsからは)
データを返す
リターンインナー
リターンwarpperの

@xを(9)
DEFインデックス():
リターン8
V =インデックス()は、
(V)を印刷出力#です:8つの


#は、パラメータを記述達成するためのデコレータ:パラメータが何回も飾られている機能を実行するために必要であるどのくらいあり、かつ最大値で結果を返す
X-(カウンタ)DEF:
DEFラッパー(FUNC):
DEFインナー(* argsを、** kwargsから):
= 0値
の範囲(カウンター)でのIのために:
データ= FUNC(* argsを、** kwargsから)
IFデータ>値:
値=データ
の戻り値の
リターンインナー
リターンwarpperの

(9)@x
DEFインデックス():
リターン8
V =指数()
プリント(V)#出力である:[8 ,. 8 ,. 8 ,. 8 ,. 8 ,. 8 ,. 8 ,. 8 ,. 8]

DEF X(カウンタ):
プリント( 'X関数が')
DEF warpper(FUNC ):
DEFインナー(*引数、** kwargsから):
IFカウンタ:
リターン123
リターンFUNC(*引数、** kwargsから)
リターンインナー
リターンwarpper

#990残り10デコレータ追加機能を加えていないデコレータ、
@xを(真)
DEF index990():
パス

@x(偽)
DEF index10():
パス

    1.6未満

      メタデータ:フラッシュフレーム

      デコレータの複数:フラッシュフレーム

      あなたは次のことを知っています

        X1 @

        @ X2

        デフ)(FUNC:

          パス

    1.7概要    

###################基本デコレータ(もっと重要な)############### 
DEFラッパー(FUNC):
DEFインナー(引数*、** kwargsから):
データ= FUNC(* argsを、** kwargsからは)
データを返す
リターンインナーを
@wrapper
DEFインデックス():
印刷(123)

インデックス()
#############デコレータとパラメータ###### ###############
DEF X(カウンタ):
DEF warpper(FUNC):
DEFインナー(* argsを、** kwargsから):
データ= FUNC(* argsを、** kwargsからは)
データを返す
リターンインナー
リターンwarpperの

(9)@x
:DEF指数()
印刷(123)

インデックス()

  2.モジュール

    2.1sys

      Pythonインタプリタ関連データ

 

       (1)sys.getrefcount:アプリケーションのカウント値を取得します

例:

SYSインポート
A = [11,22]
、Bは=
プリント(sys.getrefcount(A))が出力#:3

 

       (2)sys.getrecursionlimit:Pythonで発生のデフォルトサポートの再帰を取得

       (3)sys.sdout.write ---- "印刷

例1:

インポート時間
範囲内のiについて(1200):
MSG = "%sの%% \ R" %I
印刷(MSG、端= '')
time.sleep(0.5)

例2:

OSのインポート
。#1は、ファイルサイズの単位キロバイト読むには
FILE_SIZEはos.stat =( "1582263261(1).JPG")st_size。

サイズ#2のリードファイルを少し:.
read_size = 0を
(オープンで=ファイル'1582263261(1).JPG'、MODE = 'RB')AS F1:
しばらくread_size <= FILE_SIZE:
チャンク= f1.read(1024)#1024バイト各リード
read_size + = LEN(チャンク)
int型=ヴァル(read_size / FILE_SIZE * 100)
を印刷( '%S %% \ R&LT' %ヴァル、エンド= '')

      (4)sys.argvの

例1:

"" " 
は、内部のヘルプユーザーのディレクトリの削除、ユーザーが削除するスクリプト入力ファイルのパスを実行することを許可する
Cを:\ Users \ユーザーLenovo.LAPTOP-C8NNKEAA \ PycharmProjects \ learn_python \ venv \スクリプト\ python.exe C:/ユーザー/ Lenovoの。 C8NNKEAA-LAPTOP / PycharmProjects / learn_python / Day14 / rm_path.py C:\ Users \ユーザーLenovo.LAPTOP-C8NNKEAA \ PycharmProjects \ learn_python \ Day14 \テスト
C:\ Users \ユーザーLenovo.LAPTOP-C8NNKEAA \ PycharmProjects \ learn_python \ Venv \スクリプト\ Cのpython.exe:/Users/Lenovo.LAPTOP-C8NNKEAA/PycharmProjects/learn_python/day14/rm_path.py
"" "
インポートSYSの
#のsys.argvのは、スクリプトを実行するユーザー、パラメータの取り込み得ることです
\ python36 \ python36:#Cを。 EXE D:/コード/ s21day14 / 7 Dモジュールの.py :. /テスト通過パラメーター
#sys.argvの= [D :. /コード/ s21day14 /転送モジュールパラメータ7の.py、D:/テスト]
パス= sys.argvの[1]#GETディレクトリ・削除することをユーザ入力パラメータ


#はディレクトリの削除
インポートshutil
shutil.rmtree(パス)

       (5)のsys.path ---->未満    

    2.2

      そして、システム関連のデータを操作します

      (1)os.path.exists(パス)パスが存在する場合、それは、そうでなければFALSE TRUEを返し

       (2)(ファイル名).st_sizeはos.stat:ファイルのサイズを取得します。

 

       (3)os.path.abspath():ファイルの絶対パスを取得します

例:        

OSのインポート
パス= '(1)1582263261 .JPG'
結果= os.path.abspathと(パス)
を印刷(結果)#結果出力は次のようになります。C:\ Users \ユーザーLenovo.LAPTOP- C8NNKEAA \ PycharmProjects \ learn_python \ day14 \ 1582263261 (1).JPG

       (4)os.path.dirname:親ディレクトリのパスを取得

例:

OSのインポート
パス= R'C:(1)\ Users \ユーザーLenovo.LAPTOP-C8NNKEAA \ PycharmProjects \ learn_python \ Day14 \ 1582263261の.jpg "
結果= os.path.dirname(パス)
の結果の印刷(結果)#出力は次のようになります。 C:\ Users \ユーザーLenovo.LAPTOP-C8NNKEAA \ PycharmProjects \ learn_python \ day14

 

       スプライシング経路:(5)os.path.join

例:

OSのインポート
パス= R'C:\ Users \ユーザーLenovo.LAPTOP-C8NNKEAA \ PycharmProjects \ learn_python \ Day14 '
(1)V1 =' 1582263261の.jpg "

結果= os.path.join(パス、V1)
を印刷(結果)#結果出力は次のようになります。C:\ Users \ユーザーLenovo.LAPTOP-C8NNKEAA \ PycharmProjects \ learn_python \ Day14 \ 1582263261の.jpg(1)

印刷(os.path.join(パス、 'N1'、 'N2'、 'N3'、 'N4'))#出力は次のとおりです。C:\ Users \ユーザーLenovo.LAPTOP- C8NNKEAA \ PycharmProjects \ learn_python \ day14 \ N1 \ n2の\ n3の\ N4

 

       (6)os.listdir:ビュー[のみ]第一層の下にあるすべてのファイルのディレクトリ

例:

インポートOS 
結果= os.listdir(R'C:\ Users \ユーザーLenovo.LAPTOP-C8NNKEAA \ PycharmProjects \ learn_python \ Day14「)
印刷(結果)#resultTheが隠さを含むディレクトリに現在保存されたファイルとフォルダのリストですファイル
結果の項目について:
印刷(項目)

       (7)os.walk:すべての層の下にあるすべてのファイルのディレクトリを見ます[]

例:

OSインポート
結果= os.walk(R'C:\ Users \ユーザーLenovo.LAPTOP-C8NNKEAA \ PycharmProjects \ learn_python \ Day14「)
印刷(結果)#resultTheがある<オブジェクトジェネレータウォークAT 0x00000251EDDE5900>
結果でA用、B、C :
印刷(a、b、c)は、#A:リターンは、ディレクトリbを見ている:Cフォルダカレントディレクトリの存在を:このディレクトリ内のファイル
は、このディレクトリには、フォルダが存在しない場合は#が、それはレコードを返します。
#フォルダが存在する場合、それは、このディレクトリ内の2つのレコードを返します。三日を記録する2つのフォルダ、リターンがある場合、

項目Cにするためには:
パスos.path.join =(、アイテム)
#の印刷(パス)セグメントコードは、このディレクトリ内のすべてのファイルの完全なパスを返します。

 

       (8)補足---「エスケープ: 『\』エスケープでの使用を

例:

パス= R'C:\ユーザー\ Lenovo.LAPTOP-C8NNKEAA \ PycharmProjects \ learn_python \ day14' 
プリント(パス)

#等同写法
パス=「C \\ユーザー\\ Lenovo.LAPTOP-C8NNKEAA \\ PycharmProjects \\ learn_python \\ day14'
印刷(パス)

    2.3 shutil

    #ディレクトリの削除
    インポートshutilの
    shutil.rmtree(パス)

コンテンツ概要

  通常のデコレータ(5 **)

    パラメータ/戻り値/縦

  パラメータを持つデコレーター(4 **)

  モジュール

    ランダム/ hashlib / GETPASS /時間/ OS / SYS / shutil

おすすめ

転載: www.cnblogs.com/limin1027/p/12340916.html