ファーストクラスのオブジェクト(英語:ファーストクラスのオブジェクト)でコンピュータサイエンスを作成し、他の関数へのパラメータとして、またはの実装に中指に渡すことができる変数の実体。プロセス・エンティティは、ファーストクラスのオブジェクトとなる「オブジェクト指向」(具体化)と呼ばれます。
ファーストクラスのオブジェクトは何であります:
-
実行時に作成
-
要素は、変数やデータ構造に割り当てることができます
-
これは、関数のパラメータとして渡すことができます
-
あなたはの関数として結果を返すことができます
3つの一般的なオブジェクトモデルとオブジェクトの関数として1は、属性:ID、種類、および値。
#!は/ usr / binに/のenvのpython # - * -コーディング:UTF-8 - * - DEFのfoo(): プリント( 'FOOから') のfoo() プリント(ID(FOO)) プリント(タイプ(FOO)) 印刷(FOO)
輸出
FOOから 4406808360 <クラス'関数'> <0x106aa8f28で関数foo>
2.関数を参照することができ、その関数は、変数に割り当てることができます
この機能はまた、複数の変数に割り当てることができ、唯一の変更は、オブジェクト数の増加、これらの変数の最終的な性質は同じ関数オブジェクトを指している関数への参照です。
#!は/ usr / binに/のenv pythonの # - * -コーディング:UTF-8 - * - DEFのfoo(): プリント( 'FOOから') のfoo() FUNC = fooの#引用、赋值 プリント(FOO) プリント(FUNC ) FUNC()
輸出
FOOから <0x10eed8f28で関数foo> <0x10eed8f28で関数foo> fooのから
3.関数は、パラメータとして渡されてもよいです
デフFOO(): プリント( 'FOOから') デフバー(FUNC): プリント(FUNC) FUNC() バー(FOO)
輸出
<0x1047eff28の関数foo> fooのから
4戻り値として機能することができます
関数値(戻り)入力または出力機能として、1つ以上の機能をかかる時間の関数であり、我々は、高次関数などの関数を呼び出します
デフFOO(): 印刷( 'FOOから') DEFバール(FUNC): リターンFUNCの F =バー(FOO) プリント(f)は F()
輸出
<0x107f29f28の関数foo> fooのから
要素の機能は、コンテナタイプとして使用することができます
コンテナオブジェクト(リスト、辞書、集合など)の整数、文字列を含む、任意のオブジェクトに格納することができ、機能もコンテナオブジェクトに格納することができます
デフFOO(): 印刷( 'FOOから') DIC = { 'FUNC':FOO} FOO() プリント(DIC [ 'FUNC']) DIC [ 'FUNC']()
輸出
FOOから <0x10997ef28で関数foo> fooのから
6.機能も入れ子にすることができます
ネストされた関数の定義
デフF1(): DEF F2(): ('F2から')印刷 デフF3(): プリント( 'F3から') F3() F2() F1()
輸出
F2から F3から
アプリケーション
:DEF(テキスト)を取得 デフクリーン(T):#2 リターンT [1:] NEW_TEXT =クリーン(テキスト)#1 リターンLEN(NEW_TEXT) ()'のpython'(取得)プリントを
輸出
5
高次機能
パラメータまたは関数の戻り値の関数としての機能は、高階関数と呼ばれています
無名関数
匿名関数名には名前ではありません示唆して、それは関数を作成するための時間を節約し、それはターンキーで、ラムダキーワードを作成し、また、ラムダ式と呼ばれます
fruits = ['strawberry','apple','cherry','banana',' pineapple'] list = sorted(fruits,key=lambda x:x[-1]) print(list) # ['banana', 'apple', ' pineapple', 'strawberry', 'cherry']
上記のソート()関数は、果物の最後の文字を並べ替えるために、そこには実用的な意義ではありませんが、ラムダ式の例を使用して。
呼び出し可能オブジェクト
関数は、関数呼び出しがそれを括弧ことができるように、カッコ内の関数名は、この関数を呼び出している、その後、他のオブジェクトにもなることができますオブジェクトであります
それは可能であるが、唯一の私たちは、クラスの中で特別なメソッドを実装する必要がありますコールを
class Fruit(): def __init__(self,name): self.name = name def __call__(self, *args, **kwargs): print(self.name+' was called') apple = Fruit('apple') apple() # apple was called
この方法はさらに、任意の呼び出しパラメータ、および機能を追加することができます。
オブジェクトについて決定するために呼び出し可能()関数によって呼び出されることができます
print(callable(apple)) # True
print(callable(Fruit)) # True
あなたは真のリターンを呼び出すことができます。クラスもオブジェクトであるため、ここでは、フルーツも呼び出すことができます、果物も、それはまた、メソッド呼び出しを実装して作成したクラスのインスタンスである、ここでは詳しく説明しません。