Funcions de primera classe en Python

Funcions de primera classe en Python

A Python les funcions es tracten com a objectes de primera classe. Això vol dir que es poden utilitzar com cadenes numèriques o qualsevol altra variable. Pots:

  • Assignar funcions a variables.
  • Passeu-los com a arguments a altres funcions.
  • Torna-los de les funcions.
  • Emmagatzemeu-los en estructures de dades com ara llistes o diccionaris.

Aquesta capacitat us permet escriure codi modular i potent reutilitzable.

Característiques de les funcions de primera classe

Les funcions en Python tenen les següents característiques importants. Vegem-los un per un amb exemples:

1. Assignació de funcions a variables

Podem assignar una funció a una variable i utilitzeu la variable per cridar la funció.

Exemple:

Python
   def   msg  (  name  ):   return   f  'Hello   {  name  }  !'   # Assigning the function to a variable   f   =   msg   # Calling the function using the variable   print  (  f  (  'Emma'  ))   

Sortida
Hello Emma!  

Explicació:

  • La funció msg s'assigna a la variable f.
  • Ara es pot utilitzar f per cridar a msg mostrant que les funcions es comporten com a variables.

2. Passant funcions com a arguments

Les funcions poden ser passat com a arguments a altres funcions habilitants funcions d'ordre superior .

Exemple:

Python
   def   msg  (  name  ):   return   f  'Hello   {  name  }  !'   def   fun1  (  fun2     name  ):   return   fun2  (  name  )   # Passing the msg function as an argument   print  (  fun1  (  msg     'Alex'  ))   

Sortida
Hello Alex!  

Explicació:

  • La funció fun1 pren una altra funció (fun2) com a entrada.
  • msg es passa a fun1 que després l'anomena amb "Alex".

3. Retorn de funcions d'altres funcions

Una funció pot retorna una altra funció permetent la creació de fàbriques de funcions.

Exemple:

Python
   def   fun1  (  msg  ):   def   fun2  ():   return   f  'Message:   {  msg  }  '   return   fun2   # Getting the inner function   func   =   fun1  (  'Hello World!'  )   print  (  func  ())   

Sortida
Message: Hello World!  

Explicació:

  • La funció fun1 defineix una altra funció fun2 i la retorna.
  • func emmagatzema la funció retornada fun2 que es pot executar més tard.

Les funcions es poden emmagatzemar en estructures de dades com llistes o diccionaris .

Exemple:

Python
   def   add  (  x     y  ):   return   x   +   y   def   subtract  (  x     y  ):   return   x   -   y   # Storing functions in a dictionary   d   =   {   'add'  :   add     'subtract'  :   subtract   }   # Calling functions from the dictionary   print  (  d  [  'add'  ](  5     3  ))   print  (  d  [  'subtract'  ](  5     3  ))   

Sortida
8 2  

Explicació:

  • Les funcions de suma i resta s'emmagatzemen en un diccionari.
  • S'hi accedeix mitjançant les seves claus i s'executen directament.
Test suggerit Edita el qüestionari 8 Preguntes

Quina de les opcions següents descriu millor una funció de primera classe en llenguatges de programació?

  • A

    Una funció que només es pot cridar des del seu propi àmbit.

  • B

    Una funció que es pot assignar a variables passats com a arguments i retornats d'altres funcions com qualsevol altre objecte.

  • C

    Una funció que només es pot definir al nivell superior d'un mòdul.

  • D

    Una funció que només es pot executar en un context específic.

Explicació:


En el context de les funcions de primera classe, què és una funció d'ordre superior?

  • A

    Una funció que només pot retornar tipus de dades primitius.

  • B

    Una funció que pot prendre altres funcions com a arguments o retornar-les com a resultats.

  • C

    Una funció que es defineix dins d'una altra funció però que no es pot retornar.

  • D

    Una funció que s'executa en un fil separat.

Explicació:


Quina serà la sortida del següent codi?

salutació def (nom):

torna f'Hola {nom}'


dir_hola = saludar

imprimir(say_hola('Geek'))

  • A

    Hola salutació

  • B

    saludar

  • C

    Hola Geek

  • D

    TypeError

Explicació:

Les funcions es poden assignar a variables. Aquí say_hello es converteix en una altra referència per saludar.

Quina de les següents no és una propietat de les funcions de primera classe?

  • A

    Les funcions es poden emmagatzemar en estructures de dades

  • B

    Les funcions es poden assignar a variables

  • C

    Les funcions poden retornar altres funcions

  • D

    Les funcions només poden retornar tipus primitius

Explicació:

Les funcions de primera classe poden retornar qualsevol tipus, incloses altres funcions, no limitades a les primitives.

Quina serà la sortida d'aquest codi?

def outer():

def inner():

retornar "Funció interna"

tornar a l'interior

func = exterior()

imprimir(func())

  • A

    Funció interna

  • B

    interior

  • C

    exterior

  • D

    Error

Explicació:

outer() retorna la funció interna i func() la crida retornant la seva cadena.

Quina de les següents NO és una característica de les funcions de primera classe?

  • A

    Es poden assignar a variables.

  • B

    Es poden passar com a arguments a altres funcions.

  • C

    Només es poden definir una vegada en un programa.

  • D

    Es poden retornar d'altres funcions.

Explicació:


Quina és la sortida del codi següent?

def make_multiplicator(n):

multiplicador def (x):

retornar x * n

multiplicador de retorn

doble = make_multiplicator(2)

imprimir (doble (5))

  • A

    7

  • B

    10

  • C

    25

  • D

    Error

Explicació:

make_multiplier(2) retorna una funció que multiplica el seu argument per 2. Per tant, double(5) retorna 10.



Com tracta Python les funcions respecte a les variables?

  • A

    Les funcions són objectes estàtics

  • B

    Les funcions són constants i no es poden reassignar

  • C

    Les funcions són ciutadans de primera classe i es poden emmagatzemar aprovades i reassignades

  • D

    Les funcions s'han de declarar globals per ser utilitzades

Explicació:

Ser ciutadans de primera classe significa que les funcions es poden assignar aprovades i retornades com altres objectes.

Funcions de primera classe en PythonTest completat amb èxit La teva puntuació:   2 /8 Precisió:  0% Inicieu sessió per veure l'explicació 1 /8 1 /8 < Previous Següent >