day19発電機の高度なプレイ、式、再帰関数

今日の内容:
まず、負荷への複数のデコレータの重ね合わせ、分析を実行します(理解***)
## @ deco1指数= deco1(メモリアドレスdeco2.wrapper)
#@#deco2.wrapper deco2メモリアドレス= deco2(deco3 .wrapperメモリアドレス)
#@#deco3.wrapper deco3 deco3メモリアドレス=(インデックス)
#のDEFインデックス():


第二に、歩留まりのプレイハング機能のシニアプロデューサー:(理解の形で収量表現* **)
X-降伏戻り値=

3、3つの式

第四に、式
リスト生成型の
辞書生成的な
発電式の

V.再帰関数呼び出し


#、分析を実行する(負荷への複数のデコレータの、重ね合わせの理解* **)

DEF deco1(関数func1):#func1の= wrapper2メモリアドレス
DEFのWRAPPER1(* argsを、** kwargsから):
印刷( 'ランニング===> deco1.wrapper1')
RES1 = func1の(* argsを、** kwargsから)
リターンRES1
WRAPPER1リターン

DEFのdeco2(func2の):#= func2のwrapper3メモリアドレス
:DEFのwrapper2(* argsを、** kwargsから)
( '===> deco2.wrapper2実行されている')を印刷
RES2 = func2の(* argsを、** kwargsからの)
リターンRES2の
リターンwrapper2

DEF deco3(X):
DEF outter3(FUNC3):=#FUNC3装飾インデックスメモリアドレスを持つオブジェクトは、の関数である
DEFのwrapper3(* argsを、** kwargsから):
印刷(「ランニング===> deco3。 outter3.wrapper3「)
RES3 = FUNC3(* argsを、** kwargsから)
リターンRES3の
リターンはwrapper3
outter3返す


#はボトムアップ(こちら)からロード
@#deco1指数= deco1(wrapper2メモリアドレス)===>インデックス= WRAPPER1メモリアドレス
@ deco2#インデックス= deco2(wrapper3メモリアドレス)===>インデックス= wrapper2メモリアドレス
@ deco3(111)#===> @ outter3 ===>インデックス= outter3(インデックス)===>インデックス= wrapper3のメモリアドレス
DEF指数(X、Y):
印刷%Sから(「インデックス:%S 「%(X、Y))

は、トップダウン順、即ちwraper1- "wrapper2-" wrapper3の実行
インデックス(1,2)#WRAPPER1(1,2)


II。高度な再生機能ジェネレータ収率ハング:収量表現形式は(知っている***)
#X-降伏戻り値=

#:
#DEF犬(名前):
印刷(「コロンビアの道%sのそれを食べる準備ができて...」%名)
#ながら、真:
## X受信の降伏値しまっ
#X =収率#X = '肉バン'
#プリント(%(名前、X ')%sはコロンビアロード%S食べる') #


犬Gが= ( "アレックス")
#1 g.send(なし)#次に(G)と等価である
。#
#g.send([ '骨'、 'AAA'])
## g.send(「肉パン「)
## g.send(「一緒に残飯」)
## g.close()
## G.send( '1111') #の値は、後にオフに渡すことはできません


#2:
DEF犬(名前):
food_list = []
'%sのコロンビアの道、それを食べて準備ができて...' %名)を印刷
しながら真:
#xは受信降伏値取得
のx =降伏food_list番号X = '肉まんじゅう'
( '%sのコロンビアの道%sの食べる' %(名前を、X))を印刷する
「[food_list.append(X)#を骨''肉バン'] #

犬G =( "アレックス")
#RES = g.send(なし)#次に(G)
プリント(RES)

#g.send RES =(A'骨')
印刷(RES)

#RES = g.send('肉饅頭')
印刷(RES)
## g.send('一緒に残飯')




DEF FUNC():
印刷('スタート.... 。 ')
X = X =収率#1111' XXXXX '
印刷('「)ヘクタールああ
)なるほどヘクタール」(印刷」
プリント( 'HAなるほど')
プリント( 'AHA HA')
収率22222

G = FUNC()
RES =次へ(G)
プリント(RES)

RES = g.send( 'XXXXX')
(RES)を印刷


3三元表現
のための要件次#
#DEF FUNC(X、Y):
:#X> Y IF
#Xリターン
#他に:
#リターンY

#FUNC RES =(1,2)
印刷(RES)

#3要素表現
#構文:値の状態を戻すことが確立されている状態、他の条件はの値を返すために満足していない場合
。X = 1
Y = 2つの

#RES = X X> Y他のYの場合
#印刷(RES)


RES = 111111であれば"エゴン'=='エゴン「他2222222222
印刷(RES)



用法
DEF FUNC():
#IF 1> 3:。。
#= X. 1
#他に:
#X = 3

X = 1の場合1> 3そう 3

IV式
リストの式の
辞書式
ジェネレータ式

#1、式リスト
L = [ 'alex_dsb'、 ' lxx_dsb'、 'wxx_dsb'、 "xxq_dsb"、「エゴン']
#new_l = []
名でLため#:
をIF name.endswith(' DSB '):
#1 new_l.append(名)


#new_l = [L IF name.endswithの名前内の名前(' DSB「)]
new_l =#[L内の名前の名前]

#印刷(new_l)

完全なすべての小文字が大文字
#new_l = [name.upper()名のL中]
#印刷(new_l)

すべての名前サフィックスを削除_dsb
#new_l = [name.replace( '_ DSB'、 '')Lの名前で]
#プリント(new_l)

#2、辞書式
#キー= [ '名前'、 '年齢'、 '性別']
#DIC = {キー:キーでキーのなし}
#プリント(DIC)

#需要:キーを削除は、性別である
〔( '性別'、 '男性')、( '年齢'、18である)、( '名前'、 'エゴン')] =#項目
K用V、#RES = {KアイテムにV IF K!= '性別'}
プリント(RES)

#3、収集式
#キー= [ '名前'、 '年齢'、 '性別']
#SETL = {キーでキーのキー}
#プリント(SETL、タイプ(SETL))


#4、ジェネレータ式
#= G(I Iのための範囲(10)IF I> 3)
#!彼が強調しました!
#ない値のすぐG内部

#印刷(G、タイプ(G))

プリント(G)
プリント(次へ(G))
プリント(次へ(G))
プリント(次へ(G))
プリント(次の(G))
プリント(次の(G))
プリント(次の(G))
プリント(次の(G))


を開くと( 'ノートは.txtで'、モード= 'RT' 、コード=「UTF-8 「)、Fのように:


Fでのラインのために#:
#RES + = LEN(ライン)
#印刷(RES)

第二の方法:
#RES = SUM([Fにライン用)ライン(LEN])
印刷(RES)

#3つの方法:最も効率的な
# RESが= SUM(Fライン入力用(LEN(ライン)))
次のように-できる上に略記すること#
RESを= SUM(Fライン入力用(ライン)LEN)
印刷(RES)

5つの再帰関数呼び出し

#:再帰的に定義
#再帰関数呼び出し:ネストされた関数の特別な形態は、コールされ
#具体的手段:
関数呼び出し処理を呼び出す位に直接または間接的に自分自身を持っている

#ダイレクトコール自体
#DEF F1()
プリント( '私は私があった')
#F1()
#F1()

間接アクセスは、自分自身を呼び出す
#DEF F1():
印刷( '===> F1')
#F2()

#DEF F2() :
#印刷( '===> F2')
F1の#()

#F1()


のコードの2枚で#実行中のループプログラム
#方法を:しばらく、forループ
#しばらく真:
#印刷(1111)
印刷(2222)
印刷(3333)

二番目の方法:再帰の本質が循環している:
#DEF F1():
印刷(1111)
印刷(2222)
を印刷(3333)
#F1()
#F1()


#2を:強調する必要性はこれです:
#再帰呼び出しではありませんコールは、再帰呼び出しの端部が下に一定の条件を満たしている必要があり、無期限に継続すべき
#= 0 N-
#N-ながら<10:
プリント(N-)
。#= 1 + N-


#DEF F1(N):
#N-IF == 10:
位リターン
#プリント(N-)
。#= 1 + N-
#F1(N)

#F1(0)

#3:二段階再帰
#のバックトラッキング:コールダウンつの層
#再帰:一定の終了条件、再帰呼び出しの終了を満たし、次いで一段階戻ります

#年齢=年齢+ 10(5)(4)
年齢=年齢(3)+ 10(4)
年齢=(3)。年齢(2)10 +
#年齢(2)年齢=(1)10 +
#年齢= 18である(1)

#DEF年齢(N):
#== N-IF 1:
#18がリターンされ
#リターン年齢(1-N-) 10 +


#年齢RES =(5)
プリント(RES)

#4:再帰的に適用
= Lを[1,2、[3、 [4、[5、[6、〔7、[8、[9]、[ 10、11は、[12である、[13は、]]]]]]]]]]である

:DEF F1(リスト1)
XのためのList1で:
タイプ(X)のリストである場合:
リストをリサイクルする必要がある場合#、再決意すなわち、再実行コード自体
F1(X)
他:
プリント(X)

F1(L)

おすすめ

転載: www.cnblogs.com/python--wang/p/12569058.html