Pythonの関数オブジェクト

ファーストクラスのオブジェクト(英語:ファーストクラスのオブジェクト)でコンピュータサイエンスを作成し、他の関数へのパラメータとして、またはの実装に中指に渡すことができる変数の実体。プロセス・エンティティは、ファーストクラスのオブジェクトとなる「オブジェクト指向」(具体化)と呼ばれます。

ファーストクラスのオブジェクトは何であります:

  • 実行時に作成

  • 要素は、変数やデータ構造に割り当てることができます

  • これは、関数のパラメータとして渡すことができます

  • あなたはの関数として結果を返すことができます

 

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

あなたは真のリターンを呼び出すことができます。クラスもオブジェクトであるため、ここでは、フルーツも呼び出すことができます、果物も、それはまた、メソッド呼び出しを実装して作成したクラスのインスタンスである、ここでは詳しく説明しません。

 

参考:https://www.cnblogs.com/smallmars/p/6936871.html

  https://www.cnblogs.com/sfencs-hcy/p/10454125.html

おすすめ

転載: www.cnblogs.com/wisir/p/11072116.html