• Codeby web-security - Курс "Тестирование Веб-Приложений на проникновение с нуля" от команды codeby. Общая теория, подготовка рабочего окружения, пассивный фаззинг и фингерпринт, Активный фаззинг, Уязвимости, Пост-эксплуатация, Инструментальные средства, Social Engeneering и многое другое. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь. Мобильный клиент для IOS находится в itunes по этой ссылке

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

al04e

Dart Vader
Gold Team
24.05.2017
264
1 037
#1
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. У вас в компании возникла ошибка. Вам нужно в любом случае отдать приказ временном отключении сервера из строя!

 
Вверх Снизу