Како користити ‘Пасс’ изјаву у Питхон-у

Када пишете програм, ретко пишете цео код у једном потезу и покрећете свој код само на крају. Уместо тога, највероватније ћете написати неки код, покренути програм, написати још нешто и понављати све док не завршите.

Ефективно ћете поделити и освојити свој програм фокусирајући се на неке битне делове и изостављајући друге, а затим се враћајући да попуните празнине. Да бисте ово ефикасно урадили у Питхон-у, морате користити изјаву о пролазу, тему овог чланка.

Шта је изјава о ‘пролазу’?

За разлику од већине кључних речи које говоре тумачу да нешто уради, изјава пасс је јединствена јер говори тумачу да не ради ништа. Користи се унутар блокова.

Блокови у Питхон-у су линије кода увучене испод функција, класа или наредби тока контроле. Наредбе тока контроле су изјаве које мењају нормално извршавање програма од врха до дна тако што прескачу код помоћу услова или понављају извршавање кода помоћу петљи. Уобичајене кључне речи тока контроле у ​​Питхон-у су иф, фор и вхиле.

Потреба за ‘пролазном’ изјавом

Раније сам објаснио да је изјава пасс изјава која не ради ништа. Али зашто би нам била потребна изјава која не ради ништа када правимо програм који нешто ради? У овом одељку ћу објаснити случајеве коришћења изјаве о пролазу.

#1. Чувар места за будућу имплементацију

Као што је поменуто у уводу, када кодирате, корисно је поделити и владати када пишете свој програм. На пример, када пишете функцију, можда ћете желети да креирате заглавље функције и да се вратите да напишете тело функције касније.

  Шта је напад брзе ињекције АИ и како функционише?

Али Питхон тумач ће викати на вас ако покушате да покренете код. То је зато што Питхон очекује да тело функције или било ког блока кода садржи најмање једну наредбу. Ево примера функције коју имам у Питхон датотеци:

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

Сада ако покушам да извршим код, добићу синтаксичку грешку која каже нешто овако:

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

Наша стратегија завади па владај неће функционисати ако све напишемо унапред, али Питхон треба да напишемо бар нешто. Изјава о пролазу помаже у том погледу. Технички је то изјава, тако да ако је укључите у блок, Питхон не би викао на вас. А ипак не ради ништа, тако да не морате да бринете о логици функције. Ево претходне функције са исказом пасс.

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

Сада ако покренемо код, нећемо добити грешке.

Такође можете позвати функцију да потврдите да не ради ништа.

У суштини, ово је главни случај употребе наредбе пасс у Питхон-у – као чувара места за празне блокове кода. То не морају да буду само функције, већ ради са условима, петљама и класама.

#2. Имплементација апстрактних класа и интерфејса

Наредба пасс се такође може користити за имплементацију апстрактне класе. Апстрактна класа је класа која имплементира апстрактне методе, а апстрактна метода је метода која је дефинисана, али није имплементирана. Ово је слично горе дефинисаном случају употребе, где смо користили исказ пасс као чувар места. Међутим, за разлику од претходног случаја где је изјава о пролазу била само привремена, у овом случају је трајна.

Апстрактне класе су основне класе које дефинишу методе које суперкласе наслеђују од њих треба да имплементирају. Апстрактне класе не имплементирају ниједну логику; дефинишу методе које чине класе наслеђене од њих. Као резултат тога, не инстанцирате основну класу директно.

  14 Азуре тестова за вежбање који ће вам помоћи да положите прави испит

За креирање апстрактних класа у Питхон-у користите @абстрацтметход декоратор и АБЦ класу дефинисану у пакету абц. Ако нисте упознати са декоратерима или сте заборавили на њих, ево чланка о декоратерима у Питхон-у.

Као што сам рекао, пакет абц дефинише @абстрацтметход декоратер и АБЦ класу, које ћемо користити на следећи начин:

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

БасицЦласс наслеђује класу АБЦ. Поред тога, имамо @абстрацметход декоратер дефинисан око басиц_метход. Сада можете наслиједити ову класу и имплементирати басиц_метход.

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

Затим можете инстанцирати ову класу и тестирати основни_метход.

my_object = DerivedClass()

my_object.basic_method()

Када ово покренете, требало би да будете у могућности да напишете поруку на екрану.

Hello from the defined basic method

#3. Не радити ништа са ухваћеним изузецима

Када програм наиђе на грешку у Питхон-у, покреће изузетак. Изузеци су ометајући јер доводе до пада програма и заустављања извршавања. Међутим, можете ухватити и руковати изузецима како бисте спречили пад програма. Можете користити исказ пасс ако не желите да урадите ништа посебно да бисте решили грешку. Ево примера:

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

Ако покренете горњи код, ништа се не дешава. То је зато што се изузетак покреће и њиме рукује кодом у блоку осим. Али овај код не ради ништа, тако да се ништа не дешава. Обично, са изузецима, желите да их евидентирате или да их елегантно рукујете. Али ако не желите ништа да урадите, тако бисте то урадили.

  Isključite podešavanje integriteta memorije ako Windows ne može da učita drajver

Како се изјава о пролазу разликује од паузе и наставка?

Друге кључне речи на које можете наићи су прекид и наставак. Укратко, објаснићу шта раде да бисте могли да видите по чему се разликују од изјаве о пролазу.

Изјава о прекиду

Наредба бреак се користи за излазак из петље. Свака друга наредна итерација петље се тада поништава. На пример, претпоставимо да пишете функцију линеарне претраге. Када се елемент пронађе, нема разлога за наставак понављања до краја листе. Имало би смисла искочити из петље. Дакле, користили бисте изјаву бреак. Ево примера функције линеарне претраге:

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

Цонтинуе Статемент

Наредба настављања се користи за прескакање тренутне итерације у петљи. Ако итерирате преко листе бројева, када ваш програм наиђе на наредбу цонтинуе, зауставиће тренутну итерацију и прескочиће на следећу итерацију. Петља наставља да ради. Следи пример функције која користи наредбу наставак. Програм удвостручује све непарне бројеве, тако да листа садржи само парне бројеве.

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

Надајмо се да сте разумевањем изјава прекида и наставака успели да их разликујете од изјаве о пролазу.

Најбоље праксе за коришћење изјаве о пролазу

✅ Запамтите да се изјава о пролазу обично користи као привремени чувар места; не заборавите да замените изјаву о пролазу стварним кодом када будете спремни.

✅ Ако изјаву о пролазу користите за било шта осим као привремени чувар места, укључите коментар који објашњава зашто је ту.

Завршне речи

У овом чланку сам објаснио наредбу пасс у Питхон-у, корисну кључну реч која вам омогућава да делите и владајте када пишете код. Изјава о пролазу је такође покривена у Питхоновој документацији.

Затим погледајте уобичајене типове грешака у Пајтону и како да их решите.