inicio mail me! sindicaci;ón

Python: argumentos identificados en una función

Observemos el siguiente código:

# -*- coding: UTF-8 -*-

def foo(bar=False):
        return ‘"bar" vale "%s"’%(bar)

if __name__==‘__main__’:
        print (‘Cuando no se especifica el argumento, toma el valor por defecto:\n\tfoo() retorna ‘+foo())
        print (‘Cuando sí se especifica el argumento, toma el valor especificado:\n\tfoo(bar=\’baz\’) retorna ‘+foo(bar=‘baz’))

La función foo está definida de manera que recibe un parámetro llamado bar. Tal y como está especificada, si al llamarla no se le pasa ese parámetro, bar tomará el valor por defecto False. Por ejemplo, con la llamada foo(), sin más, bar pasa a ser False, con lo que la función retorna “bar” vale “False”.

Si sí se le pasa ese argumento, la función simplemente usa el valor proporcionado:

>>> import wx_formas
>>> wx_formas.foo(3)
‘"bar" is "3"’
>>> wx_formas.foo(None)
‘"bar" is "None"’
>>> wx_formas.foo([1,2,3])
‘"bar" is "[1, 2, 3]"’
>>>

La ejecución del código original da el siguiente resultado:

Cuando no se especifica el argumento, toma el valor por defecto:
        foo() retorna "bar" vale "False"
Cuando sí se especifica el argumento, toma el valor especificado:
        foo(bar=‘baz’) retorna "bar" vale "baz"

También se le puede pasar un número variable de argumentos a una función, bien con def foo(*tupla_de_argumentos), o bien con def foo(**diccionario_de_argumentos).

En el libro Learning Python, de Mark Lutz, hay más información acerca de esto (capítulo 16, pág. 331 en la tercera edición, de octubre de 2007 en inglés).

Por darle un poco más de chicha al artículo, diré que acabo de encontrar la Py Zine, revista dedicada enteramente a Python.

Gravatar

MD said,

January 7, 2009 @ 10:57

Buen año.

Como yo ando también aprendiendo/re-aprendiendo “paizon” en el parrafo he encontrado un pequeñin error:

“…También se le puede pasar un número variable de argumentos a una función, bien con def foo(*tupla_de_argumentos), o bien con def foo(*diccionario_de_argumentos). …”

Para recoger un diccionario como argumento es con dos asteriscos, tal que asi foo(**diccionario_de_argumentos).

Saludos.

Gravatar

PerkiPat said,

January 7, 2009 @ 21:49

Arreglado. Un pequeño despiste.
El libro que compraste sí lo usas, verdad?? Yo probablemente en algún momento lo compre, que ya que se han molestado en traducirlo al castellano… Y además últimamente tengo problemas para acceder a docs.python.org

Yo aprendí con el Learning Python de Mark Lutz, que está por ahí enlazado en el artículo

Gravatar

MD said,

January 8, 2009 @ 00:08

El tema es que el libro esta encuadrado para la version 2.x, espero que salga para la version 3. Aunque la adopción de python3 parece que va lenta, porque hay librerías mas o menos interesantes que todavía no se han portado a la versión 3.

No se la cosa esta muy reñida porque no hay compatibilidad hacia atras en muchas cosas.

RSS feed for comments on this post · TrackBack URI

Leave a Comment