Desc

Intentando codificar el mundo.

Proyecto blogger. Un post a la semana (la que se pueda).

Mostrando entradas con la etiqueta Tutorial. Mostrar todas las entradas
Mostrando entradas con la etiqueta Tutorial. Mostrar todas las entradas

domingo, 29 de noviembre de 2015

[Python] Python Interactivo

En esta parte del tutorial de programación en Python, hablaremos sobre el interprete interactivo de Python.

El código Python puede ser ejecutado de dos maneras básicas. Como script o desde un interprete interactivo.

#!/usr/bin/python

# first.py


print "The Python tutorial"

Este es un ejemplo de un pequeño script en Python. Se lanza desde un terminal UNIX.

$ ./first.py
The Python tutorial

Interprete interactivo


Otra manera de ejecutar código Python es el interprete interprete interactivo de Python. El interprete Python es bastante util para nuestras pruebas. Cuando queremos probar rápidamente alguna funcionalidad básica del lenguaje Python y no queremos escribir un script completo. Para abrir el interprete interactivo, tendremos que ejecutar el comando de Python en nuestro intérprete de comandos favorito.

$ python
Python 2.7.2+ (default, Jul 20 2012, 22:12:53)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 

Este es el mensaje de bienvenida al interprete Python. Vemos la versión de nuestra máquina. En este caso es Python 2.7.2. Los simbolos mostrados (>>>) es el prompt del interprete dePython en modo interactivo. Para salir del interprete y volver al intérprete de comandos, podemos escribir Ctrl+D o quit(). Escribir Ctrl+L limpiará la pantalla del interprete.

Ahora podremos consultar información util.

>>> credits     Thanks to CWI, CNRI, BeOpen.com, Zope Corporation and a cast of thousands     for supporting Python development. See www.python.org for more information.

Si escribimos credits obtenemos información sobre las organizaciones implicadas en el desarrollo de Python.

>>> copyright
Copyright (c) 2001-2011 Python Software Foundation.
All Rights Reserved.

Copyright (c) 2000 BeOpen.com.
All Rights Reserved.

Copyright (c) 1995-2001 Corporation for National Research Initiatives.
All Rights Reserved.

Copyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.
All Rights Reserved.

El comando copyright devuelve el copyright del lenguaje de programación Python.

El comando license() ofrece una serie de páginas referidas a la licencia de Python.

Obteniendo ayuda


El comando help ofrece algo de ayuda sobre Python.

>>> help
Type help() for interactive help, or help(object) for help about object.
>>> 

Podemos usar el comando de dos formas. Podemos obtener ayuda tanto sobre un objeto específico como entrar en el modo interactivo de la ayuda.

Por ejemplo, si escribimos help(True), obtendremos información sobre objetos de tipo bool.

Help on bool object:

class bool(int)
 |  bool(x) -> bool
 |
 |  Returns True when the argument x is true, False otherwise.
 |  The builtins True and False are the only two instances of the class bool.
 |  The class bool is a subclass of the class int, and cannot be subclassed.
 |
 |  Method resolution order:
 |      bool
 |      int
 |      object
 |
 |  Methods defined here:
 |
 |  __and__(...)
 |      x.__and__(y) <==> x&y

 ...

Si el texto es demasiado largo para la página, podemos hacer scroll sobre el intreprete usando las feclas. Si quieres salir de la ayuda, presiona la letra q.
Si escribimos help() obtenemos el modo interactivo de ayuda del interprete.

>>> help()

Welcome to Python 2.7!  This is the online help utility.

If this is your first time using Python, you should definitely check out
the tutorial on the Internet at http://docs.python.org/tutorial/.

Enter the name of any module, keyword, or topic to get help on writing
Python programs and using Python modules.  To quit this help utility and
return to the interpreter, just type "quit".

To get a list of available modules, keywords, or topics, type "modules",
"keywords", or "topics".  Each module also comes with a one-line summary
of what it does; to list the modules whose summaries contain a given word
such as "spam", type "modules spam".

help> 

Para salir del modo de ayuda y volver a la intérprete, utilizamos el comando quit.
El comando keywords proporciona una lista con palabras clave disponibles en el lenguaje de programación Python.

help> keywords

Here is a list of the Python keywords.  Enter any keyword to get more help.

and                 elif                if                  print
as                  else                import              raise
assert              except              in                  return
break               exec                is                  try
class               finally             lambda              while
continue            for                 not                 with
def                 from                or                  yield
del                 global              pass

Si tecleamos cualquiera de las palabras clave, tenemos algo de ayuda sobre estas.

El comando modules proporciona una lista de módulos disponibles. Una vez más, al escribir un nombre de módulo se proporcionará ayuda adicional.

Por último, tenemos el comando topics.

help> topics

Here is a list of available topics.  Enter any topic name to get more help.

ASSERTION           DEBUGGING           LITERALS            SEQUENCEMETHODS2
ASSIGNMENT          DELETION            LOOPING             SEQUENCES
ATTRIBUTEMETHODS    DICTIONARIES        MAPPINGMETHODS      SHIFTING
ATTRIBUTES          DICTIONARYLITERALS  MAPPINGS            SLICINGS
AUGMENTEDASSIGNMENT DYNAMICFEATURES     METHODS             SPECIALATTRIBUTES
BACKQUOTES          ELLIPSIS            MODULES             SPECIALIDENTIFIERS
BASICMETHODS        EXCEPTIONS          NAMESPACES          SPECIALMETHODS
BINARY              EXECUTION           NONE                STRINGMETHODS
BITWISE             EXPRESSIONS         NUMBERMETHODS       STRINGS
BOOLEAN             FILES               NUMBERS             SUBSCRIPTS
CALLABLEMETHODS     FLOAT               OBJECTS             TRACEBACKS
CALLS               FORMATTING          OPERATORS           TRUTHVALUE
CLASSES             FRAMEOBJECTS        PACKAGES            TUPLELITERALS
CODEOBJECTS         FRAMES              POWER               TUPLES
COERCIONS           FUNCTIONS           PRECEDENCE          TYPEOBJECTS
COMPARISON          IDENTIFIERS         PRINTING            TYPES
COMPLEX             IMPORTING           PRIVATENAMES        UNARY
CONDITIONAL         INTEGER             RETURNING           UNICODE
CONTEXTMANAGERS     LISTLITERALS        SCOPING
CONVERSIONS         LISTS               SEQUENCEMETHODS1

El comando topics proporciona una lista de temas relacionados con el lenguaje de programación Python. Aquí podemos encontrar alguna información útil.

Código Python


Ahora vamos a ver los puntos positivos reales de la intérprete de Python.
El intérprete de Python se puede utilizar como una calculadora. Cada expresión se ejecuta de inmediato y el resultado se muestra en la pantalla.

>>> a = 3
>>> b = 4
>>> a**b
81
>>> a == b
False
>>> a < b
True
>>>

Podemos definir variables y realizar operaciones en ellas.

>>> import random
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST',
'SystemRandom', 'TWOPI', 'WichmannHill', '_BuiltinMethodType', '_MethodType',
'__all__', '__builtins__', '__doc__', '__file__', '__name__', '_acos',
'_ceil', '_cos', '_e', '_exp', '_hexlify', '_inst', '_log', '_pi', '_random',
'_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn',
'betavariate', 'choice', 'expovariate', 'gammavariate', 'gauss',
'getrandbits', 'getstate', 'jumpahead', 'lognormvariate', 'normalvariate',
'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed',
'setstate', 'shuffle', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>>

Aquí hemos importado un módulo de azar. Con la función dir(), exploramos lo que hay en el modulo aleatorio.

Con la ayuda de la cadena especial __doc__, podemos obtener ayuda sobre una función específica.

>>> print random.seed.__doc__
Initialize internal state from hashable object.

        None or no argument seeds from current time or from an operating
        system specific randomness source if available.

        If a is not None or an int or long, hash(a) is used instead.
>>> 

El comando locals() muestra nuestro espacio de nombres local actual.

>>> locals()
{'__builtins__': , '__name__': '__main__',
'random': , '__doc__': None}

Podemos ver el módulo al azar que hemos importado anteriormente.

>>> class Car:
...   pass
...
>>> def function():
...   pass
...
>>> for i in range(5):
...   print i
...
0
1
2
3
4
>>> 

Podemos definir nuestras propias clases, funciones o utilizar las estructuras de control de flujo. No hay que olvidar tabular el código. Para finalizar cada uno de estos bloques de código, tecleamos Enter dos veces.

>>> import os
>>> os.getcwd()
'/home/vronskij/programming/python'
>>> os.system('ls')
empty.pyc       fibonacci.pyc  ifyouwantme~  monica     old        perl.pl
ruby.rb         stopiter.py    tests         works

Aquí importamos el módulo os para interactuar con el sistema operativo.

Por último, queremos salir del intérprete. Podemos salir del intérprete de varias maneras:

  • Ctrl+D
  • quit()

También podemos salir del intérprete programáticamente.

>>> raise SystemExit
$
o
>>> import sys
>>> sys.exit()
$

Nos salimos del interprete

El Zen de Python


El Zen de Python es un conjunto de reglas de cómo escribir buen código Python. Refleja de alguna manera la filosofía del lenguaje.

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

*en español sería algo asi

El Zen de Python, por Tim Peters

Elegante 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.
Disperso es mejor que denso.
La legibilidad cuenta.
Los casos especiales no son lo suficientemente especiales como para romper las reglas.
Aunque practicidad roza la pureza.
Los errores nunca deberían pasar inadvertidos.
A menos que se silencien explícitamente.
Ante la ambigüedad, rechaza la tentación de adivinar.
Debe haber una --y preferiblemente de una sola-- manera obvia de hacerlo.
Aunque esa manera puede no ser obvia en un primer momento a menos que seas holandés.
Ahora es mejor que nunca.
Aunque nunca suele ser mejor que *justo* ahora.
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 espacios de nombres son una grandisima idea - vamos a hacer más de esos!

Las reglas se pueden leer mediante el lanzamiento de import this.
En este capítulo hemos visto intérprete interactivo de Python.

Original en ZetCode

viernes, 13 de noviembre de 2015

[Python] El lenguaje Python

En esta parte del tutorial de programación en Python, trataremos acerca del lenguaje de programación Python en general.

Objetivo

El objetivo de este tutorial es introducirte en el lenguaje de programación Python. Python es un gran lenguaje a aprender. Es un lenguaje ideal para aquellos que son nuevos programando. Después de leer este manual, serás capaz de continuar con tus propios estudios. Puedes crear scripts, sitios web, juegos o aplicaciones de escritorio en Python. Incluso si no quieres convertirte en programador, Python puede ser una gran herramienta para programadores ocasionales o como hobby.

Python

Python es un lenguaje de programación de propósito general, dinámico y orientado a objetos. EL propósito de diseño del lenguaje Python enfatiza la productividad y la legibilidad del código. Python fue diseñado inicialmente por Guido van Rossum. Fue publicado en 1991. Python esta inspirado en los lenguajes de programación ABC, Haskell, Java, Lisp, Icon y Perl. Python es un lenguaje de alto nivel, de propósito general, multiplataforma e interpretado. Es un lenguaje minimalista. Una de sus características mas visibles es que carece tanto de corchetes como de puntos y coma. Python usa la indentación en su lugar.

Actualmente ha dos lineas de Python. Python 2.x y Python 3.x. Python 3.x rompe la retrocompatibilidad con las versiones anteriores de Python. Fue creado para corregir unos errores de diseño del lenguaje y hacer un lenguaje más limpio. La versión más reciente de Python 2.x es la 2.7.3, mientras que de 3.x es 3.3.0. Este tutorial cubre las versiones 2.x. La mayoría del código es escrito en Python 2.x. Tomará algún tiempo que el software base y los programadores migren a Python 3.x. Hoy día, Python esta mantenido por una amplia comunidad de voluntarios a nivel mundial. Python es software de código abierto.

Python soporta diversos estilo de programación diversos. No fuerza a ningún programador a un paradigma especifico. Soporta tanto programación orientada a objetos como estructurada. También tiene un soporte limitado para programación funcional.

El sitio web oficial del lenguaje Python es python.org

Implementaciones

Formalmente el lenguaje de programación Python es una especificación. CPython, IronPython y Jython. CPython está implementado en lenguaje C. Es la implementación mas ampliamente extendida de Python.Cuando se habla del lenguaje Python, normalmente se refiere a CPython. IronPython está implementado en C#. Es parte del framework .NET. De forma similar, Jythones una implementación de Python en Java. El programa Jyton es traducido a bytecode de Java y ejecutado por la máquina virtual de Java (JVM). En este tutorial, trabajaremos con CPython.

Popularidad

Python es uno de los lenguajes de programación más pupulares. Tanto el sitio langpop.com como tiobe sitúan a Python en la lista top ten de lenguajes. Algunos proyectos de Python muy populares incluyen la herramienta de código fuente distribuido Mercury, un framework web en Django, una GUI a partir de la biblioteca PyQt o la utilidad de gestión de paquetes Yum.

Python scripts

Cada script en UNIX comienza comienza con un shebang. El shebang son los dos primeros caracteres del script: #!. El shebang va seguido de la ruta del interprete, el cual ejecutará nuestro script.


#!/usr/bin/python
print "The Python tutorial"

Este es nuestro primer script en Python. El script imprimirá la cadena "The Python tutorial" en el terminal de consola. Los script de Python tiene la extensión py.


$ which python
/usr/bin/python

Podemos localizar la ruta del interprete Python usando el comando which.
Los sript Python pueden ejecutarse de dos formas.


$ python first.py
The Python tutorial

El script Python es pasado como argumento al intérprete.


$ chmod +x first.py $ ./first.py
The Python tutorial

O la forma común. usa el comando chmod para hacer al fichero ejecutable. Y lánzalo.


El siguiente ejemplo es un script en Ruby.


#!/usr/bin/ruby
fruits = ["orange", "apple", "pear", "kiwi"] 
fruits.each {|fruits| puts fruits}

Nótese el shebang y la ruta de Ruby


$ ./ruby.rb
orange
apple
pear
kiwi

Esta es la salida del script Ruby
Por último, un pequeño script en Perl.


#!/usr/bin/perl 
$perl = "Practical Extraction and Report Language\n";
print $perl;

Ahora el concepto debería estar claro.

En este capitulo, hemos introducido el lenguaje Python.


Original en Zetcode.