Python

Conociendo

Andrés Chávez Ulfe

¿Por qué Python?

P: ¿Qué problema intenta resolver?

R: La productividad del programador

Mi observación en ese momento era que las computadoras se volvían más rápidas y baratas a un ritmo increíble (...) [Pero] el costo de los programadores para programarlas se mantenía bajo. (Guido van Rossum, 2008)

Python es:

Extenso

Python se puede utilizar en diferentes campos, como:

 

Desarrollo Web

Administración de Sistemas

Desarrollo de Videojuegos

Modelamiento 3D

Testing

Análisis de información

Legibible

Basta con echar un vistazo

from package import attribute_method

def saludo(name=None):
    if name is not None:
        print "Hola Ica! soy " + name
    else:
        print "Hola Ica!"

saludo("Andres")

Fácil de aprender

  • Su sintaxis es muy sencilla y parecida al Inglés
  • No utiliza estructuras o símbolos extraños
  • Existen muchos recursos en internet
  • Cuenta con una comunidad muy grande

Gratis

Python es de código abierto y libre.

 

Esto significa que usted puede obtener el código fuente cambiarlo como sea necesario
y redistribuirlo.

 

La gente puede encontrar errores y corregirlos más rápido.

Multipropósito

Puedes usar Python en:

  • Aplicaciones web
  • Aplicaciones de escritorio
  • Aplicaciones móbiles
  • Sistemas embebidos
  • Electrónica
  • Robótica
  • etc

Multiplataforma

Python es soportado actualmente en:

  • GNU/Linux
  • MS Windows
  • Mac OSX
  • Android
  • iOS
  • Solaris
  • etc

Interpretado

Compilación ...

Fácil de mantener

como la filosofía!

El Zen de Python

(Tim Peters, 2004)

Python 2.7.10 (default, Aug 22 2015, 20:33:39) 
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.1)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

>>> import this

Fácil de mantener

como la filosofía!

Hermoso es mejor que feo.
Explícito es mejor que implícito.
Simple es mejor que complejo.
Complejo es mejor que complicado.
Plano es mejor que anidado.
Escaso es mejor que denso.
La legibilidad cuenta.
Los casos especiales no son lo suficientemente especiales como para romper las reglas.
Lo práctico supera a la pureza.
Los errores nunca deben pasar en silencio.
A menos que sean silenciados.
Ante la ambigüedad, rechaza la tentación de adivinar.
Debería haber una - y preferiblemente sólo una - manera obvia de hacerlo.
Aunque esa manera puede no ser obvia al principio a menos que seas holandés.
Ahora es mejor que nunca.
Aunque "nunca" es a menudo mejor que "ahora mismo".
Si la aplicación es difícil de explicar, es una mala idea.
Si la aplicación es fácil de explicar, puede ser una buena idea.
Los Namespaces son una gran idea ¡hay a hacer más de esos!

PEP 0008 - Guía de estilo para el código de Python

Muchas librerías

¿Quién usa Python?

¿y tú?

Conociendo el código

Hola mundo

print 'Hola mundo'

Variables

# Comentarios
var_number = 10
var_decimal = 3.14
var_text = 'Hola mundo'
var_bool = True

Funciones

def suma(a, b):
    return a + b

Clases

class Vehiculo(object):
    pos_x = 0
    pos_y = 0
    
    def mover(self, x, y):
        self.pos_x += x
        self.pos_y += y
        return self.pos_x, self.pos_y

carro = Vehiculo()
carro.mover(10, -5)
carro.mover(0, 5)
carro.mover(-10, 0)

Tipado Dinámico

>>> a = 'Hola mundo'
>>> type(a)
<type 'str'>
>>> a = 123
>>> type(a)
<type 'int'>
>>> b = '456'
>>> type(b)
<type 'str'>
>>> a + b
TypeError: unsupported operand type(s) for +: 'int' and 'str'

Ordenamiento simple

a, b = 'uno', 'dos'
b, a = a, b

Cadenas de texto

>>> 'texto' + 'con' + 'texto'
'textocontexto'

>>> """texto
       de multiples
       lineas"""
'texto\n       de multiples\n       lineas'

Formato de cadenas

>>> u'Suma: %d %s %f %s %.2f' % (1, '+', 1.5, '=', 1+1)
u'Suma: 1 + 1.500000 = 2.00'

Listas y Tuplas

>>> [1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]

>>> lista = []
>>> lista.append('a')
>>> lista += [1]
lista
['a', 1]
>>> lista[0]
'a'

>>> 1 in lista
True

>>> lista.pop(1)
1

>>> 1 in lista
False
>>> (1,2,3) + (4,5,6)
(1, 2, 3, 4, 5, 6)

>>> tupla = ('a',)
>>> tupla.append(1)
AttributeError: 'tuple' object
has no attribute 'append'
>>> tupla += (1,)
>>> tupla
('a', 1)

>>> tupla = ('a', 1)
>>> tupla[0]
'a'

>>> 1 in tupla
True

>>> list(tupla)
['a', 1]

Diccionarios

>>> dict = {}
>>> color_dict = {'azul': '#0000FF', 'naranja': '#FFA500'}
>>> fruit_dict = {'manzana': 'apple', 'naranja': 'orange'}

>>> color_dict['azul']
'#0000FF'

>>> color_dict['naranja'] == fruit_dict['naranja']
False

>>> color_dict.keys()
['azul', 'naranja']
>>> color_dict.values()
['#0000FF', '#FFA500']
>>> color_dict.items()
[('azul', '#0000FF'), ('naranja', '#FFA500')]

Módulos

# funciones.py

def suma(a, b):
    return a + b

def resta(a, b):
    return a - b

def multiplicacion(a, b):
    return a * b

def division(a, b):
    return a / b
import funciones
funciones.suma(3, 4)

from funciones import suma
suma(3, 4)

from funciones import suma as mas
mas(3, 4)

from funciones import suma, resta
resta(4, 3)

from funciones import (suma,
    division, multiplicacion)
import module

Python Web

Frameworks Python

Gracias

Dudas o consultas:

Slides:

Conociendo Python

By Andrés Chávez U.

Conociendo Python

  • 1,117