この記事では、Python の高度な機能の使用方法を例を交えて詳しく説明します。この内容が、困っている友人に役立つことを願っています。
関数パラメータの問題
3つの基本的な状況
fun(a,b)
fun(a,b)bは反復可能オブジェクト
fun(a,**b) b は取得型の反復オブジェクトであり、関数本体内で解析されると辞書に相当します
ls = [i for i in range(10)] #print(ls) def fun1(a,*b): for i in b: print(a,i) #fun1(1,*ls) def fun2(name,age,**kw): print("name:",name,"age:",age,"other:",kw) fun2('fanhaitao','26',参数= 'random')
**kw参数把键值对转换成字典的形式
匿名関数
lambda
戻り値はありません、戻り値は式の値です
関数には名前がありません、名前の競合を心配する必要はありません
Anonymous function は関数オブジェクトでもあり、匿名関数も使用できます。 変数に値を代入し、その変数を使用して関数を呼び出します
fun3 = lambda x:x+1 print(fun3(99)) #100 fun4 = lambda x,y :x*x + y*y print(fun4(3,4)) #25
Decorator@
この方法は、コード中に機能を動的に追加します。実行は「デコレーター」と呼ばれます
パラメータのないデコレーター
#定义一个装饰器 def log(func): def wrapper(*args,**kw): print('call %s()' % func.__name__) return func(*args,**kw) return wrapper @log def now(): print('2018-3-29') now()
デコレーターの内部論理関係 (呼び出しシーケンス): log() -> return Wrapper() -> return func() -> ; now()
含まれるパラメータデコレーター
#定义一个装饰器 def log(text): def decorator(func): def wrapper(*args,**kw): print('%s %s():' % (text,func.__name__)) return func(*args,**kw) return wrapper return decorator @log("可爱的参数") def now(): print('2018-3-29') now()
BiF組み込み関数
zip: 2つの反復可能なオブジェクトを1つの反復可能なオブジェクトに結合します
注: 重複する一致しない変数は破棄されます
りーenumerate: 位置 + 要素で構成される反復可能なオブジェクトを返します
a = [1,2,3] b = 'abcde' for i in zip(a,b): print(i) for i,j in zip(a,b): print("Index:",i,";Item:",j)
filter: フィルター関数
2 つのパラメーター、最初の 1 つはパラメーター、2 つ目は反復可能なオブジェクト, return の値も反復可能なオブジェクトです; パラメーター内の反復オブジェクトが関数内で True の場合、値は保持されます。それ以外の場合は、パラメーター内の関数が各反復オブジェクト
に対して動作し、戻り値を返します。 functools ライブラリ
内の操作対象オブジェクト
for i,j in enumerate('abcde'):
print(i,j)
を受け取ります