Quiero aprender Python en secreto y luego sorprender a todos (día 4)

Inserte la descripción de la imagen aquí

El título no pretende ofender, pero creo que este anuncio es divertido
. Si te gusta, toma el mapa mental anterior. No puedo aprender mucho de todos modos.

Prefacio

Revisión preliminar: quiero aprender Python en secreto y luego aturdir a todos (el tercer día). El
artículo anterior escribió algunos conocimientos básicos de Python, principalmente las operaciones de lectura y escritura de Python en archivos, tal vez porque la cantidad de palabras es relativamente pequeña, cada vez Me sentí un poco avergonzado de abrirlo yo mismo.
Pero también se debe a que la lectura y escritura de archivos es un poco más difícil que los dos artículos anteriores.

¡Así que hoy, echemos un vistazo a las cosas que hacen de Python una "revista", módulos! Si no es muy competente en lo básico, puede solidificar sus cimientos, después de todo, construir en el suelo es muy peligroso.

本系列文默认各位有一定的C或C++基础,因为我是学了点C++的皮毛之后入手的Python,这里也要感谢齐锋学长送来的支持。
本系列文默认各位会百度,学习‘模块’这个模块的话,还是建议大家有自己的编辑器和编译器的,上一篇已经给大家做了推荐啦?

我要的不多,点个关注就好啦
然后呢,本系列的目录嘛,说实话我个人比较倾向于那两本 Primer Plus,所以就跟着它们的目录结构吧。

本系列也会着重培养各位的自主动手能力,毕竟我不可能把所有知识点都给你讲到,所以自己解决需求的能力就尤为重要,所以我在文中埋得坑请不要把它们看成坑,那是我留给你们的锻炼机会,请各显神通,自行解决。

Bien, vayamos al grano.


¿Qué es un módulo?

Si ha aprendido otros lenguajes de alto nivel, sabrá que al principio de un archivo fuente de C / C ++, generalmente habrá una gran cantidad de "incluir". Este es un archivo de encabezado de referencia. Hay algunas clases y funciones en un archivo de encabezado. , Variables, etc., y desea utilizar estas cosas, debe hacer una declaración por adelantado.

De esta manera, realmente se queda sin espacio.
Inserte la descripción de la imagen aquí

Suponga que hay un grupo QQ con miembros, archivos y registros de chat. Si desea obtener estas cosas y usarlas, ¿tiene que unirse al grupo?
Esta es la razón por la que se descartan los módulos. Hay clases, funciones y variables en un módulo. Si desea utilizar estas cosas, debe importar el módulo.

Es mucho más suave de esta manera.

emmm, siempre siento que falta algo. Sí, escaneemos un módulo y solo echemos un vistazo. No quiero entender, probablemente sepa lo que hay dentro.

Lo siguiente es una intercepción en un módulo aleatorio:

from warnings import warn as _warn
from types import MethodType as _MethodType, BuiltinMethodType as _BuiltinMethodType
from math import log as _log, exp as _exp, pi as _pi, e as _e, ceil as _ceil
from math import sqrt as _sqrt, acos as _acos, cos as _cos, sin as _sin
from os import urandom as _urandom
from _collections_abc import Set as _Set, Sequence as _Sequence
from hashlib import sha512 as _sha512
import _random

__all__ = ["Random","seed","random","uniform","randint","choice","sample",
           "randrange","shuffle","normalvariate","lognormvariate",
           "expovariate","vonmisesvariate","gammavariate","triangular",
           "gauss","betavariate","paretovariate","weibullvariate",
           "getstate","setstate", "getrandbits",
           "SystemRandom"]

NV_MAGICCONST = 4 * _exp(-0.5)/_sqrt(2.0)
TWOPI = 2.0*_pi
LOG4 = _log(4.0)
SG_MAGICCONST = 1.0 + _log(4.5)
BPF = 53        # Number of bits in a float
RECIP_BPF = 2**-BPF

class Random(_random.Random):
    VERSION = 3     # used by getstate/setstate

    def __init__(self, x=None):
        self.seed(x)
        self.gauss_next = None

    def seed(self, a=None, version=2):
        if a is None:
            try:
                # Seed with enough bytes to span the 19937 bit
                # state space for the Mersenne Twister
                a = int.from_bytes(_urandom(2500), 'big')
            except NotImplementedError:
                import time
                a = int(time.time() * 256) # use fractional seconds

        if version == 2:
            if isinstance(a, (str, bytes, bytearray)):
                if isinstance(a, str):
                    a = a.encode()
                a += _sha512(a).digest()
                a = int.from_bytes(a, 'big')

        super().seed(a)
        self.gauss_next = None
……

Como puede ver, al principio, ajustó un montón de paquetes (importar ..., no importa si no lo entiende ahora), y luego algunas variables, y luego una clase, que tiene funciones.
De acuerdo, tal vez solo un vistazo, continuemos


Las declaraciones de asignación son necesarias para definir variables, las declaraciones def son necesarias para encapsular funciones, las declaraciones de clase son necesarias para encapsular clases, pero no se necesitan declaraciones para encapsular módulos.

La razón por la que no se usa ninguna declaración es que cada archivo de código Python individual (archivo con la extensión .py) es un módulo separado.

Esto no es difícil de comprender.

El propósito de encapsular el módulo también es almacenar el código del programa y los datos para su reutilización. Si está encapsulado en clases y funciones, es principalmente conveniente llamarlo nosotros mismos, pero el módulo está encapsulado, no solo podemos usarlo nosotros mismos, sino que el formato de archivo también es fácil de compartir con otros.


Únase a mí para importar sus propios módulos

Cómo debería decirlo, otras personas tienen miles de módulos, pero es más fácil usar mis propios módulos al aprender, porque inevitablemente escribiré módulos en el futuro.

Paso 1: crea un módulo nuevo

Inserte la descripción de la imagen aquí

Cree un nuevo módulo de acuerdo con la secuencia de la figura y luego escriba el código.

Paso 2: llamar al módulo

Inserte la descripción de la imagen aquí

Bueno, esta es una pequeña castaña muy simple.

Llame a diferentes métodos del módulo.

Al igual que en el artículo anterior, hay dos formas de abrir un archivo, una es abrirlo directamente y la otra es usar un alias.También hay diferentes formas de llamar al módulo.

El primer tipo de importación directa ya se ha visto, pero puedo decir un poco más aquí. Si el nombre del módulo es demasiado largo, puede usar un alias.
Por ejemplo import test, si cree que la prueba es un poco larga, no es conveniente usarla más tarde. Puede hacer esto: import test as t
pero solo puede usarlo más tarde. t se usa para referirse a ese módulo, pero la prueba ya no se puede usar, se ha empaquetado en la parte superior.

El segundo método, llamado desde ... importar ...
¿cuál es este método, o el ejemplo anterior? Ahora quiero usar la clase test3 en la prueba, no quiero los demás, entonces ¿por qué debería importar todo lo demás? ¿No es demasiado grande? En este momento, puede utilizar este método para un posicionamiento preciso.

Mire la imagen:
esta es una forma típica de escritura incorrecta: ahora que se ha posicionado correctamente, no se enrede con la gran piscina antes
Inserte la descripción de la imagen aquí

Aquí hay una prueba si solo se importa una parte determinada, y las partes restantes que no se han importado se importarán a la parte de la aplicación que no entrará en conflicto:
Inserte la descripción de la imagen aquí

Este es el resultado de la verificación:
Inserte la descripción de la imagen aquí

Este es el uso de alias, que aún se pueden usar:
Inserte la descripción de la imagen aquí


Un punto más aquí, ¿y si desea importar varios módulos? También es posible. Usa comas para separar los diferentes módulos. Sube y pruébalo tú mismo.


if __name__ == '__main__'

Para Python y muchos otros lenguajes de programación, un programa debe tener un punto de entrada.

En Python, cuando estamos ejecutando un determinado archivo py, podemos iniciar el programa; este archivo py es el punto de entrada del programa.

Sin embargo, cuando tenemos muchos archivos py para formar un programa:
Inserte la descripción de la imagen aquí

Para [especificar] un determinado archivo py es el punto de entrada del programa, podemos escribir dicho código en el archivo py:

# 【文件:xx.py】

代码块 ①……

if __name__ == '__main__':
    代码块 ②……

El significado de esta oración es este:
Inserte la descripción de la imagen aquí

Aquí [if name == ' main '] es equivalente a la entrada del programa de simulación de Python. Python en sí no estipula tal escritura, es un hábito de codificación que los programadores llegan a un consenso.


módulo csv para manipular gráficos de Excel

En primer lugar, debemos saber claramente que se está utilizando el módulo de otra persona. En segundo lugar, solo sabemos que la función que queremos lograr es la simple operación de tablas de Excel.

Entonces nuestro orden debería ser:
¿Qué módulo utilizo?
¿Cuáles son las funciones de este módulo?
¿Cómo utilizar estas funciones específicas?
Está bien, lo usaré.

¿Qué módulo necesito?

Esto es realmente fácil de manejar, pero también muy difícil de manejar.
Si es fácil de manejar, pregúntele a Du Niang:
Inserte la descripción de la imagen aquí
, puede encontrar todo en una búsqueda.
No es fácil de decir, no puedes encontrar mucha experiencia previa, tienes que preguntar.

Por ejemplo, hoy usamos el módulo csv porque es fácil de usar.

¿Qué hay en este módulo?

Entonces este problema es fácil de manejar. Si sientes que tu inglés está bien, o si quieres ejercitar tu inglés, puedes ir al sitio web oficial, porque el sitio web oficial está actualizado a la última versión.
La versión de traducción al chino, a veces no es muy eficaz para encontrar la última versión.

Oye, es broma, la versión china también tiene el
manual de Python (versión oficial en chino)

OK, encontramos el módulo csv (con un cuadro de búsqueda): CSV

Si estás interesado, puedes leerlo en chino e inglés, si tienes prisa, mira su código de muestra.

Utilice el módulo csv

Primero construimos una tabla:
Inserte la descripción de la imagen aquí

Luego abra esta tabla, al igual que abrir un archivo. Si no está familiarizado con las operaciones de archivo, puede volver a esta revisión:
Quiero aprender Python en secreto (3)

leer

import csv

with open('test.csv', newline = '', encoding = 'GBK')  as f:
    #参数encoding = 'utf-8'防止出现乱码
    reader = csv.reader(f)
    #使用csv的reader()方法,创建一个reader对象
    for row in reader:
        print(row)

Inserte la descripción de la imagen aquí

escribir

Primero cree una instancia con una variable llamada escritor (u otros nombres). El método de creación es escritor = csv.writer (x), y luego puede usar escritor.writerow (lista) para escribir el contenido de una lista de líneas en el archivo csv.
Inserte la descripción de la imagen aquí

import csv

with open('test.csv','a', newline='',encoding='utf-8') as f:
    writer  = csv.writer(f)
    writer.writerow(['6', '小黑', '65', '82', '86'])
    writer.writerow(['7', '小红', '78', '64', '31'])

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

En este punto, hemos aprendido los métodos de entrada y lectura de tablas csv más básicos.


Tarea de hoy:
intentemos fusionar varios archivos csv en un solo archivo csv. No es difícil de decir, y no es tan intuitivo decirlo de forma simple.

Pondré mi código en el próximo artículo.

Luego, en promedio, actualizo una serie de "Aprende Python en secreto" tres o cuatro días en promedio, así que no te preocupes, todo saldrá según lo planeado.

El siguiente artículo es un artículo práctico, te llevaré a revisar el contenido de aprendizaje estos días desde el principio, habrá más práctica.


Dibujé un círculo, bienvenidos a todos a nuestro pequeño círculo.

He creado un grupo de Python Q&A, los amigos que estén interesados ​​pueden averiguar: ¿Qué tipo de grupo es este?

Portal a través del grupo: Portal

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/qq_43762191/article/details/109195441
Recomendado
Clasificación