¡Esta es una revisión vieja del documento!
for i in range(0,10)
range(0,10,3) [0, 3, 6, 9]
cadena[:] # toda la cadena cadena[:-1] # toda la cadena menos el último carácter cadena[3:] # toda la cadena a partir del 3er carácter cadena[::-1] # cadena invertida
for i in xrange(0,10): print i
b = False i = 0 while not b: print "hello" if (i >= 4): break i = i + 1
for <var temp> in <agrupacion elementos>:def <nombre> (<parámetros>)def suma (a, b): return a + b print suma(2,3) # 5
def suma (a = 2, b = 4): return a + b
Y llamarla de formas distintas:
print suma() # 6 print suma(4) # 8 print suma(b=1) # 3
def testArgLists_1(*args): print args[0] print len(args) print 'args:', args
Que llamandola así: testArgLists_1('aaa', 'bbb'), nos mostrará…
aaa
2
args: ('aaa', 'bbb')
def testArgLists_1(**kwargs): print 'kwargs:', args
Que llamandola así:
testArgLists_1(arg1='ccc', arg2='ddd')
Mostraría:
kwargs: {'arg1': 'ccc', 'arg2': 'ddd'}
Ahora podemos tratar kwargs como si fuese un diccionario, es más, lo es!
a = Hacer # Vuelca Hacer sobre a a() # Llama a Hacer
def DobleX (): return x * 2 ... x = 3 print DobleX() # 6
Si no queremos que esto ocurra deberíamos declarar x dentro de la función.
class <nombre>:def __init__ (self)
class cPrueba: def __init__ (self): print "constructor" def method (self): print "metodo" def params (self, num): print num
c = cPrueba () # constructor c.method() # metodo c.params(33) # 33
class cPrueba: def __init__(self, parA = 'Hola'): ....
class cPrueba: def __init__ (self, parA): MyPar = parA
class cPrueba2 (cPrueba): ...
__str__. Si en una clase definimos este método, cuando dicha clase se use como string devolverá lo que retorne dicho método:class cClase: ... def __str__ (self): return "hola" ... obj = cClase() print obj # hola
__doc__), para redefinir este no tenemos que reescribir nada, únicamente debemos, después del nombre de clase, insertar un string, este será su documentación:class cHi: "Clase de prueba" nombre = "" x = cHi() x.nombre = "Pepe" print x.nombre # Pepe print x.__doc__ # Clase de prueba
__cmp__, que reciba los parámetros self y otro elemento. Si es mayor debe devolver un int >0, si es menor <0, si son iguales los dos objetos debe devolver un 0.__repr__, que se usa para mostrar una representación en string del objeto (p.ej. cuando no se use en un print y sólo se ponga su nombre).def __setattr__(self, name, value): def __getattr__(self, name): def __delattr__(self, name):
Mediante esta función enviandole una variable, se nos indicará el tipo del cual es dicha variable:
a = "afdsah" print type(a) # type: str
Para comparar tipos deberemos importar el módulo types y comparar…
import types a = "askfdj" print type(a) == types.ModuleType # Falso, no es un módulo print type(a) == types.StringType # Verdadero, a es un string print type(types) == types.ModuleType # Verdadero, types es modulo
También lo podemos hacer con objetos clases pero con el atributo __class__
class Field: pass f = Field () print f.__class__ == Field # True
Una función lambda es una función sencilla de una sola línea. Estas funciones son virtuales y no tienen un nombre con el que llamarlas. Se crean, se ejecutan y desaparecen, pero puedes guardarlas en una variable y llamarlas desde ella.
lambda <parametro1, parametro2…> : <línea de código devuelta>>>> a = lambda x,y : x*y >>> a(3,4) 12
También podemos llamar a una función lambda sin almacenarla en una variable:
>>> (lambda x: x*2)(3) 6
i and b → Si i es verdadero devolverá b, si no devolverá i.i or b → Si i es verdadero devolverá i, si no devolverá b. Ejemplo:
i = 5 b = 7 print i and b # 7 print b and i # 5 print i or b # 5 print b or i # 7
if a: print a else: print b
Podría sustituirse por:
print a or b
Desde una función podemos acceder a una variable global, fuera de dicha función, pero no escribirla. Para ello, poder escribirla, debemos acceder a esa variable desde la función habiendo indicado antes que es la global, así: global <variable>
NAME = "Manzana" def show_global(): name = NAME print '(show_global) nombre: %s' % name def set_global(): global NAME NAME = 'Naranja' name = NAME print '(set_global) nombre: %s' % name show_global() set_global() show_global()
Esto imprimiría:
(show_global) nombre: Manzana (set_global) nombre: Naranja (show_global) nombre: Naranja
Pero:
NAME = "Manzana" def show_global(): name = NAME print '(show_global) nombre: %s' % name def set_global(): NAME = 'Naranja' name = NAME print '(set_global) nombre: %s' % name show_global() set_global() show_global()
Imprimiría:
(show_global) nombre: Manzana (set_global) nombre: Naranja (show_global) nombre: Manzana
__main__.dir(math) ← Muestra los elementos del módulo mathdir() ← Muestra los elementos del módulo actualMétodo main, un archivo de código .py puede ser llamado como módulo o como ejecutable, para controlar si la forma de llamada ha sido por como ejecutable:
if __name__ == "__main__": < código inicial >
open (varString), donde varString es el string correspondiente al fichero.var = open ("c:\\prueba.txt") for file in var.readlines(): print file, var.close()
print file,”, hace que no se muestren con retorno de carro después de cada línea, por qué???? Porque la coma se pone para que no haga el salto de línea tras escribir dicha líneaprint "Hola", print " caracola" # Hola caracola
var = open ("c:\\prueba.txt") var2 = open ("c:\\prueba2.txt", "w") for file in var.readlines(): var2.write(file) var.close() var2.close()
file.read()file.read(varInt), cuando usas este método una especie de cursor se queda donde acabó de leer.
El módulo __builtin__ es el módulo que se carga inicialmente y por defecto en python. Aún así, si queremos hacer referencia, en concreto a ese haremos:
import __builtin__ __builtin__.<xxxx>
#!/usr/bin/python<>.__doc__ y accederás a la documentación de ese método\propiedad: print string.split.__doc__
for i in range (0, len(lista)): print "Elemento " + str(i) + ": " + str(lista[i])
None equivale a NULL.def Func (a): def func (a): return a * 3 return func(a) print Func("Aa")
>>> class A: def Func(self): print "ahfs" >>> A().Func() ahfs
print sys.stdin.readline()
sum(range(0,10))mktmp() del módulo tempfile devuelve una cadena con la dirección de un nombre de fichero que podría usarse como fichero temporal (que no tenga el nombre de otro).print """ Hola Caracola!! Qué haces aquí... tan sola????"""
sys.stdout = PrintRedirect('tmp.log')
PrintRedirect es una clase que guarda el string pasado por el constructor internamente. Cuando se llama a print también se llama al método write de PrintRedirect (def write(self, msg): …) que escribe en el fichero que se llama como el string.str = r"c:\windows\nvidia"
id(objeto)import copy ... p2 = copy.copy(p1)
vars(nombreClase)obj.__class__
>>> print \ "manolo" manolo
Register Extensions, es decir, ser la oficial del sistema.CPython, es la implementación por defecto del lenguaje y está escrita en C, además de este existen otros dos desarrollos importantes, el de Java (Jython) y el de .NET (IronPython).pythonw.exe en vez de desde el python.exe. O cambiando su extensión de .py a .pyw.