Creado por Nicolás Labbé
“Conjunto de reglas que define cómo deben escribirse las instrucciones en un lenguaje de programación para que sean válidas y puedan ser interpretadas correctamente por el computador (o, más específicamente, por el compilador o intérprete del lenguaje).”
print("Hello, World!")
La indentación se refiere a los espacios al principio de una línea de código. Mientras que en otros lenguajes de programación la sangría solo se utiliza para facilitar la lectura, en Python es muy importante.
Python utiliza la indentación para indicar un bloque de código.
if 5 > 2:
print("Five is greater than two!")
Python te dará un error si omites la indentación:
if 5 > 2:
print("Five is greater than two!")
La cantidad de espacios depende del programador, el uso más común es cuatro, pero tiene que ser al menos uno.
if 5 > 2:
print("Five is greater than two!")
if 5 > 2:
print("Five is greater than two!")
Debes utilizar la misma cantidad de espacios en el mismo bloque de código, de lo contrario, Python te dará un error:
if 5 > 2:
print("Five is greater than two!")
print("Five is greater than two!")
Los comentarios comienzan con un #
y Python los ignorará:
>>> print("Hello, World!") #This is a comment
Hello, World!
Los comentarios se pueden colocar al final de una línea y Python ignorará el resto de la línea:
>>> print("Hello, World!") #This is a comment
Hello, World!
Un comentario no tiene que ser necesariamente un texto que explique el código, también puede usarse para evitar que Python ejecute código:
>>> #print("Hello, World!")
>>> print("Cheers, Mate!")
Cheers, Mate!
Python no tiene una sintaxis específica para comentarios multilínea.
Para añadir un comentario multilínea, se puede insertar un signo #
en cada línea:
>>> #This is a comment
>>> #written in
>>> #more than just one line
>>> print("Hello, World!")
Hello, World!
O, aunque no sea del todo como se esperaba, puedes usar una cadena multilínea.
Como Python ignora las cadenas literales que no están asignadas a una variable, puedes añadir una cadena multilínea (entre comillas triples) a tu código y colocar tu comentario dentro:
>>> """
... This is a comment
... written in
... more than just one line
... """
>>> print("Hello, World!")
Hello, World!
Las variables son contenedores para almacenar valores de datos.
Python no tiene ningún comando para declarar una variable.
Una variable se crea en el momento en que se le asigna un valor por primera vez.
>>> x = 5
>>> y = "John"
>>> print(x)
5
>>> print(y)
John
Las variables no necesitan declararse con ningún tipo particular, e incluso pueden cambiar de tipo después de haber sido configuradas.
>>> x = 4 # x is of type int
>>> x = "Sally" # x is now of type str
>>> print(x)
Sally
Si desea especificar el tipo de datos de una variable, esto se puede hacer mediante conversión.
x = str(3) # x will be '3'
y = int(3) # y will be 3
z = float(3) # z will be 3.0
Puede obtener el tipo de dato de una variable con la función type()
.
>>> x = 5
>>> y = "John"
>>> print(type(x))
>>> print(type(y))
Las variables de cadena se pueden declarar usando comillas simples o dobles:
x = "John"
# is the same as
x = 'John'
Los nombres de las variables distinguen entre mayúsculas y minúsculas.
a = 4
A = "Sally"
#A will not overwrite a
Una variable puede tener un nombre corto (como x e y) o uno más descriptivo (edad, nombre_del_coche, volumen_total).
Reglas para las variables de Python
Nombres de variables válidos:
myvar = "John"
my_var = "John"
_my_var = "John"
myVar = "John"
MYVAR = "John"
myvar2 = "John"
Nombres de variables inválidos:
2myvar = "John"
my-var = "John"
my var = "John"
Los nombres de variables con más de una palabra pueden ser difíciles de leer.
En Python, la convención de nombres para variables sigue principalmente las recomendaciones establecidas en el PEP 8, que es la guía de estilo oficial para el código Python.
Usa snake_case
, en donde las palabras está en minúsculas y separadas por guiones bajos
my_variable_name = "John"
Es legible y es el estándar ampliamente aceptado en Python.
Usa UPPER_CASE
, en donde las palabras están en mayúsculas y separadas por guiones bajos.
PI = 3.14159
MAX_RETRIES = 5
Python permite asignar valores a múltiples variables en una sola línea:
>>> x, y, z = "Orange", "Banana", "Cherry"
>>> print(x)
Orange
>>> print(y)
Banana
>>> print(z)
Cherry
Puedes asignar el mismo valor a múltiples variables en una sola línea:
>>> x = y = z = "Orange"
>>> print(x)
Orange
>>> print(y)
Orange
>>> print(z)
Orange
Si tienes una colección de valores en una lista, tupla, etc., Python te permite extraer los valores en variables. Esto se llama desempaquetar.
>>> fruits = ["apple", "banana", "cherry"]
>>> x, y, z = fruits
>>> print(x)
apple
>>> print(y)
banana
>>> print(z)
cherry
La función print() de Python se utiliza a menudo para generar variables.
>>> x = "Python is awesome"
>>> print(x)
Python is awesome
En la función print(), se generan múltiples variables, separadas por una coma:
>>> x = "Python"
>>> y = "is"
>>> z = "awesome"
>>> print(x, y, z)
Python is awesome
También puedes utilizar el operador +
para generar múltiples variables:
>>> x = "Python "
>>> y = "is "
>>> z = "awesome"
>>> print(x + y + z)
Python is awesome
Para los números, el carácter + funciona como un operador matemático:
>>> x = 5
>>> y = 10
>>> print(x + y)
15
En la función print(), cuando intentas combinar una cadena y un número con el operador +, Python te dará un error:
>>> x = 5
>>> y = "John"
>>> print(x + y)
Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for +: 'int' and 'str'
La mejor forma de generar múltiples variables en la función print() es separarlas con comas, que incluso admiten diferentes tipos de datos:
>>> x = 5
>>> y = "John"
>>> print(x, y)
5 John
Las variables que se crean fuera de una función (como en todos los ejemplos de las páginas anteriores) se conocen como variables globales.
Las variables globales pueden ser utilizadas por cualquier persona, tanto dentro como fuera de las funciones.
Crea una variable fuera de una función y úsala dentro de la función
>>> x = "awesome"
>>>
>>> def myfunc():
... print("Python is " + x)
...
>>> myfunc()
Python is awesome
Si creas una variable con el mismo nombre dentro de una función, esta será local y solo podrá usarse dentro de la función. La variable global con el mismo nombre permanecerá como estaba, global y con su valor original.
Crea una variable dentro de una función, con el mismo nombre que la variable global
>>> x = "awesome"
>>>
>>> def myfunc():
... x = "fantastic"
... print("Python is " + x)
...
>>> myfunc()
Python is fantastic
>>>
>>> print("Python is " + x)
Python is awesome
global
Normalmente, al crear una variable dentro de una función, esta es local y solo puede usarse dentro de esa función.
Para crear una variable global dentro de una función, se puede usar la palabra clave global.
Si utilizas la palabra clave global, la variable pertenece al ámbito global:
>>> def myfunc():
... global x
... x = "fantastic"
...
>>> myfunc()
>>>
>>> print("Python is " + x)
Python is fantastic
Además, utilice la palabra clave global si desea cambiar una variable global dentro de una función.
Para cambiar el valor de una variable global dentro de una función, haga referencia a la variable utilizando la palabra clave global:
>>> x = "awesome"
>>>
>>> def myfunc():
... global x
... x = "fantastic"
...
>>> myfunc()
>>>
>>> print("Python is " + x)
Python is fantastic
Python tiene los siguientes tipos de datos integrados por defecto, en estas categorías:
Categoría | Nombre |
Text Type | str |
Numeric Types | int, float, complex |
Sequence Types | list, tuple, range |
Mapping Type | dict |
Set Types | set, frozenset |
Boolean Type | bool |
Binary Types | bytes, bytearray, memoryview |
None Type | NoneType |
Existen tres tipos numéricos en Python:
Las variables de tipo numérico se crean cuando se les asigna un valor:
>>> x = 1 # int
>>> y = 2.8 # float
>>> z = 1j # complex
>>> print(type(x))
>>> print(type(y))
>>> print(type(z))
Int, o entero, es un número entero, positivo o negativo, sin decimales, de longitud ilimitada.
>>> x = 1
>>> y = 35656222554887711
>>> z = -3255522
>>>
>>> print(type(x))
>>> print(type(y))
>>> print(type(z))
Un número flotante o "número de punto flotante" es un número, positivo o negativo, que contiene uno o más decimales.
>>> x = 1.10
>>> y = 1.0
>>> z = -35.59
>>>
>>> print(type(x))
>>> print(type(y))
>>> print(type(z))
Los flotantes también pueden ser números científicos con una "e" para indicar la potencia de 10.
>>> x = 35e3
>>> y = 12E4
>>> z = -87.7e100
>>>
>>> print(type(x))
>>> print(type(y))
>>> print(type(z))
Las cadenas en Python o strings
son un tipo inmutable que permite almacenar secuencias de caracteres. Para crear una, es necesario incluir el texto entre comillas dobles "[tu string aquí]"
.
Puedes obtener más ayuda con el siguiente comando
help(str)
s = "Esto es una cadena"
print(s) #Esto es una cadena
print(type(s)) #
También es valido declarar las cadenas con comillas simples simples '.
s = 'Esto es otra cadena'
print(s) #Esto es otra cadena
print(type(s)) #
Las cadenas no están limitadas en tamaño, por lo que el único límite es la memoria de tu computador. Una cadena puede estar también vacía.
s = ''
¿Y si quiero introducir una comilla, bien sea simple ' o doble " dentro de una cadena?
Para resolver este problema debemos recurrir a las secuencias de escape. En Python hay varias, pero las analizaremos con más detalle en otro capítulo. Por ahora, la más importante es \", que nos permite incrustar comillas dentro de una cadena.
>>> s = "Esto es una comilla doble \" de ejemplo"
>>> print(s)
Esto es una comilla doble " de ejemplo
También podemos incluir un salto de línea dentro de una cadena, lo que significa que lo que esté después del salto, se imprimirá en una nueva línea.
>>> s = "Primer linea\nSegunda linea"
>>> print(s)
Primer linea
Segunda linea
Puedes devolver un rango de caracteres utilizando la sintaxis de segmentación.
Especifica el índice inicial y el índice final, separados por dos puntos, para devolver una parte de la cadena.
Obtener los caracteres de la posición 2 a la posición 5 (no incluidos):
>>> b = "Hello, World!"
>>> print(b[2:5])
llo
En Python, las cadenas se indexan comenzando desde 0. Esto significa que el primer carácter de la cadena tiene un índice de 0, el segundo tiene un índice de 1, el tercero tiene un índice de 2, y así sucesivamente.
Si omitimos el índice de inicio, el rango comenzará en el primer carácter.
>>> b = "Hello, World!"
>>> print(b[:5])
Hello
Si omitimos el índice final, el rango irá hasta el final.
>>> b = "Hello, World!"
>>> print(b[2:])
llo, World!
Utiliza índices negativos para iniciar la porción desde el final de la cadena.
>>> b = "Hello, World!"
>>> print(b[-5:-2])
orl
Python tiene un conjunto de métodos integrados que puedes usar en cadenas.
El método upper() convierte todos los caracteres alfabéticos en mayúsculas.
>>> s = "mi cadena"
>>> print(s.upper())
MI CADENA
El método lower() convierte todos los caracteres alfabéticos en minúscula.
>>> s = "MI CADENA"
>>> print(s.lower())
mi cadena
El método strip() elimina a la izquierda y derecha el carácter que se le introduce. Si se llama sin parámetros elimina los espacios. Muy útil para limpiar cadenas.
>>> s = " abc "
>>> print(s.strip())
abc
El método replace() reemplaza una cadena con otra cadena.
>>> a = "Hello, World!"
>>> print(a.replace("H", "J"))
Jello, World!
El método split() divide una cadena en subcadenas y las devuelve almacenadas en una lista. La división es realizada de acuerdo a el primer parámetro, y el segundo parámetro indica el número máximo de divisiones a realizar.
>>> s = "Python,Java,C"
>>> print(s.split(","))
['Python', 'Java', 'C']
Para concatenar o combinar dos cadenas puedes utilizar el operador +.
>>> a = "Hello"
>>> b = "World"
>>> c = a + b
>>> print(c)
HelloWorld
Para agregar un espacio entre ellos, agregue un " ":
>>> a = "Hello"
>>> b = "World"
>>> c = a + " " + b
>>> print(c)
Hello World
Tal vez queramos declarar una cadena que contenga variables en su interior, como números o incluso otras cadenas. Una forma de hacerlo sería concatenando la cadena que queremos con otra usando el operador +. Nótese que str() convierte en string lo que se pasa como parámetro.
>>> x = 5
>>> s = "El número es: " + str(x)
>>> print(s)
El número es: 5
Otra forma es usando %. Por un lado tenemos %s que indica el tipo que se quiere imprimir, y por otro a la derecha del % tenemos la variable a imprimir. Para imprimir una cadena se usaría %s o %f para un valor en coma flotante.
>>> x = 5
>>> s = "El número es: %d" % x
>>> print(s)
El número es: 5
Una forma un poco más moderna de realizar lo mismo, es haciendo uso de format().
>>> s = "Los números son {} y {}".format(5, 10)
>>> print(s)
Los números son 5 y 10
Por si no fueran pocas ya, existe una tercera forma de hacerlo introducida en la versión 3.6 de Python. Reciben el nombre de cadenas literales o f-strings. Esta nueva característica, permite incrustar expresiones dentro de cadenas.
>>> a = 5; b = 10
>>> s = f"Los números son {a} y {b}"
>>> print(s)
Los números son 5 y 10
Algunos de los métodos de la clase string son:
El método capitalize() se aplica sobre una cadena y la devuelve con su primera letra en mayúscula.
>>> s = "mi cadena"
>>> print(s.capitalize())
Mi cadena
El método swapcase() convierte los caracteres alfabéticos con mayúsculas en minúsculas y viceversa.
>>> s = "mI cAdEnA"
>>> print(s.swapcase())
Mi CaDeNa
El método join() devuelve la primera cadena unida a cada uno de los elementos de la lista que se le pasa como parámetro.
>>> s = " y ".join(["1", "2", "3"])
>>> print(s)
1 y 2 y 3
Hacer un cast o casting significa convertir un tipo de dato a otro. Anteriormente hemos visto tipos como los int, string o float. Pues bien, es posible convertir de un tipo a otro.
Pero antes de nada, veamos los diferentes tipos de cast o conversión de tipos que se pueden hacer. Existen dos:
Esta conversión de tipos es realizada automáticamente por Python, prácticamente sin que nos demos cuenta. Aún así, es importante saber lo que pasa por debajo para evitar problemas futuros.
El ejemplo más sencillo donde podemos ver este comportamiento es el siguiente:
>>> a = 1 #
>>> b = 2.3 #
>>>
>>> a = a + b
>>> print(a) # 3.3
3.3
>>> print(type(a)) #
Pero si sumamos a y b y almacenamos el resultado en a, podemos ver como internamente Python ha convertido el int en float para poder realizar la operación, y la variable resultante es float
Sin embargo hay otros casos donde Python no es tan listo y no es capaz de realizar la conversión. Si intentamos sumar un int a un string, tendremos un error TypeError.
>>> a = 1
>>> b = "2.3"
>>>
>>> c = a + b
Traceback (most recent call last):
File "", line 1, in
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Si te das cuenta, es lógico que esto sea así, ya que en este caso b era "2.3", pero ¿y si fuera "Hola"? ¿Cómo se podría sumar eso? No tiene sentido.
Por otro lado, podemos hacer conversiones entre tipos o cast de manera explícita haciendo uso de diferentes funciones que nos proporciona Python.
Para convertir de float a int debemos usar float()
. Pero mucho cuidado, ya que el tipo entero no puede almacena decimales, por lo que perderemos lo que haya después de la coma.
>>> a = 3.5
>>> a = int(a)
>>> print(a)
3
Podemos convertir un float a string con str()
. Podemos ver en el siguiente código como cambia el tipo de a después de hacer el cast.
>>> a = 3.5
>>> print(type(a)) #
>>> a = str(a)
>>> print(type(a)) #
Los valores booleanos representan uno de dos valores: True
o False
.
Cuando comparas dos valores, se evalúa la expresión y Python devuelve la respuesta booleana:
>>> print(10 > 9)
True
>>> print(10 == 9)
False
>>> print(10 < 9)
False
La bool()función te permite evaluar cualquier valor, y darte Trueo False a cambio.
>>> print(bool("Hello"))
True
>>> print(bool(15))
True
La mayoría de los valores son verdaderos
Lo siguiente devolverá Verdadero:
>>> bool("abc")
True
>>> bool(123)
True
>>> bool(["apple", "cherry", "banana"])
True
De hecho, no hay muchos valores que evalúen como False, excepto valores vacíos, como (), [], {}, "", el número 0y el valor None. Y, por supuesto, el valor Falsese evalúa como False.
Lo siguiente devolverá Falso:
>>> bool(False)
False
>>> bool(None)
False
>>> bool(0)
False
>>> bool("")
False
Una fecha en Python no es un tipo de dato en sí misma, pero podemos importar un módulo llamado datetimepara trabajar con fechas como objetos de fecha.
Importa el módulo datetime y muestra la fecha actual:
>>> import datetime >>> >>> x = datetime.datetime.now() >>> print(x) 2025-03-27 19:15:02.235393
La fecha contiene año, mes, día, hora, minuto, segundo y microsegundo.
A continuación se muestran algunos ejemplos; aprenderá más sobre ellos más adelante en este capítulo:
>>> import datetime
>>>
>>> x = datetime.datetime.now()
>>>
>>> print(x.year)
2025
>>> print(x.strftime("%A"))
Thursday
Para crear una fecha, podemos utilizar la clase (constructora) datetime()
del módulo datetime
.
>>> import datetime
>>>
>>> x = datetime.datetime(2020, 5, 17)
>>>
>>> print(x)
2020-05-17 00:00:00
La clase datetime()
también toma parámetros para la hora y la zona horaria (hora, minuto, segundo, microsegundo, zona horaria), pero son opcionales y tienen un valor predeterminado de 0
, (None
para la zona horaria).
Los operadores se utilizan para realizar operaciones sobre variables y valores. En el siguiente ejemplo, utilizamos el operador +
para sumar dos valores:
Python divide los operadores en los siguientes grupos:
Operador | Nombre | Ejemplo |
---|---|---|
+ | Adición | x + y |
- | Sustracción | x - y |
* | Multiplicación | x * y |
/ | División | x / y |
% | Módulo | x % y |
** | Exponenciación | x ** y |
// | División entera | x // y |
Operador | Ejemplo | Es igual a |
---|---|---|
= | x = 5 | x = 5 |
+= | x += 3 | x = x + 3 |
-= | x -= 3 | x = x - 3 |
*= | x *= 3 | x = x * 3 |
/= | x /= 3 | x = x / 3 |
%= | x %= 3 | x = x % 3 |
//= | x //= 3 | x = x // 3 |
**= | x **= 3 | x = x ** 3 |
&= | x &= 3 | x = x & 3 |
|= | x |= 3 | x = x | 3 |
^= | x ^= 3 | x = x ^ 3 |
>>= | x >>= 3 | x = x >> 3 |
<<= | x <<= 3 | x = x << 3 |
:= | print(x := 3) | x = 3 print(x) |
Operador | Nombre | Ejemplo |
---|---|---|
== | Igual | x == y |
!= | Distinto | x != y |
> | Mayor que | x > y |
< | Menor que | x < y |
>= | Mayor o igual | x >= y |
<= | Menor o igual | x <= y |
Operador | Descripción | Ejemplo |
---|---|---|
and | Devuelve Verdadero si ambas afirmaciones son verdaderas | x < 5 and x < 10 |
or | Devuelve Verdadero si una de las afirmaciones es verdadera | x < 5 or x < 4 |
not | Invierte el resultado, devuelve Falso si el resultado es verdadero | not(x < 5 and x < 10) |
Operator | Description | Example |
---|---|---|
in | Returns True if a sequence with the specified value is present in the object | x in y |
not in | Returns True if a sequence with the specified value is not present in the object | x not in y |
Operador | Descripción |
---|---|
() |
Paréntesis |
** |
Exponenciación |
+x
-x
~x
|
Unario más, unario menos y bit a bit NO |
*
/
//
%
|
Multiplicación, división, división entera, y módulo |
+
-
|
Adición y sustracción |
==
!=
>
>=
<
<=
is
is not
in
not in
|
Comparaciones, identidad, y operadores de membresía |
not |
NO Lógico |
and |
Y |
or |
Ó |