Programació

La guia definitiva per a principiants de Python

30 d'octubre de 2021

Taula de continguts

  • Configuració de l'entorn
    • Configuració de l'entorn local
    • Com obtenir Python
    • Com instal·lar Python
    • Instal·lació de Windows
    • Instal·lació Unix/Linux
    • Instal·lació MAC
    • Configuració de Path per a Python
    • Configuració del camí per a Unix/Linux
    • Configuració del camí per a Windows
  • Variables d'entorn de Python
    • Córrer Python
  • Sintaxi bàsica
    • Identificadors Python
    • Declaració de Python
    • Sagnies en Python
    • Comentaris en Python
    • Obtenció d'entrada
    • Mostra la sortida
  • Tipus de variables
    • Assignació de valors a les variables
    • Tipus de dades de Python
    • Cordes
    • Tuples
    • Llistes
    • Nombres
  • Operadors bàsics
    • Operador d'assignació
    • Operador bit a bit
    • Operador lògic
    • Operador aritmètic
    • Operador de comparació
    • Operador d'identitat
    • Operador de membres
  • Presa de decisions
    • Si declaració
    • si una altra cosa
    • Niu si
    • Si-elif-una altra escala
    • Declaració taquigràfica si
    • Declaració taquigràfica if-else
  • Bucles
    • Bucle While
    • For Loop
    • Bucles imbricats
    • Declaracions de control de bucle
    • Continuar declaració
    • Declaració de trencament
    • Passa la declaració
  • Nombres
    • Conversió de tipus de nombre
    • Funcions de nombre aleatori
    • Funcions trigonomètriques
    • Funcions matemàtiques
  • Cordes
    • Creació d'una cadena
    • Operadors especials de cadena
    • Operadors de format de cadena
    • Personatges d'escapament
    • Mètodes de cordes integrats
  • Tuples
    • Accés als valors en tuples
    • Actualització de tuples
    • Operadors bàsics de tuple
    • Funcions de tupla integrades
    • Indexació i tall
    • Esborrant una tupla
  • Llistes
    • Accés als valors de les llistes
    • Actualització de les llistes
    • Operadors de llista bàsics
    • Funcions i mètodes de llista integrats
    • Indexació i tall
    • Suprimeix l'element Llistes
  • Diccionari
    • Creació d'un diccionari
    • Afegir elements en un diccionari
    • Eliminació d'elements del diccionari
    • Mètodes de diccionari Python
  • Data i hora
    • Temps Tuple
    • Mòdul de temps
    • Mòdul Calendari
  • Funcions
    • Com definir una funció
    • Crida a una funció
    • Passar per referència
    • Passar per valor
    • Arguments de funció
    • Arguments de longitud variable
    • Arguments necessaris
    • Arguments per defecte
    • Arguments de paraules clau
    • Funcions anònimes
  • Mòduls
    • Declaració d'importació
    • La declaració d'importació
    • La declaració d'import *
    • Localització de mòduls
    • Les funcions locals() i globals().
    • Espais de noms i abast
    • La funció dir( ).
    • La funció reload().
  • Fitxers I/O
    • Obrint un fitxer
    • Atributs de l'objecte del fitxer
    • Tancant un fitxer
    • Amb Declaració
    • El mètode Write
    • El mètode de lectura
    • El mètode rename().
    • El mètode remove().
    • Posició del fitxer
  • Excepcions
    • Què és una excepció?
    • Gestionar una excepció
    • Plantejant una excepció
    • Llista d'excepcions estàndard
    • Excepcions definides per l'usuari
    • Afirmacions en Python
  • Classes i Objectes
    • Creació de classes
    • Objectes de classe
    • Atributs d'accés
    • Atributs de classe incorporats
    • Recollida d'escombraries
    • Herència de classe
    • Mètodes de substitució
    • Expressions regulars
    • Funció de coincidència
    • Funció de cerca
    • Modificadors d'expressió regular
    • Patrons d'expressió regular
    • Classes de personatges
    • Casos de repetició
    • Àncores
  • Programació CGI
    • Navegació web
    • Capçalera HTTP
    • Variables d'entorn CGI
    • Mètode GET
    • Mètode POST
    • Ús de galetes en CGI
    • Com funciona?
  • Accés a la base de dades MySQL
    • Creació de la taula de bases de dades
    • Operació INSERT
    • Operació LLEGIR
    • Operació d'actualització
    • Operació DELETE
    • Realització de Transaccions
    • Operació COMMIT
    • Operació ROLLBACK
    • Desconnexió de la base de dades
    • Maneig d'errors
  • Xarxes
  • Enviament de correu electrònic
  • Programació multifils
  • Processament XML
    • Què és XML?
    • Arquitectures d'analitzador XML i API
    • Anàlisi XML amb API SAX
      • El mètode make_parser
      • El mètode parse
      • El mètode parseString
  • Programació GUI
    • Ginys de Tkinter
  • Gestió de la Geometria
  • Articles recomanats

Xarxes

Python ofereix dos nivells d'accés als serveis de xarxa. Al nivell baix, podeu accedir al suport bàsic de socket del sistema operatiu, que us permet implementar servidors i clients per a protocols orientats a connexió i sense connexió.

Python té biblioteques que proporcionen accés de nivell superior a protocols de xarxa a nivell d'aplicació com FTP, HTTP, etc.

Què són els endolls?

Els endolls són els punts finals d'un canal de comunicació. Pot comunicar-se dins d'un procés, entre processos o entre operacions en diferents continents.

Els sòcols es poden implementar en diversos tipus de canals diferents: UDP, TCP, etc. El endoll La biblioteca ofereix una classe específica per gestionar els transports estàndard, així com una interfície genèrica per controlar la resta.

S.No Terme Descripció
1 tipusLa comunicació entre els dos punts finals SOCK_DGRAM per a protocols sense connexió i SOCK_STREAM per a protocols orientats a connexió.
2 DominiEls protocols que s'utilitzen com a mecanisme de transport. Aquests valors són constants, com ara AF_INET, PF_INET, PF_UNIX, PF_X25, etc.
3 portEl servidor escolta els clients que criden a un o més ports. Un port pot ser un número de port Fixnum, una cadena que conté un número de port.
4hostnameUna cadena pot ser un nom d'amfitrió, an IPV6 adreça en els dos punts o una adreça de quatre punts Una cadena , que especifica una adreça INADDR_BROADCAST. Una cadena de longitud zero, que especifica INADDR_ANYUn nombre enter que s'interpreta com una adreça binària en l'ordre dels bytes de l'amfitrió.
5 protocolNormalment zero, es pot utilitzar per identificar una variant d'un protocol dins d'un domini i tipus.

El endoll Mòdul

Heu d'utilitzar el socket.socket() per crear un sòcol.

s = socket.socket (socket_family, socket_type, protocol=0)

S.No Mètode Descripció
1 escoltar()Configura i inicia un oient TCP.
2 s.bind()Uneix l'adreça (nom d'amfitrió, parell de números de port) al sòcol.
3 s.connect()Inicia activament la connexió al servidor TCP.
4 s.accept()Accepta de manera passiva connexions de client TCP, esperant fins que arribi la connexió (bloqueig).
5s.recv()Reb Missatge TCP 6 s.close() Tanca el sòcol 7 s.sendto()Transmet UDP missatge 8 s.recvfrom()Reb missatge UDP 9 socket.gethostname()Retorna el nom de l'amfitrió.
10 s.envia ()Transmet missatges TCP

Mòduls d'Internet Python

S.No Protocol Funció comuna Port núm Mòdul Python
1 gòferTransferències de documents70gopherlib, urllib
2 FTPTransferències de fitxers20ftplib, urlli
3 POP3S'està recuperant el correu electrònic110poplib
4 TelnetLínies d'ordres23telnetlib
5 IMAP4S'està recuperant el correu electrònic143imaplib
6 HTTPPàgines web80httplib, urllib, xmlrpclib
7 NNTPNotícies d'Usenet119nntplib
8 SMTPEnviament de correu electrònic25smtplib

Enviament de correu electrònic

SMTP (Simple Mail Transfer Protocol) és un protocol que gestiona l'enviament de correu electrònic i correu electrònic entre servidors de correu.

Python ofereix el mòdul smtplib, que defineix un objecte de sessió de client SMTP que s'utilitza per enviar correu a la màquina d'Internet amb un dimoni d'escolta ESMTP o SMTP.

SINTAXI

|_+_|

Alguns detalls dels paràmetres −

  • host - És l'amfitrió que executa el vostre servidor SMTP. Podeu especificar l'adreça IP del nom de domini o d'un amfitrió.
  • port − Si oferiu un argument d'amfitrió, haureu d'especificar un port, on el servidor SMTP escolta.
  • local_hostname − Si el servidor SMTP s'està executant a la màquina local, podeu especificar només el localhost com a opció.

L'objecte SMTP té un mètode d'instància conegut com sendmail, que s'utilitza per fer la feina d'enviar un missatge. Té tres paràmetres −

  • El remitent − La cadena amb l'adreça del remitent.
  • Els receptors − La llista de cadenes, una per a cada destinatari.
  • El missatge − El missatge com a cadena formatada com s'especifica als diferents RFC.

Enviament d'un correu electrònic HTML amb Python

Quan envieu un missatge de text utilitzant Python, el contingut es tracta com un text senzill. Si incloeu etiquetes HTML en un missatge de text, es mostra com a etiquetes HTML simples i el text no es formata segons la sintaxi HTML. Python us ofereix l'opció d'enviar un missatge HTML com a missatge HTML real.

Mentre envieu el missatge de correu electrònic, podeu especificar una versió de Mime, un tipus de contingut i un conjunt de caràcters per enviar un correu electrònic HTML.

Enviament de fitxers adjunts com a correu electrònic

Si voleu enviar un correu electrònic amb el contingut mixt, haureu d'establir la capçalera del tipus de contingut com a multipart/mixt. Les seccions de text i fitxers adjunts es poden especificar dins dels límits.

S'inicia un límit dins de dos guions seguits del número únic, que no pot aparèixer a la part del missatge d'un correu electrònic. Una vora final que indica l'última secció del correu electrònic també hauria d'acabar amb dos guions. Els fitxers adjunts es codifiquen amb la funció pack(m) per tenir una codificació base64 abans de la transmissió.

Programació multifils

Executar diversos fils és similar a executar diferents programes.

  • Diversos fils en un procés comparteixen el mateix espai de dades amb un fil principal i comparteix informació entre ells més ràpidament que si fossin processos separats.
  • Els fils de vegades es coneixen com a processos lleugers i no requereixen molta memòria. Són més barats que els mètodes.

Un fil consta d'un començament, una seqüència d'execució i una conclusió. Té un punter d'instruccions que fa un seguiment d'on s'està executant el context.

  • Es pot interrompre.
  • Es pot posar temporalment en espera mentre s'estan executant altres fils; això s'anomena cediment.

Començant un fil nou

Per generar un fil diferent, heu de cridar al mètode següent que està disponible al mòdul de fil −

thread.start_new_thread ( funció, args[, kwargs] )

Aquest mètode permet una manera ràpida i eficient de crear nous fils tant a Windows com a Linux. Torna immediatament i el fil fill comença i crida la funció amb la llista d'arguments passat. Quan la funció torna, el fil s'acaba.

Aquí, l'argument és una tupla d'arguments que utilitzen una tupla buida per cridar la funció sense passar els arguments.

El mòdul Threading

El nou mòdul de fils de Python 2.4 proporciona un suport més potent i d'alt nivell per a fils que el mòdul de fils de la secció anterior.

El mòdul de threads exposa els mètodes del mòdul de threads i proporciona algunes tècniques addicionals

    threading.activeCount()− Retorna diversos objectes threads que estan actius.threading.currentThread()− Retorna diversos objectes de fils al control de fils de la persona que truca.threading.enumerate()− Retorna la llista dels objectes threads que estan actius actualment.correr()− És el punt d'entrada d'un fil.començar()− Inicia un fil cridant el mètode run.uneix-te ([hora])− Espera que finalitzin els fils.està viu()− Comprova si un fil encara s'està executant.getName()− Retorna el nom d'un fil.setName()− Estableix el nom d'un fil.

Sincronització de fils

Un mòdul de fils proporcionat amb Python inclou un mecanisme de bloqueig que us ajuda a sincronitzar els fils. Es crea un nou bloqueig trucant a bloqueig () mètode i retorna el nou bloqueig.

El bloqueig El mètode de l'objecte de bloqueig s'utilitza per forçar l'execució dels fils. El bloqueig El paràmetre us permet controlar el fil que espera per adquirir el bloqueig.

Si el bloqueig s'estableix a 0, el fil torna immediatament amb un valor 0 si no es pot adquirir un bloqueig i amb un 1 si el bloqueig s'ha adquirit.

El alliberament () El mètode del bloqueig s'utilitza per alliberar el bloqueig quan ja no és necessari.

Cua de prioritats multifils

El mòdul Cua us ajuda a crear un objecte de cua nou que contingui un nombre específic d'elements. Aquests són els mètodes següents per controlar la cua −

    aconseguir()− Elimina i torna l'element de la cua.posar()− Afegeix l'element a la cua.qsize()− Retorna diversos elements que es troben actualment a la cua.buit()− Retorna True si la cua està buida. Fals en cas contrari.ple ()− Retorna True si la cua està plena; en cas contrari, fals.