exceptions
Exceptions(исключения) это ошибки возникающие при работе программы. Если в программе есть ошибки и они не обрабатываются, программа перестает работать Например: exceptions print(2+5) print( print(2**3) print(25%5) Ответ: File "C:/class work.py", line 4 print(25%5) ^ SyntaxError: invalid syntax
Программа может работать до ошибки либо нет. Это зависит от типа ошибки. Exceptions print(25//4) print(36%7) print(25/0) print(Exception.") Ответ: Traceback (most recent call last): 6 1 File "C:/Users/PycharmProjects/class work.py", line 3, in print(25/0) ZeroDivisionError: division by zero
Если ловим исключение, программа обработает ошибку и будет работать дальше Exception Код Ошибка Код Ошибка except Код
В питоне есть иерархия классов для обработки исключении. С помощью этих классов мы можем узнать тип исключения Иерархия исключении BaseException +-- SystemExit +-- KeyboardInterrupt +-- GeneratorExit +-- Exception +-- StopIteration +-- StopAsyncIteration +-- ArithmeticError +-- FloatingPointError +-- OverflowError +-- ZeroDivisionError
try/except exception_name try/finally try/except/else raise assert with/ as Exceptions конструкции
С помощью конструкций try/except exception_name можно обработать исключение программы. Оно состоит из двух частей: try, except. try пишется код который может вызвать ошибку. А в except пишется обработка ошибки. Пример: try/except exception_name def fetcher(obj,index): return obj[index] #returns index-th character of the object. name='Zhandos' # This string has 7 characters, so indexes in 0-6 are valid. n = fetcher(name,2) # This call will return a. print("The character with index two is",n) n = fetcher(name,7) # This call will fail, because there is no character with index 7. print("The character with index seven is",n)
Продолжение Ответ: The character with index two is a Traceback (most recent call last): File "File_example1.py", line 6, in n = fetcher(name,7) # This call will fail because there is no character with index 7 File "File_example1.py", line 2, in fetcher return obj[index] #returns index-th character of the object IndexError: string index out of range Нет индекса 7 в элементе name, IndexError это наше исключение
Продолжение Используем try/except exception_name def fetcher(obj,index): return obj[index] name='Zhandos' try: n = fetcher(name,2) print("The character with index two is",n except IndexError: print("The index requested (2) is not valid try: n = fetcher(name,7 print("The character with index seven is",n) except IndexError: print("The index requested (7) is not valid.") Ответ: The character with index two is a The index requested (7) is not valid.
Конструкция try/finally состоит из 2 частей: try, finally. В try пишется вероятно ошибочный код. finally пишется код который выполнится в любом случае. Пример: try/finally try: result="d"*"d" print(result) except(TypeError): print("Exception was raised!") finally: print("Finally clause text.") Ответ: Exception was raised! Finally clause text.
try/finally try: result="d"*"d" print(result) finally: print("Finally clause text.") Ответ: Traceback (most recent call last): File "class work.py", line 2, in result="d"*"d" TypeError: can't multiply sequence by non-int of type 'str' Finally clause text.
try/except/else: try… except... else вызывается если все ок. try/except/else
try: file=open("Абылайхан.txt","r") print(file.encoding) print(file.name) except(SyntaxError): print("You have a syntax error.") except(IOError): print("IOError exception was raised.") else: print("You have no syntax and input/output errors.") Ответ: cp1251 Абылайхан.txt You have not syntax or and input/output errors..
try/except/else try: file=open("Абылай.txt","r") print(file.encoding) print(file.name) except(SyntaxError): print("You have a syntax error.") except(IOError): print("IOError exception was raised.") else: print("You have no syntax and input/output errors.") Ответ: IOError exception was raised. Файла Абылай.txt не был найден и вышло исключение IOError.
Конструкция assert: assert condition, data. Condition - условие. Data – (string) текст. Если в конструкции assert условие False, выводит data. Если True, не выводит data. Конструкция assert
Пример class Converter: def Celsius_to_Fahrenheit(self, x): Fahrenheit=x* # Неправильная формула. Правильная: F=1.8*C+32. print("Fahrenheit:",Fahrenheit) return Fahrenheit converter_obj=Converter() result=converter_obj.Celsius_to_Fahrenheit(5) #41°F=5°C assert result==41, "Фаренгейт не правильно. Проверьте формулу" Ответ: Fahrenheit: 42.0 Traceback (most recent call last): File "C:/Users/problem2.py", line 8, in assert result==41, "Фаренгейт не правильно. Проверьте формулу." AssertionError: Фаренгейт не правильно. Проверьте формулу.
Продолжение class Converter: def Celsius_to_Fahrenheit(self, x): Fahrenheit=x* print("Fahrenheit:",Fahrenheit) return Fahrenheit converter_obj=Converter() result=converter_obj.Celsius_to_Fahrenheit(5) #41°F=5°C assert result==41, " Фаренгейт не правильно. Проверьте формулу " Ответ: Fahrenheit: 41.0
raise создает exception. Синтаксис оператора raise: 1)raise exception_class_name 2)raise exception_object_name Тоесть exception можно получить по ошибке или оператором raise Например: raise оператор print(4/0) ZeroDivisionError без raise raise ZeroDivisionError ZeroDivisionError с raise
Задание: Пользователь вводит число. Если число не в интервале [3;5] ValueError. Иначе делим на 25 синтаксис raise exception_object_name n=int(input()) value_object=ValueError() if n 5: raise value_object print(n/25)
Разработчик сам может создавать Exception. Для этого создаем класс который наследует какой либо Exception User-defined Exception
class Early(Exception): pass class Late(Exception): pass year=int(input("Enter year of independence")) answer=1991 while(year!=answer): try: if year>answer: raise Late else: raise Early except Late: print("Try again.") print("Your answer is greater than right answer") except Early: print("Try again.") print("Your answer is smaller than right answer") year=int(input("Enter year:")) print("Your answer is correct.")
answer = lambda x: x*7 s = int(input()) print(answer(s)) Лямбда функция
представление программы в виде совокупности объектов, каждый из которых является экземпляром определённого класса Объектно-ориентированное программирование
Тип данных который состоит из полей и функции class class_name: #тело класса Класс
Пример class Employee: """Common base class for all employees""" quantity_of_employees = 0 #this property identifies quantity of objects of Employee class. name="" ID=0 def __init__(self, name, salary,ID2): #this function is called constructor self.name = name self.salary = salary self.ID=ID2 Employee.quantity_of_employees += 1 def display_quantity(self): # this is one function of the class print("Total Employee %d" % Employee.quantity_of_employees) def display_employee(self): print("Name : ", self.name,", ID:",self.ID, ", Salary: ", self.salary)
Продолжение def setName(self,name): #set function for name property self.name=name def getName(self): #get function for name property return self.name def setID(self, ID): #set function for ID property self.ID = ID def getID(self): #get function for ID property return self.ID def delName(self): #this function deletes property value del self.name def delID(self): #this function deletes property value del self.ID
Объект - это экземпляр класса. Строится на основе класса. Класс это модель объекта. Объект присваивает поля класса. Объект
Пример class Car: color=" def __init__(self,color): self.color=color toyota=Car("blue") print(toyota.color) Ответ: blue Car это название класса, toyota название объекта. Даже если __init__ имя функций, мы вызываем его как Car(blue)
Чтобы создать объект на основе класса мы вызываем функцию __init__. Функция __init__ также называют конструктор. Объект
1)object_name.variable # доступ к полю 2)object_name.function # доступ к функций Доступ к полям и функциям через объект
class Car: color="" def change_color(self,new_color): self.color=new_color def __init__(self,color): self.color=color toyota=Car("blue") print(toyota.color) toyota.change_color("yellow")#меняем цвет. print(toyota.color) Ответ: blue yellow
class Car: color="" def change_color(self,new_color): self.color=new_color def __init__(self,color): self.color=color toyota=Car("blue") print(toyota.color) toyota.color="yellow" print(toyota.color) 2-пример Ответ: blue yellow