python追記(4)

2393 ワード

1.匿名関数
def f(x):
    return x*x
c=lambda x: x*x
print (f(2))
>>> 4
print (c(2))
>>> 4

匿名関数には、returnを書かずに式が1つしかないことに制限があります.戻り値は式の結果です.匿名関数を使用すると、関数に名前がないため、関数名の競合を心配する必要はありません.また、匿名関数も1つの関数オブジェクトである、匿名関数を1つの変数に付与、変数を再利用してその関数を呼び出すようにしてもよい.
2.バイアス関数
数学の偏関数とは違うことに注意してください.
int()関数は文字列を整数に変換でき、デフォルトでは10進数の整数に捕まえるprint (int("100")) #123
int()関数は、N(2<=N<=36)進数の変換を可能にする2番目のbaseパラメータを受信することもできるprint (int("100",base=2)) #4
バッチでバイナリを変換する場合は、関数を定義できます.
def int2(x,base=2):
    return int(x,base)

バイアス関数は、関数のいくつかのパラメータを固定することです.これにより、別の関数を定義する必要はありません.たとえば、次のようにします.
import functools
int2 = functools.partial(int, base=2) #     int     
int2("1000") #8

ただし、固定パラメータを手動で指定することもできます(コードを接続):int2("1000",base=10) #1000
3.反復器
forサイクルに直接作用できるデータ型には、list、tuple、dict、set、strなどの集合データ型があることが知られています.1つのクラスはgeneratorであり、ジェネレータとyield付きgenerator functionを含む.これらのforループに直接作用するオブジェクトは、反復可能なオブジェクト:Iterableと総称されます.isinstance()を使用して、オブジェクトがIterableオブジェクトであるかどうかを判断できます.
from collections import Iterable
from collections import Iterator
isinstance([],Iterable) #True
isinstance({},Iterable) #True
isinstance("abc",Iterable) #True
isinstance((1,2,3),Iterable) #True

next()関数によって呼び出され、次の値を繰り返し返すオブジェクトを反復器:Iteratorと呼びます.isinstance()を使用して、オブジェクトがIteratorオブジェクトであるかどうかを判断できます.
from collections import Iterable
from collections import Iterator
isinstance([],Iterator) #False
isinstance({},Iterator) #False

ジェネレータはすべてIteratorオブジェクトですが、list、dict、strはIterableですが、Iteratorではありません.リスト、dict、strなどのIterableをIteratorにするにはiter()関数を使用します.
from collections import Iterable
from collections import Iterator
>>> isinstance(iter([]), Iterator)
True
>>> isinstance(iter('abc'), Iterator)
True

Iteratorがnext()関数として機能する
list=[1,2,3]
a=iter(list)
a.next() #1
a.next() #2

forループに作用するオブジェクトはすべてIterableタイプです.
next()関数に作用するオブジェクトはIteratorタイプであり、不活性計算のシーケンスを表す.
反復器はデータのみを前方に取得できます
まとめ:
関数プログラミングの利点:
  • は数学的に1つのプログラムの正確性を検証するので、関数式プログラミングは人工知能の分野で
  • の応用が多い.
  • モジュール化、問題解決策をN個のモジュール
  • に分ける.
  • の組合せと多重化
  • 欠点:
  • 少し難しい
  • は、ある適用方向
  • に比較的傾向がある.