-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpython.html
More file actions
111 lines (101 loc) · 8.7 KB
/
Copy pathpython.html
File metadata and controls
111 lines (101 loc) · 8.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<!DOCTYPE html>
<html lang="es">
<head>
<!--Título navegador y buscador-->
<title>Python</title>
<!--Descripción de la página buscadores-->
<meta name="description" content="Python">
<!--Autor-->
<meta name="author" content="Carlos Beltrá">
<!--Favicon de la página-->
<link rel="icon" href="nolotengo.ico" type="image/x-icon">
<!--Codificación-->
<meta charset="UTF-8">
<!--Para poder ver la web en los diferentes dispositivos-->
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--Color para la barra de búsqueda de algunos móviles-->
<meta name="theme-color" content="#345e2f">
<link rel="stylesheet" href="css/style.css" media="screen">
</head>
<body>
<header><a href="index.html"><h1>Inicio</h1></a></header>
<main>
<h1>Python</h1>
<section>
<h2><ul><strong>Funciones</strong></h2>
<li><strong>def</strong>--> def nombre_función(parámetro): * Si vamos a dar un parámetro por defecto siempre el último</li>
<li><strong>print en función</strong>--> print(f"Hola {nombre}!")</li>
<li><strong>parámetro definido vacío</strong>--> edad = "" cuando entramos en la función podemos poner condicional de if edad==True: persona['edad'] = edad y añadimos al diccionario la clave valor edad</li>
<li><strong>parámetro * antes</strong>--> Se usa cuando no sabemos cuantos parámetros dentro de la tupla que crea python para ello, pueden meter cualquier cantidad de parámetros.</li>
<li><strong>parámetro ** antes</strong>--> Se usa para crear clave valor (diccionario), sin saber cuantos necesitaremos</li>
<li><strong>Recursividad</strong>--> Fibonnaci ej: def recursividad(num): if num==1 return num else: retur recursividad (num-1)</li>
<li><strong>Memoización explicita</strong>--> Almacena los resultados de una función para usarlo más veces, con dict ej: fibonacci_cache = {} def fib(indice): if indice in fibonacci_cache: return(fibonacci_cache[indice]) if indice <=1: valor = indice else: valor = fib(indice-1) + fib(indice-2) fibonacci_cache[indice] = valor return(valor)</li>
<li><strong>Memoización implícita</strong>--> Ya creado biblio para esto ej: from functools import lru_cache @lru_cache(maxsize = 20) def fib_cache(indice): if indice <=1: return indice else: return fib(indice-1) + fib(indice-2)</li>
<li><strong>Funciones lambda</strong>--> Para funciones muy simples, cortas Ej: area=lambda base,altura:(base*altura/2) donde area es nombre función, base y altura parámetros a meter, los : el return y por último ecuación</li>
<li><strong>Funciones lambda</strong>--> No puede contener ni condicionales ni bucles, para hacer cálculos, formateos de texto, filtros</li>
<li><strong>Funciones decoradoras</strong>--> Se componen de 3 funciones, función A recibé como parámetro función B y devuelve función C</li>
<li><strong>Funciones lambda</strong>--> </li>
</ul>
</section>
<section>
<details>
<summary><strong>Manipulación archivos</strong></summary>
<ul>
<li><strong>Leer archivo</strong>--> with open('archio.txt') as archivo.objeto: contenido = archivo_objeto.read() --> Guarda la lectura del arvhico en contenido</li>
<li><strong>Leer archivo por línea</strong>--> for linea in archivo_objeto: print(linea)</li>
<li><strong>Escribir en arvhico</strong>--> filename = 'programa.txt' with oepn('filename, "w") as archivo_objeto: archivo_objeto.write("Estoy aprendiendo python")</li>
<li><strong>Modos open</strong></li>
<details>
<summary><strong>Modos open</strong></summary>
<ul>
<il><strong>Modo r</strong>--> Modo lectura, si ponemos r+ el puntero se coloca al principio del archivo</il>
<il><strong>Modo w</strong>--> Modo escritura y sobreescribe si había algo, si ponemos w+ el archivo se sobreescribe
<il><strong>Modo a</strong>--> Modo escritura y anexa al final, si ponemos a+ el puntero se coloca al final del archivo</il>
<il><strong>Modo x</strong>--> Modo crear archivo y escribe dentro, falla si ya existe el archivo</il>
<il><strong>Modo b</strong>--> Modo binario. se utiliza con rb para lectura binaria y wb para escritura binaria</il>
<li><strong>Modo t</strong>--> Modo texto predeterminado, se utiliza junto a rt o wt para leer o escribir en texto</li>
</ul>
</details>
<li>Modo abreviado<strong>f = open(nombre_archivo, 'w+') f.write(contendio en forma de string)</strong></li>
<li><strong>Con librería numpy lectura</strong>--> data = np.genfromtxt('datos.csv', delimiter=',',) se puede trabajar de muchas forma los datos</li>
<li><strong>Numpy escritura</strong>--> np.savetxt('datos.csv', data, delimiter=',')</li>
<li><strong>Archivo json</strong>import json with open(filename, 'w') as f_obj: json.dump(numeros, f_obj) para leer json.load(f_obj)</li>
</ul>
</section>
<section>
<details>
<summary><strong>Manipulación excepciones --> Errores</strong></summary>
<ul>
<li><strong>try: except nombre_excepción</strong>--> Para definir mensajes en errores, al final podemos usar else para que si no hay error nos saque el resultado. Si usamos el except nombre_excepción pass, es un except silencioso no crashea el código y sigue</li>
<li><strong>Saber que errores reportar</strong>--> Los input de usuario, existencias de un archivo, disponibilidad de conexión red</li>
</ul>
</details>
</section>
<section>
<details>
<summary><strong>Objetos y clases</strong></summary>
<ul>
<li><strong>Definir clase</strong>--> class Fruta: def __init__(self): self.nombre = 'manzana' self.color= 'roja'</li>
<li><strong>La aplicamos a variable e imprimos atributos</strong>--> mi_fruta = Fruta() print= mi_fruta.nombre print = mi_fruta.color</li>
<li><strong>Reasignamos valores</strong>--> mi_fruta.nombre = 'pera' mi_fruta.color = 'verde'</li>
<li><strong>Asignar atributos como en funciones</strong>--> class Fruta: def __init__(self, nombre, color): self.nombre = nombre self.color=color Cuando le pongamos variable damos el nombre y color</li>
<li><strong>Métodos</strong>--> def details(self): print('mi ' + self.nombre) --> Sería un método la llamaríamos como manzana = Fruta('manzana', 'roja') manzana.details()</li>
<li><strong>Errores</strong>--> No usar self para un atributo. las otras funciones dentro de la clase no la verían</li>
<li><strong>Método __init__</strong>--> Inicia los atributos sin hacer llamada de él. Tiene el nombre reservado</li>
</ul>
</details>
<section>
<details>
<summary><strong>Subclases</strong></summary>
<ul>
<li><strong>Definimos como</strong>--> class CocheElectrico(Coche):</li>
<li><strong>Conectar con su superclase</strong>--> super().__init__(marca, modelo, anio) --> Nos importa métodos y atributos de la superclase</li>
<li><strong>Sobreescribir métodos/atributos</strong>--> Podemos declarar nuevos métodos en la subclase(mismo nombre) para sobreescribir los de la superclase</li>
<li><strong>Instancia como atributo</strong>--> Como atributo declaramos self.bateria = Bateria() (Esto es otra clase) y para llamarla, mi_coche.bateria.describir_bateria() </li>
<li><strong>Miembros privados</strong>--> self.__variable_privada --> La hace privada y no se puede consultar. Pero si se puede acceder como variable._NombreClase__variable_privada. Se usa como encapsulado, no se puede acceder desde una subclase.</li>
<li><strong>Métodos privados</strong>--> def __método_privado --> variable._Clase__método_privado</li>
<li><strong>Importación clases</strong>--> from archivo.py import Clase</li>
</ul>
</details>
</section>
</section>