2.2. Declaración de funciones

Python tiene funciones como la mayoría de otros lenguajes, pero no dispone de ficheros de cabeceras como C++ o secciones interface/implementation como tiene Pascal. Cuando necesite una función, limítese a declararla, como aquí:


def buildConnectionString(params):

Fíjese en que la palabra clave def empieza la declaración de la función, seguida de su nombre y de los argumentos entre paréntesis. Si hay varios argumentos (no se muestra aquí) irán separados por comas.

Observe también que la función no define un tipo de retorno. Las funciones de Python no especifican el tipo de dato que retornan; ni siquiera especifican si devuelven o no un valor. En realidad, cada función de Python devuelve un valor; si la función ejecuta alguna vez una sentencia return devolverá ese valor, y en caso contrario devolverá None, el valor nulo de Python.

nota
En Visual Basic las funciones (devuelven un valor) comienzan con function, y las subrutinas (no devuelven un valor) lo hacen con sub. En Python no tenemos subrutinas. Todo son funciones, todas las funciones devuelven un valor (incluso si es None) y todas las funciones comienzan por def.

El argumento params no especifica un tipo de dato. En Python nunca se indica explícitamente el tipo de las variables. Python averigua el tipo de la variable y lo almacena de forma interna.

nota
En Java, C++ y otros lenguajes de tipo estático debe especificar el tipo de dato del valor de retorno de la función y de cada uno de sus argumentos. En Python nunca especificará de forma explícita el tipo de dato de nada. Python lleva un registro interno del tipo de dato basándose en el valor asignado.

2.2.1. Los tipos de Python frente a los de otros lenguajes de programación

Un erudito lector me envió esta explicación de cómo se comparan los tipos de Python con otros lenguajes de programación:

Lenguajes de tipado estático
Un lenguaje cuyos tipos se fijan en el momento de compilar. La mayoría de los lenguajes de tipado estático fuerzan esto exigiéndole que declare todas las varibles con sus tipos antes de usarlas. Java y C son lenguajes de tipado estático.
Lenguajes de tipado dinámico
Un lenguaje cuyos tipos se descubren en tiempo de ejecución; es lo opuesto del tipado estático. VBScript y Python son de tipado dinámico, porque fijan el tipo que va a tener una variable cada vez que se le asigna un valor.
Lenguajes fuertemente tipados
Un lenguaje cuyos tipos son estrictos. Java y Python son fuertemente tipados. Si tiene un entero, no puede tratarlo como una cadena de texto sin convertirlo explícitamente.
Lenguajes débilmente tipados
Un lenguaje cuyos tipos pueden ser ignorados; lo opuesto a fuertemente tipados. VBScript es débilmente tipado. En VBScript puede concatenar la cadena '12' y el entero 3 para obtener la cadena '123' y entonces tratarlo como el entero 123, todo ello sin conversiones explícitas.

De manera que Python es tanto dinámicamente tipado (porque no usa declaraciones explícitas de tipos de dato) como fuertemente tipado (porque una vez la variable adquiere un tipo, sí que importa).