Hola comunidad, dicen que más vale tarde que nunca, así que estamos de vuelta con el cursillo, saludando el año nuevo. Primero que nada, a sacudirse el polvo, refrescar la memoria, y ponerte al dia leyendo todo lo anterior… No es fácil entrar en calor luego de tanto tiempo inactivo, pero seguiremos desde donde lo dejamos la última vez, con los módulos… y las diferentes formas de llamarlos y usarlos…veamos que tenemos
import random x = random.randint(1, 10)
Pero importamos todo un módulo solo para usar una funcón?? Pensando en el módulo como un batallón, y en cada una de sus funciones como un soldado, para que llamar todo un batallón si solo necesitamos un soldado?? Tenemos varias formas de invocar solamente a quien querramos utilizar, y es más simple de lo que crees, a no ser que creas que es:
from random import randint
porque entonces estás en lo cierto.. :).. Nuevamente, puro inglés, vaya, (que debería ser Curso de Inglés para GUTL), esto significa:
desde random importar randint
y de ahi en adelante, tenemos el soldado listo para la acción sin tener que llamar a su batallón.. Usamos randint(a,b)
, y nos quitamos todo eso de random.randint(a,b)
.
Quizá más adelante, cuando estemos más avanzados, podríamos incluso ‘personalizar’ aún más nuestro código… Digamos que queremos poner esto de randint
, pero no queramos escribir randint
, porque no nos gusta la palabra o simplemente porque no se nos pega, que hacemos entonces?? No hay que preocuparse, estamos programando en un lenguage tan flexible, que incluso te permite, de cierta forma, reasignar los nombres de los módulos/funciones.
Imagina que pudieras escribir alea
en lugar de randint
…. Aquí tambien tenemos varias opciones, considéralas, y luego dime, cuál crees que sería la mejor?
#importamos el módulo import random #le damos a "alea" el valor de la función dentro del módulo alea = random.input #utilizamos "alea" como si fuese random.randint() numero = alea(0, 10)
En esta de arriba, llamamos a todo el batallón, lo tenemos ahi disponible, pero sacamos al soldado randint, y lo tenemos más a mano aún..
#importamos la función, solo el soldado!! from random import randint #le damos a "alea" el valor de la función dentro del módulo alea = random.input #utilizamos "alea" como si fuese random.randint() numero = alea(0, 10)
En esta de arriba, llamamos solamente al soldado randint
dentro del batallón random
esto significa que no podremos utilizar ninguna otra función del módulo random, ya que no lo importamos, no está disponible.
Si lo que buscas es escribir menos líneas, te presento as
en español como
, que te va a ayudar a ahorrar código 🙂
#importamos la función con nuestro nuevo amigo from random import randint as alea #utilizamos "alea" como si fuese random.randint() numero = alea(0, 10)
Solo una línea de código…minimalismo…Pero tampoco podremos utilizar ninguna otra función del módulo…. Asi que cuidado!
Como siempre, si conoces otra vía, o alguna sugerencia… ahi tienes los comentarios para compartir…
Hola disculpen el OT:
Hace tiempo quiero saber como pasarle un fichero como parámetro a una app escrita en Python, me explico: Sabemos que si escribimos en una caja lanzadora de aplicaciones o desde el terminal algo así:
gedit /home/user/texto.txt se ejecuta el «gedit» y en él se muestra el contenido del fichero.
Eso en C/C++ se puede lograr a través de la función main que incluye dos parametros, el primero es la cantidad de parametros y el segundo es un arreglo con los parámetros solo es necesario utilizar dichas variables y el comportamiento antes descrito se implementa.
Ejemplo:
int main(int argc, char *argv[]){
if (argc == 2)
cout << argv[1] << endl;
...
}
¿Cómo hacer esto con una aplicación escrita en Python?
Saludos
Puede ser el caso de que quieras pasarle más de un parámetro a X comando? Pones el ejemplo de gedit, pero digamos que sea X o Y app? Es ese tu caso?
Si es afirmativo, pues ensambla tu comando completo en una variable, más o menos así:
my_cmd = ' '.join([
my_program, #por ejemplo, aquí puede ir chromium, o gedit
'param_1', # aki un parametro, ex: --incognito, o el path del fichero...
'param_2', #otro parámetro, ex: --proxy-server=my_proxy:8080
'param_N', #etc etc
])
Y luego puedes hacer con my_cmd lo que desees, lo que sería algo como:
subprocess.Popen(
cmd,
shell=True, #o False, en dependencia del comando a ejecutar
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
close_fds=True,
universal_newlines=True
)
Es este tu caso? Saludos.
El módulo sys brinda esa funcionalidad, devolviendo una lista con los argumentos, prueba así:
import sys
print sys.argv
Python también tiene incluido el módulo argparse, con el cual es muy fácil trabajar con opciones y argumentos desde la linea de comandos y esta muy bien explicado en la documentación.
Saludos.
Gracias @Ozkar y @Cesar por la explicación, ya probé sus soluciones y las dos me sirven para lo que deseo hacer.
Saludos
quedo muy bueno eso men
Gracias por el comentario
Vaya… resucitando la seccion de programacion Python dentro de GUTL. Hace un tiempo me dio por retomar las pocas cosas de Python que habia aprendido autodidacticamente en la UCI y descubri un sitio en internet que te enseñan a «codear» su nombre es CodeAcademy pero lamentablemnte parece ser que mi ancho de banda es muy limitado como para poder trabajar comodamente en él. Ojalá a alguien se le ocurra poner dentro del dominio cubano un sitio de este tipo que no solo abarca Python sino otros tambien usados como CSS3, HTML5 etc etc
Eso tenia pensado hacer yo también, pero la bella Cubava lleva buen tiempo «abriendo» el registro… 🙁
Las clases de Python volvieron, aunque no se contar mucho en números romanos 😀 😀
Hola me he interesado por las clases de Python que ofreces la última que he revisado es la que sacaste en enero (la numero IX) me gustaría saber si hay más ediciones y como las encuentro. Gracias por tu labor.
todas las ediciones existentes están en este sitio. No se si continuarán, pero gracias por el comentario
Saludos amigos, me acabo de autenticar y me interesa este tema pero el problema es que me encanta la programación y me consiguieron un disco live de devian y trae python, pero yo no se ni papas de esto y estoy ancioso por aprender además de querer migrar completamente a software libre, que me sujieren es que todos me gustan. Saludos
Saludos Astralmaster, si quieres migrar, este es el mejor lugar para conocer del software libre, como eres principiante, te aconsejo Ubuntu, si te gusta la programación, pues aquí estamos, con el curso de Python…
Me encanat este curso, espero que hagan uno igual sobre django y nginx. Agradecido
descubrí hace poco este curso, creo que algo atrasado pero bueno, siempre es tiempo de aprender algo nuevo… necesito saber donde puedo poner lo que voy haciendo para que me den ideas y me corrijan…. seria bueno algo de ayuda…. salu2
En el foro de la comunidad, gutl.jovenclub.cu/foro puedes preguntar todas tus dudas sin problema alguno
okokokok, muchas gracias…
Necesito saber en qué sitio cubano puedo bajar el instalador de Python.
Lamentablemente no conozco de ninguno. Si encuentras, por favor, déjalo en los comentarios