web-dev-qa-db-ja.com

Pythonのファーストクラス関数とは

first-class functionsとはまだ混乱しています。私が正しく理解していれば、first-class functionsは1つの関数をオブジェクトとして使用する必要があります。これは正しいです?

これはfirst-class functionですか?

def this_is_example(myarg1):
    return myarg1

def this_is_another_ example(myarg):
     return this_is_example(myarg)+myarg

this_is_another_ example(1)
23
rwrwerwer

ファーストクラスの関数は、特定の種類の関数ではありません。 Pythonのすべての関数はファーストクラスの関数です。関数が特定のプログラミング言語でファーストクラスであると言うことは、パススルーと操作と同じように、それらをパススルーして操作できることを意味します他の種類のオブジェクト(整数や文字列など)。関数を変数に割り当てたり、引数として別の関数に渡したりすることができます。区別は、個々の関数がファーストクラスであるかどうかではなく、言語全体が関数をファーストクラスのオブジェクトとして扱うかどうか。

28
BrenBarn

「ファーストクラス関数」(FCF)は、いわゆる「ファーストクラス市民」(FCC)として扱われる関数です。プログラミング言語のFCCはオブジェクトです(ここでは「オブジェクト」という用語を自由に使用します)。

  • パラメータとして使用できます
  • 戻り値として使用できます
  • 変数に割り当てることができます
  • ハッシュテーブル、リストなどのデータ構造に格納できます。

実際、veryおおざっぱに言えば、FCFは「関数」タイプの変数(または関数を指す変数)です。 「通常の」変数で実行できるすべてのことをそれらで実行できます。

これを知っていると、all関数は特定のプログラミング言語ではファーストクラスであるため、this_is_another_example(myarg)this_is_example(myarg1)はどちらもファーストクラス関数です。

14
Timusan

いいえ、あなたは高次関数について話している- refer

ファーストクラス関数:関数を変数に割り当てるか、オブジェクト/変数として他の関数に渡すことができる場合、その関数はファーストクラス関数として呼び出されます。

Python、JavaScript、およびC(pointers)は、ファーストクラスの関数をサポートしています。

簡単な例(Pythonの場合):

def square(x): return x * x
def cube(x): return x * x * x

def print_result(x, func):
    """recieve a function and execute it and return result"""
    return func(x)

do_square = square     # assigning square function to a variable
do_cube = cube         # assigning cube function to a variable

res = print_result(5, do_square)   # passing function to another function
print res
res = print_result(5, do_cube)
print res

このプログラムは説明のためのものです。

5
Nelson Sequiera

Pythonのファーストクラス関数:

「ファーストクラス」の概念は、プログラミング言語の関数にのみ関係しています。ファーストクラスの関数とは、言語が関数を値として扱うことを意味します。つまり、関数を変数に割り当てたり、関数に渡したりすることができます。「ファーストクラスの関数」などの関数を参照する場合、めったに使用されません。 「ある言語はファーストクラスの関数をサポートしている/持っていない」と言う方がはるかに一般的です。したがって、「ファーストクラスの関数を持っている」は言語のプロパティです。

ファーストクラス関数のプロパティ:

  • 関数はオブジェクト型のインスタンスです。
  • 関数を変数に格納できます。
  • 関数をパラメーターとして別の関数に渡すことができます。
  • 関数から関数を返すことができます。
  • ハッシュテーブル、リストなどのデータ構造に保存できます。

したがって、関数型の値をサポートし、それらを非関数値と同じように扱う言語は、「ファーストクラス関数」を持つと言えます。

2
Manoj Knitan
def pie(r):
    def circleArea(d):
        return r * (d ** 2)
    return circleArea

c = pie(3.14)
print c(2)

上記は、Pythonのファーストクラス関数の例です。

1
MHK

Pythonのファーストクラス関数

言語の第一級オブジェクトは、全体を通して均一に処理されます。それらは、データ構造に格納されるか、引数として渡されるか、制御構造で使用されます。関数をファーストクラスのオブジェクトとして扱う場合、プログラミング言語はファーストクラスの関数をサポートすると言われています。 Pythonは、ファーストクラス関数の概念をサポートしています。

ファーストクラス関数のプロパティ:
関数はオブジェクト型のインスタンスです。
-関数を変数に格納できます。 -関数をパラメーターとして別の関数に渡すことができます。 -関数から関数を返すことができます。 -ハッシュテーブル、リストなどのデータ構造に保存できます。

Pythonのファーストクラス関数を示す例
1。関数はオブジェクトです:Python関数はファーストクラスオブジェクトです。以下の例では、関数を変数に割り当てています。この割り当てでは関数は呼び出されません。これは、shoutによって参照される関数オブジェクトを取得しますそれを指す2番目の名前を作成します。



    # Python program to illustrate functions
    # can be treated as objects
    def shout(text):  
        return text.upper()      
    print shout('Hello') 
    yell = shout 
    print yell('Hello')

出力:
こんにちは
こんにちは

  1. 関数は他の関数に引数として渡すことができます:関数はオブジェクトなので、他の関数に引数として渡すことができます。他の関数を引数として受け入れることができる関数は、高次関数とも呼ばれます。以下の例では、関数を引数として受け取る関数greetを作成しました。


    # Python program to illustrate functions
    # can be passed as arguments to other functions
    def shout(text):
        return text.upper()
    def whisper(text):
        return text.lower()
    def greet(func):
        #storing the function in a variable
        greeting = func("Hi, I am created by a function passed as an argument.")
        print greeting     
    greet(shout)
    greet(whisper)

出力:
こんにちは、私は引数として渡された関数によって作成されました。
こんにちは、私は引数として渡された関数によって作成されました。

  1. 関数は別の関数を返すことができます:関数はオブジェクトなので、別の関数から関数を返すことができます。以下の例では、create_adder関数はadder関数を返します。


    #Python program to illustrate functions
    #Functions can return another function    
    def create_adder(x):  
        def adder(y):  
            return x+y  
        return adder  
    add_15 = create_adder(15)
    print add_15(10)

出力:
25

0
shanu khera

pythonのすべての関数は、他のオブジェクトと同じように渡すことができるため、最初のクラスです。

0
f.rodrigues