python 3

De Wikicima
(Diferencias entre revisiones)
Saltar a: navegación, buscar
(Instalar Librerías)
(Instalar Librerías)
Línea 247: Línea 247:
 
</code>
 
</code>
   
* Con pip
+
* Con pip :
 
<code>
 
<code>
 
pip3 search ''LIBRARY''
 
pip3 search ''LIBRARY''
Línea 255: Línea 255:
 
CUIDADO !!
 
CUIDADO !!
 
Debian no tiene siempre las últimas versiones, pero siempre son compatibles.
 
Debian no tiene siempre las últimas versiones, pero siempre son compatibles.
Anaconda puede tener problemas de compatibilidad entre versiones, se resuelve buscando versiones compatible especificando numero de versiones.
+
Anaconda puede tener problemas de compatibilidad entre versiones, se resuelve buscando versiones compatible especificando numero de versiones, puede convenir utilizar diferentes [[entornos_python]]
 
En general instalan las librerías necesarias al funcionamiento de lo que queremos instalar, pero a veces hay que instalarlo aparte.
 
En general instalan las librerías necesarias al funcionamiento de lo que queremos instalar, pero a veces hay que instalarlo aparte.
   

Revisión de 10:52 7 mayo 2019

Contenido

Introduction

Histórico

Python es un lenguaje de programación iniciado por Guido van Rossum. Tiene su nombre de la famosa serie tele Monty Python's Flying Circus. La serpiente marco mas la imaginación, por esta razón el lenguaje termina adoptándolo como logo.

El lenguaje python es un lenguaje interpretado muy versátil y cada vez más utilizado en actividades de ciencias de la Tierra. Existen dos versiones del lenguaje 2.x y 3.x las cuáles no son compatibles. Los cambios son menores (ej.: print 'Hola' --> print ('Hola')), pero requiere una recodificación de las scripts. En este curso vamos por lo mas moderno, python3 ya que la versión 2 no sera mas actualizada a partir de 2020.

Python es un lenguaje muy rico, porque está constituido por aportaciones de usuarixs de todo el mundo en forma de paquetes fáciles de instalaciones. Estos paquetes se tuvieron que adaptar para python 3.x y esto a retrasado su uso. Pero ahora, este proceso de migración y adaptación ya casi terminó y ya se puede usar con tranquilidad python 3.

La presentación se puede descargar desde este enlace Archivo:python-TUX.pdf

Por que elegir Python ?

  • Por el diseño del lenguaje:

su simplicidad facilita la implementación de ideas

  • Por la facilidad de uso:

es un lenguaje interpretado, no necesita ser compilado solo basta ejecutar el código

  • Por la facilidad de lectura:

para poder compartirlo con otras personas, con la comunidad científica

  • Por la alta compatibilidad:

puede funcionar con otros tipos de lenguajes de programación (C con cython, Fortran con f2py, en los cuales esta basado)

  • Por la estructura de los datos:

numerosos tipos de objetos disponibles

  • Por la grande comunidad que lo usa:

mucha información en internet, libros, librerias disponibles y actualizadas

Para empezar

A saber antes de empezar

  • Lenguaje alto nivel, no necesidad de definir todo, interpreta mucho pero CUIDADO, hay que estar atento con lo que estamos manipulamos, si dejemos python interpretar el tipo de una variable, la operaciones de esta variable van a depender de como la definó python.
  • El lenguaje reconoce minusculas y mayusculas
  • Python empieza a contar a 0, así el primer elemento de una lista es el elemento 0 !
  • los espacios a principio de linea cuentan para definir los bloques
  • se puede ("debe") comentar con :
 # para que lo resto de la linea sea considerado como comentario  
"""
Eso permite
Comentar sobre varias lineas
"""

  • Si queremos cortar una linea de codigo en varias se puede usar \ y empezando la linea siguiente a un nivel màs alto (recuerdan que los espacios a principio de linea cuentan)
  • Para imprimir en pantalla una o más variable se usa la función print(variable) se pueden imprimir en pantalla varias variables con una sola función print(variable1, variable2)
  • Cada tipo de elemento tiene sus propias caracteristicas y metodos.
  • Se puede escribir varios comandos en una sola linea gracias al simbolo  ;
  • Cuando se usa un comando como un for, ir while etc. la linea se termina por : y los comandos utilizados adentro de esta condicion se definen por más espacio a principio de linea (recuerdan que esto define los bloques), para que quede más claro esta noción de bloque siguen dos ejemplos :

i = 0
while i < 3:
    i = i+1 # bloque del while
print(i) # Después del bloque del while

out:
> 3 

i = 0
while i < 3:
   i = i+1 # bloque del while
   print(i) # Adentro del bloque del while

out:
> 1
> 2
> 3 

  • Otra noción importante, la diferencia entre función y métodos, las dos pueden retornar o no números, listas etc. pero :
    • Una función puede tener entre 0 y lo que se desea de variables / parametros en input :
    - sum(a,b) # función retornando la suma de a y b
    • Un método se aplica a un objeto, mismo si puede tener parametros en input

Lista = []      # creo una lista vacía
Lista.append(1) # agrego 1 a la Lista

Como usarlo

En un terminal

Se puede llamar a python desde la terminal

 user@cima:~$ python3 

Para después hacer las operaciones que queremos :

 >>> 1+2 
 3

Y para salir basta con un

exit()
o un 
quit() 

Trabajar en la terminal permite probar algunas lineas de codigos, funciones ... Pero para poder trabajar de manera màs eficiente podemos usar los scripts.

En script

Un script de python es un documento texto con el formato : name_script.py

Es importante empezar el documento especificando con que entorno python lo queremos leer :

 #!/usr/bin/env python3 

También se puede especificar el formato de codificación de caracteres, por ejemplo

 # -*- coding: utf-8 -*- 

Después se tienen que importar las librerias que usamos en el script (si es que usamos): import this

Y finalmente viene el código !

Se puede agregar al final del documento lo siguiente

if __name__ == "__main__": 
    Codigo a interpretar si este script es el script principal, no un script importado
    # Sirve para dar un ejemplo de uso, probar las funciones (debug)


Ayudandose de un IDE

Los IDE (Integrated Development Environment aka Entorno de desarollo integrado) son muy útiles para facilitarse el desarollo de un script, contienen en general:

  • una parte con multiples pestañas para poder navigar entre los diferentes scripts
  • un terminal para ir probando comandos
  • la posibilidad de leer todo o parte del script, visualizando los output en el terminal
  • Opciones para visualizar ciertas variables, tablas etc.

Algunos ejemplos de IDE son :

  • Spyder
  • Jupyter

En los servidores

Se puede usar en los servidores, se recomienda instalar Python y a las librerías que les interesan desde anaconda, para más detalles se recomiende ver a la pagina siguiente de la Wiki :

anaconda

Por otro lado, si quieren usar diferentes configuraciones de las versiones de librerías utilizadas con linux pueden fijarse en el articulo siguiente tratando de los entornos Python :

entornos_python

Basic Python

Tipos de variables

Existen varios tipos de variables pre-existentes en python, cada tipo de variable es una clase con su propio tipo de data, sus propios métodos, funciones y operaciones para inter-actuar entre diferentes objetos de la misma clase.

Para conocer la clase de un objeto python, se puede utilizar la función siguiente que retorna la informacion deseada : type(objeto)

Números

Python considera dos tipos de números :

  • los números enteros (int) que se pueden definir utilizando el numero directamente sin "."
  • los números flotantes (float) que se pueden definir poniendo un "." entre enteros y decimales, si el numero no tiene decimales, se puede definirlo como float agragandole un "." al final.

a = 5    # a es un entero
b = 2.   # b es un flotante
c = 4.5  # c es claramente un flotante
# Para convertir los numeros
float(a) # retorna un numero flotante valiendo a
int(c)   # retorna la parte entera de c, en este caso 4
# Operaciones entre flotante y enteros
a+b
> 7.
a-b
> 3.
a*b
> 10.
a/b
> 2.5
a//b # parte entera de la división
> 2
a%b # resto de la división
> 1
# Para facilitar la impresión en pantalla
round(4.5578945, 3) # reduce a 3 numero decimales el flotante
> 4.557


Condiciones y Boolean

Los boolean son True y False', también pueden ser referenciados respectivamente como 1 y 0.

Se puede evaluar una expresión gracias a diferentes símbolos de comparación, lo que nos retorna un boolean :

<
>
==
!=
in / not in 
is / is not

Otras funciones pueden retornar un boolean.

Se puede evaluar matrices gracias a numpy (mas detalles en otra parte), lo que nos devuelve una matrice de boolean, o un solo boolean si especificamos : .any() o .all()

A = np.array([1,2,3,4,5,6])
c = A < 3
print(c)
>[True, True, False, False, False, False]
print(c.any())
>True
print(c.all())
>False

String : Cadenas de caracteres

Containers : Listas, Tuples, Diccionarios

Loops

break

Mejorar sus scripts

try:

except:

Librerias

Instalar Librerías

  • En debian :

su root
Entrar contraseña para acceder al modo superuser
apt-get search LIBRARY
Encontrar el nombre exacto de la librería buscada
apt-get install LIBRARY_NAME

  • En anaconda :

conda search LIBRARY
conda install LIBRARY_NAME

  • Con pip :

pip3 search LIBRARY
pip3 install LIBRARY_NAME

CUIDADO !! Debian no tiene siempre las últimas versiones, pero siempre son compatibles. Anaconda puede tener problemas de compatibilidad entre versiones, se resuelve buscando versiones compatible especificando numero de versiones, puede convenir utilizar diferentes entornos_python En general instalan las librerías necesarias al funcionamiento de lo que queremos instalar, pero a veces hay que instalarlo aparte.

numpy

Numpy es la librería gestionando las matrices

pandas

Pandas es una libreria que facilita el trabajo con datos.

netcdf

NetCDF es un formato de almacenamiento de datos muy común en ciencias de la Tierra. Para más detalle ver : LINK

En python se puede trabajar directamente con los archivos netcdf, para leerlos, escribirlos, o modificarlos gracias a esta librería.

xarray

Numpy mejorado para ciencias de la tierra, integra informaciones spacio-temporales y métodos de calculo simplificado que toma en cuenta estas informaciones.

matplotlib

Es LA librería gráfica de python, indispensable para graficar. Otras librerias integran funciones de graficos (seaborn, numpy..) pero en general están baseadas en matplotlib.

cartopy

Cartopy es la libreria para trabajar con cartas. La libreria anterior es basemap, utilizada en muchos scripts, pero ya no será actualizada, entonces porque no pasarte directamente a cartopy??

tensorflow

Tensorflow es una libreria de machine learning.

Para ir más lejo

f2py

cython

Algunos tips

Ejercicios

Herramientas personales