Cum se utilizează declarația „Pass” în Python

Când scrieți un program, rareori scrieți tot codul dintr-o singură mișcare și rulați codul doar la sfârșit. În schimb, este cel mai probabil să scrieți ceva cod, să rulați programul, să scrieți mai mult și să repetați până când ați terminat.

În mod eficient, îți vei împărți și cuceri programul concentrându-te pe unele părți esențiale și omițând altele, apoi revenind pentru a completa spațiile libere. Pentru a face acest lucru eficient în Python, trebuie să utilizați declarația de trecere, subiectul acestui articol.

Ce este declarația „Pass”?

Spre deosebire de majoritatea cuvintelor cheie care îi spun interpretului să facă ceva, declarația de trecere este unică, deoarece îi spune interpretului să nu facă nimic. Este folosit în interiorul blocurilor.

Blocurile din Python sunt linii de cod indentate sub funcții, clase sau instrucțiuni de flux de control. Instrucțiunile fluxului de control sunt instrucțiuni care modifică execuția normală de sus în jos a unui program fie sărind peste cod folosind condiționale, fie repetând execuția codului folosind bucle. Cuvintele cheie comune ale fluxului de control în Python sunt dacă, pentru și în timp ce.

Nevoia de declarație „Pass”.

Am explicat mai devreme că declarația de trecere este o declarație care nu face nimic. Dar de ce am avea nevoie de o declarație care nu face nimic atunci când construim un program care face ceva? În această secțiune, voi explica cazurile de utilizare pentru declarația de trecere.

#1. Substituent pentru implementarea viitoare

După cum sa menționat în introducere, atunci când codificați, este util să divizați și să cuceriți atunci când scrieți programul. De exemplu, atunci când scrieți o funcție, este posibil să doriți să creați un antet al funcției și să reveniți pentru a scrie corpul funcției mai târziu.

  Gemini AI de la Google este aici, dar este mai bine decât ChatGPT?

Dar interpretul Python va țipa la tine dacă încerci să rulezi codul. Acest lucru se datorează faptului că Python se așteaptă ca corpul unei funcții sau al oricărui bloc de cod să conțină cel puțin o instrucțiune. Iată un exemplu de funcție pe care o am într-un fișier Python:

def my_function():
    # Will write the code later
    # For now there are no statements

Acum, dacă încerc să execut codul, voi primi o eroare de sintaxă care spune ceva de genul:

File "<ipython-input-1-58189b01193e>", line 3
    # For now there are no statements
                                     ^
SyntaxError: incomplete input

Strategia noastră de împărțire și cuceri nu va funcționa dacă scriem totul în prealabil, dar Python are nevoie de noi să scriem măcar ceva. Declarația de trecere ajută în acest sens. Din punct de vedere tehnic, este o declarație, așa că dacă ați inclus-o într-un bloc, Python nu ar țipa la tine. Și totuși nu face nimic, așa că nu trebuie să vă faceți griji cu privire la logica funcției. Iată funcția anterioară cu instrucțiunea pass.

def my_function():
    # Will write the code later
    # For now we only have the pass statement
    pass

Acum, dacă rulăm codul, nu primim erori.

De asemenea, puteți apela funcția pentru a confirma că nu face nimic.

În esență, acesta este principalul caz de utilizare al instrucțiunii pass în Python – ca substituent pentru blocurile de cod goale. Nu trebuie să fie doar funcții, ci funcționează cu condiționale, bucle și clase.

#2. Implementarea claselor și interfețelor abstracte

Instrucțiunea pass poate fi folosită și pentru a implementa o clasă abstractă. O clasă abstractă este o clasă care implementează metode abstracte, iar o metodă abstractă este o metodă care este definită, dar nu implementată. Acest lucru este similar cu cazul de utilizare definit mai sus, în care am folosit instrucțiunea pass ca substituent. Cu toate acestea, spre deosebire de cazul anterior, în care declarația de trecere a fost doar temporară, în acest caz, este permanentă.

  Cele mai bune imprimante 3D din 2024

Clasele abstracte sunt clase de bază care definesc metodele pe care superclasele moștenite de la ele ar trebui să le implementeze. Clasele abstracte nu implementează nicio logică; ele definesc metodele care alcătuiesc clasele moştenite de la acestea. Ca rezultat, nu instanțiați direct o clasă de bază.

Utilizați decoratorul @abstractmethod și clasa ABC definită în pachetul abc pentru a crea clase abstracte în Python. Dacă nu sunteți familiarizat cu sau ați uitat de decoratori, iată un articol despre decoratori în Python.

După cum spuneam, pachetul abc definește decoratorul @abstractmethod și clasa ABC, pe care le vom folosi după cum urmează:

from abc import (abstractmethod, ABC)

class BasicClass(ABC):

    @abstractmethod
    def basic_method(self):
        # Basic method is a method that any superclass of BasicClass should implement
        # So we simply define it here and not implement it
        # So in the body we use the pass statement so its valid code
        pass

BasicClass moștenește din clasa ABC. În plus, avem decoratorul @abstracmethod definit în jurul basic_method. Acum, puteți moșteni din această clasă și puteți implementa basic_method.

class DerivedClass(BasicClass):
    def basic_method(self):
        print("Hello from the defined basic method")

Puteți apoi să instanțiați această clasă și să testați rulați basic_method.

my_object = DerivedClass()

my_object.basic_method()

Când rulați acest lucru, ar trebui să puteți primi mesajul scris pe ecran.

Hello from the defined basic method

#3. A nu face nimic cu excepțiile prinse

Când programul întâmpină o eroare în Python, ridică o excepție. Excepțiile sunt perturbatoare, deoarece provoacă blocarea programului și oprirea execuției. Cu toate acestea, puteți detecta și gestiona excepțiile pentru a preveni prăbușirea programului. Puteți utiliza instrucțiunea pass dacă nu doriți să faceți nimic în special pentru a gestiona eroarea. Iată un exemplu:

try:
    # code that will definitely raise an exception
    raise Exception('Some exception')
except:
    pass

Dacă rulați codul de mai sus, nu se întâmplă nimic. Acest lucru se datorează faptului că excepția este ridicată și gestionată de codul din blocul except. Dar acest cod nu face nimic, așa că nu se întâmplă nimic. În mod normal, cu excepții, ați dori să le înregistrați sau să le gestionați cu grație. Dar dacă nu vrei să faci nimic, așa ai face.

  Elon Musk dezvăluie Grok AI, dar ce este Grok și cât costă?

Cum diferă declarația de trecere de Break and Continue?

Alte cuvinte cheie pe care le puteți întâlni sunt pauză și continuare. Pe scurt, vă voi explica ce fac, astfel încât să puteți vedea cum diferă de declarația de trecere.

Break Statement

Declarația break este folosită pentru a ieși dintr-o buclă. Orice altă iterație ulterioară a buclei este apoi anulată. De exemplu, să presupunem că ați scris o funcție de căutare liniară. Când elementul este găsit, nu există niciun motiv pentru a continua iterația până la sfârșitul listei. Ar avea sens să ieși din buclă. Deci ați folosi instrucțiunea break. Iată un exemplu de funcție de căutare liniară:

def linear_search(values, search_value):
    for i in range(len(values)):
        if values[i] == search_value
            print("Value found at index", i)
            break

Continuare Declarație

Instrucțiunea continue este folosită pentru a sări peste iterația curentă în buclă. Dacă repeți peste o listă de numere, atunci când programul tău întâlnește o instrucțiune continue, va opri iterația curentă și va trece la următoarea iterație. Bucla continuă să ruleze. Următorul este un exemplu de funcție care utilizează instrucțiunea continue. Programul dublează toate numerele impare, așa că o listă conține doar numere pare.

def make_even(nums):
    for i in range(len(nums)):
        if nums[i] % 2 == 0:
            # If the num is already even we jump to the next iteration using continue
            continue
        
        # Only odd numbers will get to this point
        # We double the number so it becomes even
        nums[i] *= 2

Să sperăm că, prin înțelegerea declarațiilor break and continue, ați reușit să le diferențiați de declarația de trecere.

Cele mai bune practici pentru utilizarea declarației de trecere

✅ Amintiți-vă că declarația de trecere este folosită de obicei ca substituent temporar; nu uitați să înlocuiți declarația de trecere cu codul real când este gata.

✅ Dacă utilizați declarația de trecere pentru orice altceva decât ca substituent temporar, includeți un comentariu care explică de ce există.

Cuvinte finale

În acest articol, am explicat declarația pass în Python, un cuvânt cheie util care vă permite să divizați și să cuceriți atunci când scrieți cod. Declarația de trecere este, de asemenea, acoperită în documentația Python.

Apoi, verificați tipurile comune de erori Python și cum să le rezolvați.