• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Статья Учим Python - [Ч8] - Отойдем от темы

img_code.png


Всем привет дорогие друзья! Решил я сегодня написать не про интереснейшие исключения, а про мельчайшие детали которые наверняка сделают ваш код лучше. Про исключения мы поговорим в конце данной части.


1. Цель урока
Сегодня вам не нужно решать сложные задачи. Обратим внимание на сам код. Мы постараемся сделать его лучше, читабильней! А после этой части перейдем к уже более интересным вещям)

2. Запомни

Теперь запомни одну вещь, а точнее правило. Ты должен не просто прочитать то, что я написал в этом цикле и то что еще напишу. Ты должен понимать код который видишь и пишешь. Никаких "Я выучил Python!" после прочтения данного цикла. Ты должен вникать. Не получается - задавай вопросы) За спрос никто не убьет. А теперь дам вам задание.

Как вы думаете, код ниже является хорошим или плохим?

Код:
def t():
    f=input()
    return f
def w():
    g=input()
    return g
f=t()
g=w()
s=f+g
print(s)

И если вы думаете что этот код плохой, то вы как никто прав. Но что же так сильно режет глаз в этом коде?

А что если его немного изменить?

Код:
def oneNum():
    num1 = input()
    return num1

def twoNum():
    num2 = input()
    return num2

num1 = oneNum()
num2 = twoNum()

sumNums = num1 + num2
print(sumNums)

Но теперь, хоть немного, но код стал читабельней и меньше режет глаз. Что же нам так не понравилось в первом примере?

Ну вопервых это не информативность названия переменных. Я сам часто допускал данную ошибку. Прошу такого не повторять.

Давайте сравним хорошие и плохие названия переменных.


Код:
myFirstName --- хорошо
my First Name --- не допустимо
my_First_Name --- хорошо

sumNums --- хорошо
sn --- плохо

x --- смотря в каком случае

И так вы поняли, что
  • Длинное название переменных - это плохо.
  • Название перемнной должно быть информативным.
  • Если в переменной сочитаются пару слов то можно записать их через знак нижнего подчеркивания (_) или же слитно, но последующее слово с большой бкувы.
  • Название переменной не должно начинатся с большой буквы, цыфры, прочих символов типа $#_!@&*?
А теперь дорогой друг представим себе такую картину. Ты создал несколько переменных с вполне информативным названием, но код выглядит все равно как-то ужасно
Код:
myPinCode = 1467#пинкод
myBankNumber = 2454#номер счета
dataCreated = 8432#дата создания

Можно внести некоторые правки. Просто воспользуемся клавишей Tab))
Код:
myPinCode      = 1467 # пинкод
myBankNumber   = 2454 # номер счета
dataCreated    = 8432 # дата создания

Согласись так читабильней?
Что же, идем далее.

Что не так в этом коде?)
Код:
sumNums = myResult(4, 5)

def myResult(x, y):
    return x + y

Ты ответил правильно, если подумал, что ошибка скрыта в использовании функции до ее обьявления.


Запомни!!
Функцию нужно обьявлять перед использованием.

Применять функции стоит в тех случаях, когда фрагмент кода повторяется многократно.
Это что касается вашего кода. И то это всего пищинка того, как улучшить свой код.
Существует множество книг на данную тему. К примеру:
[Стив Макконнал] - Совершенный код
[Роберт Мартин] - Чистый код
[Кеннет Рейтц] - Автостопом по Python

3. Исключения

1.jpg
А теперь перейдем к изучению непосредственно самой темы.

Исключения - это своеобразный способ, при котором происходит прирывание работы кода для обработки возникающих ошибок.

Т.е. при возникновении ошибки в коде сработают исключения.

Давайте рассмотрим стандартный пример исключения, когда происходит деление на ноль.

Код:
numOne = 3
numTwo = 0
chastnoe = numOne / numTwo

print(chastnoe)

Когда вы запустите данный код, то на вашем экране выведется ошибка. Это сработало исключение

ZeroDivisionError.

Мы очень часто встречались с исключениями в Python. При использовании не существующей переменной, не обьявленной функции, неудачном импортировании и.т.п.

Зачастую нам нужно обойти исключения и все равно выполнить код. В этом нам поможет конструкция try/except.
В блоке try содержится код, который может вызвать исключения. Если случилось так, что исключение должно сработать, то выполняется код находящийся в блоке except. После чего работа программы завершается.

Пример:
Код:
try:
    numOne = 5
    numTwo = 0
    chastnoe = numOne / numTwo
    print(numOne)
except:
    print(numOne - 2)

Какое число выведет данный код?

Что же, думаем логически: так как там присутствует деление на 0, то выполнится код находящийся в блоке except дабы не вызвать исключение. И ответом будет - 3.

А что если нужно чтобы какая-либо часть кода была выполнена не зависимо от присутствия ошибки?

Тогда приходит - finaly.
Он выполняется в любом случае.

Код:
try:
    print("5" / 3)
except:
    print("Error!")
finaly:
    print("Good!")

Вы надеюсь поняли каков будет ответ)

Задания:

1. Какие из ниже представленных названий переменных являются хорошими?
Код:
thisIsSparta
4ackThePlanet
_myWay
YourFriend
myNumOne
Ответ: 1 и 5
2. Что не так с кодом ниже?
Код:
f=34

num=12
s=f-num
print(s)
Ответ: думай своей головой)
3. Какие исключения ты знаешь?(для себя)

4. Напиши программный код который при возникновении исключения выведет текст:
Обходим исключения!
Код:
try:
    ....
except:
    print("Обходим исключения!")
5. У вас в компании возникла ошибка. Вам нужно в любом случае отдать приказ временном отключении сервера из строя!

 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!