SlideShare ist ein Scribd-Unternehmen logo
1 von 27
HANDLE ERROR,
GENERATOR AND
DECORATOR
John
Saturday, December 21, 2013
HANDLE ANY
UNEXPECTED
ERROR
Brief introduction
• Python provide 2 ways to handle unexpected
error: exception and assert.
• Exception handling: is an event, which occurs
during the execution of a program, that disrupts
the normal flow of the program's instructions.
• The exceptions are defined in the built-in class
exceptions
• For example: If divided by 0, we want to raise an
exception
Built-in exceptions
Warnings
• It is defined on the warnings module
Raising Exceptions
• The raise statement allows the programmer
to force a specified exception to occur
raise NameError('HiThere')
• Raise statement is to raise an exceptions, tryexception-finally clause is to catch an
exceptions and decide how to do.
Try …except…finally structure

•
•
•
•

First, the try clause(print 100/0) is executed
If no exception occurs, the except clause is skipped
Otherwise, the rest of the try clause is skipped. Go to the line its type
matches the exception name(ZeroDivisionError).
Clean-up info in the finally sentence. It executed under all conditions
Write User-defined Exceptions
>>> class MyError(Exception):
... def __init__(self, value):
...
self.value = value
... def __str__(self):
...
return repr(self.value)

• Define user-defined exception MyError.
• Raise an exception when x == 0. Also write the try-except-finally
clause
• When call f(0,100), the exception is raised and catched.
Brief introduction of assert
• The assert clause is used on situation or
condition that should never happen. For
example: assert 1>0
• “assert” statement is removed when the
compilation is optimized (-O and -OO option,
it is because __debug__ change to False
when -O or -OO option are added).
• So It is a convenient way to insert debugging
assertion into a program
Quick example

• We can see assert is ignored when add -O
option
GENERATOR
Brief introduction
• Generator s are a simple and powerful tool for
create iterators.
• Use yield statement instead of return to return
data
• the __iter__() and next() methods are created
automatically. The local and execution state are
saved automatically.
• When generator terminate, it raise StopIteration
Quick example
• When you call the generator function, the co
de does not run. It just return the generator
object.
The difference between generator
and sequence type
>>> mylist = [x*x for x in range(3)]
>>> mygenerator = (x*x for x in range(3))
•Both mylist and mygenerator are iterable
•But you can only read
generator once.
•Generator do not store all
the values in memory, they
generate the values on the
fly.
DECORATOR
Brief introduction
• Functions are objects in python.
• We can define other function inside function
definition.
• We can pass a function as argument of other
function.
Quick example
•

benchmark function accept
func as input argument.
• We can see @benchmark
equal to
apply benchmark function
on f
f = benchmark(f)
•

This is the typical usage of
decorator: Use func as input
argument. define wrapper
function inside function
definition
Official document
• PEP - 318 Decorators for Functions and
Methods
DESCRIPTOR
Brief introduction
• A descriptor is an object attribute with
“binding behavior”.
• If any of __get__(), __set__() and
__delete__() are defined for an object, it is
said to be a descriptor.
Descriptor protocol
• If an object defines both __get__() and __set__(), it is considered
a data descriptor.
• Descriptors that only define __get__() are called non-data
descriptors

• descriptors are invoked by the __getattribute__() method
• overriding __getattribute__() prevents automatic descriptor
calls
Descriptor example
• Define __set__ and __get__ method.
Implement the property() method
• Calling property() is a succinct way of building
a data descriptor
Let us write the similar property()
descriptor
Function are non-data descriptor
• All functions include __get__() method for
binding methods.
Non-data descriptor staticmethod
• The pure python verson of static method
should be like:

Use static method
Non-data descriptor classmethod
• Pure python version of classmethod looks
like:

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

Python recursion
Python recursionPython recursion
Python recursion
 
Command line arguments that make you smile
Command line arguments that make you smileCommand line arguments that make you smile
Command line arguments that make you smile
 
Python algorithm
Python algorithmPython algorithm
Python algorithm
 
Python libraries
Python librariesPython libraries
Python libraries
 
Lec16-CS110 Computational Engineering
Lec16-CS110 Computational EngineeringLec16-CS110 Computational Engineering
Lec16-CS110 Computational Engineering
 
Command line arguments
Command line argumentsCommand line arguments
Command line arguments
 
PYTHON PROGRAMMING
PYTHON PROGRAMMINGPYTHON PROGRAMMING
PYTHON PROGRAMMING
 
Function overloading
Function overloadingFunction overloading
Function overloading
 
Review functions
Review functionsReview functions
Review functions
 
Templates exception handling
Templates exception handlingTemplates exception handling
Templates exception handling
 
Python functions
Python functionsPython functions
Python functions
 
C++ tokens and expressions
C++ tokens and expressionsC++ tokens and expressions
C++ tokens and expressions
 
Header files in c
Header files in cHeader files in c
Header files in c
 
Pointers
PointersPointers
Pointers
 
Modern C++
Modern C++Modern C++
Modern C++
 
Python advance
Python advancePython advance
Python advance
 
Lecture#6 functions in c++
Lecture#6 functions in c++Lecture#6 functions in c++
Lecture#6 functions in c++
 
Python for Security Professionals
Python for Security ProfessionalsPython for Security Professionals
Python for Security Professionals
 
Functions in c language
Functions in c language Functions in c language
Functions in c language
 
Function
FunctionFunction
Function
 

Andere mochten auch (6)

Python session 12
Python session 12Python session 12
Python session 12
 
Advanced Python : Decorators
Advanced Python : DecoratorsAdvanced Python : Decorators
Advanced Python : Decorators
 
Python decorators
Python decoratorsPython decorators
Python decorators
 
Python advanced 2. regular expression in python
Python advanced 2. regular expression in pythonPython advanced 2. regular expression in python
Python advanced 2. regular expression in python
 
Advance OOP concepts in Python
Advance OOP concepts in PythonAdvance OOP concepts in Python
Advance OOP concepts in Python
 
Decorators in Python
Decorators in PythonDecorators in Python
Decorators in Python
 

Ähnlich wie Python advanced 1.handle error, generator, decorator and decriptor

Exception Handling Exception Handling Exception Handling
Exception Handling Exception Handling Exception HandlingException Handling Exception Handling Exception Handling
Exception Handling Exception Handling Exception Handling
AboMohammad10
 

Ähnlich wie Python advanced 1.handle error, generator, decorator and decriptor (20)

Control structures functions and modules in python programming
Control structures functions and modules in python programmingControl structures functions and modules in python programming
Control structures functions and modules in python programming
 
UNIT III.ppt
UNIT III.pptUNIT III.ppt
UNIT III.ppt
 
UNIT III (2).ppt
UNIT III (2).pptUNIT III (2).ppt
UNIT III (2).ppt
 
Data Structures and Algorithms in Python
Data Structures and Algorithms in PythonData Structures and Algorithms in Python
Data Structures and Algorithms in Python
 
Unit iii
Unit iiiUnit iii
Unit iii
 
Python Unit II.pptx
Python Unit II.pptxPython Unit II.pptx
Python Unit II.pptx
 
Unit iii pds
Unit iii pdsUnit iii pds
Unit iii pds
 
F6dc1 session6 c++
F6dc1 session6 c++F6dc1 session6 c++
F6dc1 session6 c++
 
Lecture 09 Exception Handling(1 ) in c++.pptx
Lecture 09 Exception Handling(1 ) in c++.pptxLecture 09 Exception Handling(1 ) in c++.pptx
Lecture 09 Exception Handling(1 ) in c++.pptx
 
Introduction to C ++.pptx
Introduction to C ++.pptxIntroduction to C ++.pptx
Introduction to C ++.pptx
 
python ppt.pptx
python ppt.pptxpython ppt.pptx
python ppt.pptx
 
Python_UNIT-I.pptx
Python_UNIT-I.pptxPython_UNIT-I.pptx
Python_UNIT-I.pptx
 
OOPs & C++(UNIT 5)
OOPs & C++(UNIT 5)OOPs & C++(UNIT 5)
OOPs & C++(UNIT 5)
 
Functions_new.pptx
Functions_new.pptxFunctions_new.pptx
Functions_new.pptx
 
Lecture 1 Try Throw Catch.pptx
Lecture 1 Try Throw Catch.pptxLecture 1 Try Throw Catch.pptx
Lecture 1 Try Throw Catch.pptx
 
85ec7 session2 c++
85ec7 session2 c++85ec7 session2 c++
85ec7 session2 c++
 
Handling
HandlingHandling
Handling
 
VCE Unit 01 (1).pptx
VCE Unit 01 (1).pptxVCE Unit 01 (1).pptx
VCE Unit 01 (1).pptx
 
Exception Handling Exception Handling Exception Handling
Exception Handling Exception Handling Exception HandlingException Handling Exception Handling Exception Handling
Exception Handling Exception Handling Exception Handling
 
Exceptions in C++ Object Oriented Programming.pptx
Exceptions in C++ Object Oriented Programming.pptxExceptions in C++ Object Oriented Programming.pptx
Exceptions in C++ Object Oriented Programming.pptx
 

Mehr von John(Qiang) Zhang

Mehr von John(Qiang) Zhang (6)

Git and github introduction
Git and github introductionGit and github introduction
Git and github introduction
 
Python testing
Python  testingPython  testing
Python testing
 
Introduction to jython
Introduction to jythonIntroduction to jython
Introduction to jython
 
Introduction to cython
Introduction to cythonIntroduction to cython
Introduction to cython
 
A useful tools in windows py2exe(optional)
A useful tools in windows py2exe(optional)A useful tools in windows py2exe(optional)
A useful tools in windows py2exe(optional)
 
Python advanced 3.the python std lib by example – system related modules
Python advanced 3.the python std lib by example – system related modulesPython advanced 3.the python std lib by example – system related modules
Python advanced 3.the python std lib by example – system related modules
 

Kürzlich hochgeladen

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Kürzlich hochgeladen (20)

How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 

Python advanced 1.handle error, generator, decorator and decriptor

  • 3. Brief introduction • Python provide 2 ways to handle unexpected error: exception and assert. • Exception handling: is an event, which occurs during the execution of a program, that disrupts the normal flow of the program's instructions. • The exceptions are defined in the built-in class exceptions • For example: If divided by 0, we want to raise an exception
  • 5. Warnings • It is defined on the warnings module
  • 6. Raising Exceptions • The raise statement allows the programmer to force a specified exception to occur raise NameError('HiThere') • Raise statement is to raise an exceptions, tryexception-finally clause is to catch an exceptions and decide how to do.
  • 7. Try …except…finally structure • • • • First, the try clause(print 100/0) is executed If no exception occurs, the except clause is skipped Otherwise, the rest of the try clause is skipped. Go to the line its type matches the exception name(ZeroDivisionError). Clean-up info in the finally sentence. It executed under all conditions
  • 8. Write User-defined Exceptions >>> class MyError(Exception): ... def __init__(self, value): ... self.value = value ... def __str__(self): ... return repr(self.value) • Define user-defined exception MyError. • Raise an exception when x == 0. Also write the try-except-finally clause • When call f(0,100), the exception is raised and catched.
  • 9. Brief introduction of assert • The assert clause is used on situation or condition that should never happen. For example: assert 1>0 • “assert” statement is removed when the compilation is optimized (-O and -OO option, it is because __debug__ change to False when -O or -OO option are added). • So It is a convenient way to insert debugging assertion into a program
  • 10. Quick example • We can see assert is ignored when add -O option
  • 12. Brief introduction • Generator s are a simple and powerful tool for create iterators. • Use yield statement instead of return to return data • the __iter__() and next() methods are created automatically. The local and execution state are saved automatically. • When generator terminate, it raise StopIteration
  • 13. Quick example • When you call the generator function, the co de does not run. It just return the generator object.
  • 14. The difference between generator and sequence type >>> mylist = [x*x for x in range(3)] >>> mygenerator = (x*x for x in range(3)) •Both mylist and mygenerator are iterable •But you can only read generator once. •Generator do not store all the values in memory, they generate the values on the fly.
  • 16. Brief introduction • Functions are objects in python. • We can define other function inside function definition. • We can pass a function as argument of other function.
  • 17. Quick example • benchmark function accept func as input argument. • We can see @benchmark equal to apply benchmark function on f f = benchmark(f) • This is the typical usage of decorator: Use func as input argument. define wrapper function inside function definition
  • 18. Official document • PEP - 318 Decorators for Functions and Methods
  • 20. Brief introduction • A descriptor is an object attribute with “binding behavior”. • If any of __get__(), __set__() and __delete__() are defined for an object, it is said to be a descriptor.
  • 21. Descriptor protocol • If an object defines both __get__() and __set__(), it is considered a data descriptor. • Descriptors that only define __get__() are called non-data descriptors • descriptors are invoked by the __getattribute__() method • overriding __getattribute__() prevents automatic descriptor calls
  • 22. Descriptor example • Define __set__ and __get__ method.
  • 23. Implement the property() method • Calling property() is a succinct way of building a data descriptor
  • 24. Let us write the similar property() descriptor
  • 25. Function are non-data descriptor • All functions include __get__() method for binding methods.
  • 26. Non-data descriptor staticmethod • The pure python verson of static method should be like: Use static method
  • 27. Non-data descriptor classmethod • Pure python version of classmethod looks like: