Chapter 1 Introduction To Python¶
Keynote¶
1.1 What is Python? (Python áááŻáᏠááŹáá˛)¶
- Python áááŻááŹá Guido Van Rossum áááşááŽá¸áá˛áˇáá˛áˇ High-level programming language áá áşáᯠááźá áşááŤáááşá áááşááŽá¸áážááş Guido áááŻááąáŹáˇ ááťá áşá áááŻá¸áá˛áˇ Benevolent Dictator For Life áááŻáˇ áááşá áŹá¸ááąáŤáşááąáŤáşááźááŤáááşá
- Python ááᯠáááá ááŻáážá áşáážáŹ á áááşááááşáááşáá˛áˇááŹááŤá áĄááŻáááŻáááş Windows áá˛áˇ Linux áĄááŤáĄáááş Operating Systems ááąáŹáşááąáŹáşááťáŹá¸ááťáŹá¸áážáŹ Python interpreters áá˝áąááᯠáĄááŻáśá¸ááźáŻáááŻááşááąááŤááźáŽá
- Python ááąá¸áá˛áˇ Programmers áá˝áąáááŻááąáŹáˇ Pythonists (áááŻáˇáááŻááş) Pythonistas áááŻáˇ ááąáŤáşááąáˇáážáááźááŤáááşá
1.2 Reasons for Popularity (ááŹáááŻáˇ ááŽááąáŹááş ááąááşá áŹá¸ááŹááŹáá˛)¶
Python ááŽááąáŹááşáá áá°ááźááŻááşááťáŹá¸ááźáŽá¸ ááąááşá áŹá¸ááŹááá˛áˇ áĄááźáąáŹááşá¸áááşá¸áá˝áą áĄááťáŹá¸ááźáŽá¸áážáááŤáááşá áááťááŻáˇáĄááťááşáá˝áąáááąáŹáˇ -
(a) Free (áĄááá˛áˇááááş):
- Python á ááŻáśá¸ááᏠFree ááźá áşáááᯠááźááˇáşááąáááŹáááşá¸ áá˝ááşáááşáááşá ááźáŽá¸ááąáŹáˇ Community support áááşá¸ áĄáááşá¸ááąáŹááşá¸áááşá
- Python interpreter ááᯠáĄááá Platform áááŻááşá¸áĄáá˝ááş ááááŻááşááŤáááşá
(b) Software quality (Software áĄáááşáĄáá˝áąá¸):
- áááŻá¸áááŻá¸ Scripting languages áá˝áąáá˛áˇ áááźáŹá¸áááŻá¸áᏠLanguages áá˝áąáááş áááŻááąáŹááşá¸áááşá
- Code á áááşááá˝ááşáá˛áˇáĄáá˝ááş ááźááşááŻáśá¸ááᏠ(Reusable)á ááźááşáááşááááşá¸ááááşá¸ááᏠ(Maintainable) áĄáááşá¸áĄáááşááźáąáááşá
- áĄáááˇáşááźááˇáşáá˛áˇ Reuse mechanisms áá˝áąáááŻáááşá¸ Support ááŻááşááąá¸áááşá
© Developer productivity (ááąá¸ááŹá¸áá°áĄáá˝ááş áá˝ááşááťááşáážáŻ):
- Statically typed languages áá˝áąáááşá áŹáááş áĄááťáŹá¸ááźáŽá¸ áááŻááźáŽá¸ áĄááŻááşáá˝ááşáááşá
- Code ááąá¸ááᏠáĄááťáŹá¸ááźáŽá¸ áááŻáááŻáááşá
- á áŹáááŻááşááᏠáááşááŹáááşá Debug ááŻááşáááŹáá˛áˇ Maintain ááŻááşááᏠáááŻáá˝ááşáááşá
- Compile ááŻááşááŹáááŻáˇá Link ááťáááşááŹáááŻáˇááᯠááźáŹáá˛áˇáĄáááˇáşáá˝áą ááŻááşááąá áᏠááááŻááąáŹáˇáá°á¸á
(d) Program portability (ááąááŹá áŻáśáážáŹ áĄááŻááşááŻááşáááŻááşáážáŻ):
- Python Programs áá˝áąá Platform ááąáŹáşááąáŹáşááťáŹá¸ááťáŹá¸áážáŹ ááŹááž ááźááşá ááŹááááŻáᲠááŽáááŻááşá¸ Run áááŻáˇááááşá
- áááşáážá áá°ááŻáśá¸ááťáŹá¸áá˛áˇ Platform áááŻááşá¸áážáŹ Python á áĄááŻááşááŻááşááŤáááşá
- áááŻááşááąá¸ááŹá¸áá˛áˇ Program ááᯠPlatform áĄáá áşáá áşááŻáᎠááźáąáŹááşá¸áááşááťááşáááş (Porting) áááŻáááşááŽáááş Cut and paste ááŻááşáááŻááşááŻáśááŤáá˛á ááŤá GUIá DB accessá Web programmingá OS interfacing áá˛áˇ Directory access á ááŹáá˝áąáĄáá áĄááťáŻáśá¸áááşááŤáááşá
(e) Support libraries (Library áĄááąáŹááşáĄááśáˇááťáŹá¸):
- Text pattern matching áááą Networking áĄáááŻááşá¸áá Library support áĄáááşá¸ááąáŹááˇáşáááşá¸áááşá
- Third party libraries áá˝áąáááşá¸ ááąáŹáşááąáŹáşááťáŹá¸ááťáŹá¸ á áŻááąáŹááşá¸ááŹá¸ááźáŽá¸ááŹá¸ áážááááşá
- Web site áááşááąáŹááşááŹá Numeric programmingá Game development áá˛áˇ Machine Learning áá˝áąáĄáá˝ááşá፠Libraries áá˝áą áĄá áŻáśáážááááşá
(f) Component integration (áááźáŹá¸áĄááŹááťáŹá¸áážááˇáş ááťáááşáááşáááŻááşáážáŻ):
- Cá C++ libraries áá˝áąáá˛áˇ Java components áá˝áąááᯠáážááşá¸ááąáŤáşááŻáśá¸áááŻáˇááááşá
- COMá .NET ááᯠFrameworks áá˝áąáá˛áˇáááşá¸ ááťáááşáááşááŻááşááąáŹááşáááŻááşáááşá
- SOAPá XML-RPCá CORBA ááᯠInterfaces áá˝áąáááąáá áşáááˇáş Network ááąáŤáşáážáŹ ááťáááşáááşááąáŹááşáá˝ááşáááŻááşáááşá
- áááŻáĄááşáá˛áˇ Glue code ááąá¸áá˝áą ááŻáśá¸áááŻááşáááşáááŻáááş Python áááą C++á Javaá C# classes áá˝áąááᯠSubclass ááŻááşááźáŽá¸ áááŻááˇáş Program áá˛áˇ ááŻááşááąáŹááşáááŻááşá á˝ááşá¸ááᯠááťá˛áˇáá˝ááşáááŻáˇááááşá
- Product áá áşááŻááᯠCustomization ááŻááşááŹáááŻáˇá Extension ááŻááşááŹáááŻáˇáážáŹ áá°ááŻáśá¸ááťáŹá¸ááźáááşá
(g) Enjoyment (ááŻáśá¸ááᏠáĄáááŹáážáááźááşá¸):
- ááŻáśá¸ááᏠáá˝ááşáá°áááŻá¸áážááşá¸áááşá
- Built-in toolset áá˝áą ááŤáááşá
- áĄááŻááşááŻááşáááŹááťááŻá¸ áááŻááşáᲠProgramming ááąá¸áááŹáááŻá ááťáąáŹáşá ááŹááąáŹááşá¸ááąá áąáááşá
1.3 What sets Python apart? (Python ááᯠááŹá áá°á¸ááźáŹá¸á áąááŹáá˛)¶
(a) Powerful (á á˝ááşá¸áááşááźááˇáşááŹá¸ááźááşá¸):
- Dynamic typing ááźá áşáááşá
- Variable declaration ááźáąááŹááąá¸á áᏠááááŻáá°á¸á
- Automatic allocation áá˛áˇ Garbage Collection ááŤááźáŽá¸ááŹá¸á
- Classesá Modules áá˛áˇ Exceptions áá˝áąááᯠSupport ááŻááşáááşá
- Componentization áá˛áˇ Reuse ááŻááşááŹáá˝áąááᯠáá˝ááˇáşááźáŻááąá¸áááşá
- Listsá Dictionariesá Tuples á áá˛áˇ Containers áá˝áąá áĄáááşá¸ Powerful ááźá áşáááşá
(b) Ready-made stuff (áĄáááşáááˇáşááŻáśá¸áááŻááşááąáŹ áĄááŹááťáŹá¸):
- Joiningá Slicingá Sortingá Mapping á áá˛áˇ Operations áá˝áąáĄáá˝ááş Support ááŤáááşá
- Library áááŻááşá¸ ááąáŹááˇáşáááşá¸áááşá
- Third-party utilities áá˝áąáááşá¸ áĄááťáŹá¸ááźáŽá¸áážááááşá
© Ease of use (áĄááŻáśá¸ááźáŻá áá˝ááşáá°ááźááşá¸):
- áááŻááşááźáŽá¸ áááşá¸ Run áááŻááşááŻáśáᲠ(Type and run)á
- Compile áá˛áˇ Link áĄáááˇáşáá˝áą ááááŻáá°á¸á
- Interactive programming experience ááᯠáá áąáááşá
- áĄááŻááşááźáŽá¸ááźáąáŹááşáážáŻ ááźááşáááşáááş (Rapid turnaround)á
- Programs áá˝áąá áááŻá¸áážááşá¸áááşá áááŻááźáŽá¸ Compact ááźá áşáááᯠáááŻááźáŽá¸ Flexible ááźá áşáááşá
1.4 Where is Python used? (Python ááᯠáááşááąááŹáá˝áąáážáŹ ááŻáśá¸ááźáá˛)¶
Python ááᯠááąááŹá áŻáśá ááášáá áŻáśáážáŹ áĄááŻáśá¸ááźáŻááźááŤáááşá áĄááá áĄááŻáśá¸ááźáŻááźááŹáá˝áąáááąáŹáˇ
- System programming
- GUI applications áá˝áą áááşááąáŹááşáá˛áˇááąááŹ
- Internet scripting
- Component integration (áááźáŹá¸ Component áá˝áąáá˛áˇ ááťáááşáááşááźááşá¸)
- Database programming
- Rapid prototyping (ááá°ááŹááŻáśá áś áĄááźááşááťááąá¸ááźááşá¸)
- Numeric áá˛áˇ Scientific programming
- Game programming
- Robotics programming
1.5 Who uses Python today? (áááşáážá Python ááᯠáááşáá°áá˝áą ááŻáśá¸ááąááźáá˛)¶
ááŹáááşááźáŽá¸ Organizations ááąáŹáşááąáŹáşááťáŹá¸ááťáŹá¸á Python ááᯠáááşáá˝ááşááťááşáĄááťááŻá¸ááťááŻá¸áá˛áˇ ááŻáśá¸ááąááźááŤáááşá áĽáááŹáĄáŹá¸ááźááˇáş
- Google - áá°áááŻáˇáá˛áˇ Web search system áážáŹ ááŻáśá¸ááŤáááşá
- YouTube - Video Sharing service áĄáááŻááşá¸áážáŹ ááŻáśá¸ááŤáááşá
- Bit-torrent - Peer to Peer file sharing system áážáŹ ááŻáśá¸ááŤáááşá
- Intel, HP, Seagate, IBM, Qualcomm - Hardware testing ááźáŻááŻááşáá˛áˇáĄáááŻááşá¸áážáŹ ááŻáśá¸ááŤáááşá
- Pixar, Industrial Light and Magic - Movie animation áááşááŽá¸áá˛áˇááąááŹáážáŹ ááŻáśá¸ááŤáááşá
- JP Morgan, Chase, UBS - Financial market forecasting (áá˝áąááźáąá¸ááąá¸áá˝ááş áááˇáşáážááşá¸áá˝ááşááťááşááźááşá¸) áĄáá˝ááş ááŻáśá¸ááŤáááşá
- NASA, FermiLab - Scientific programming áĄáá˝ááş ááŻáśá¸ááŤáááşá
- iRobot - á áŽá¸áá˝áŹá¸ááźá áşááąáŹááşá¸ááťáá˛áˇ Robot vacuum cleaners áá˝áąáážáŹ ááŻáśá¸ááŤáááşá
- NSA - Cryptographic áá˛áˇ Intelligence analysis ááźáŻááŻááşááŹáážáŹ ááŻáśá¸ááŤáááşá
- IronPort - Email Servers áá˝áąáážáŹ ááŻáśá¸ááŤáááşá
1.6 Programming Paradigms¶
- Paradigm áááŻááŹá Organization principle áá áşááŻááŤá Model áááŻáˇáááşá¸ ááąáŤáşááźááŤáááşá
- Programming paradigm/model áááŻáᏠComputer programs áá˝áąáá˛áˇ Structure áá˛áˇ Elements áá˝áąááᯠáááşáááŻáááşááąáŹááşááá˛áááŻáá˛áˇ ááŻáśá áś (Style) áá áşááŻááŤáá˛á
- Functionalá Proceduralá Object-orientedá Event-driven á áááźááˇáş Programming models áá˝áą áĄááťáŹá¸ááźáŽá¸ áážáááŤáááşá
- Languages ááąáŹáşááąáŹáşááťáŹá¸ááťáŹá¸á Paradigms áá áşááŻáá Support ááąá¸ááŹá¸ááźááŤáááşá áĽááᏠ- Python áááŻáááş Functionalá Proceduralá Object-oriented áá˛áˇ Event-driven programming models áĄáŹá¸ááŻáśá¸ááᯠSupport ááŻááşááŤáááşá
- áááťááŻáˇáĄááźáąáĄááąáá˝áąáážáŹ Functional programming á áá˝áąá¸ááťááşá áᏠááźá áşááąááąáááˇáşá áááźáŹá¸áĄááźáąáĄááąáá˝áąáážáŹááąáŹáˇ Procedural programming á áááŻááźáŽá¸ áĄáááşááźáąááŹááťááŻá¸ áážáááŤáááşá
- Paradigms áá˝áąáááŻáᏠáá áşááŻáá˛áˇáá áşáᯠááŽá¸áááˇáşáá˝á˛ááźáŹá¸ááŹá¸ááááˇáşáĄááŹáá˝áą áááŻááşááŤáá°á¸á Program áá áşááŻááşáááşá¸áážáŹáááş Paradigms áĄááťáŹá¸ááźáŽá¸ááᯠááąáŹááŻáśá¸áááŻáˇ áááŤáááşá
1.6.1 Functional Programming Model¶
- Functional programming á ááźáżááŹáá áşááŻááᯠFunctions áĄááąá¸ááąá¸áá˝áąáĄááźá áş áá˝á˛ááźááşá¸á áááşááźáŹáááŻááşááŹááŤá áĄá˛áᎠFunctions áá˝áąá Program áá˛áˇ áĄááá Logic áá˝áą ááźá áşááŹááŤáááşá
- Functions áá˝áąá Input parameters áá˝áąááᯠáááşááśááźáŽá¸ Outputs áá˝áąááᯠááŻááşááąá¸ááŤáááşá Python áážáŹ lambdaá mapá reduce áá˛áˇ filter áááŻááťááŻá¸ Functional programming techniques áá˝áą ááŤáááşááŤáááşá ááŤáá˝áąááᯠChapter 15 ááąáŹááşáááş áĄááąá¸á áááş áá˝áąá¸áá˝áąá¸ááŤáááşá
- áᎠModel áážáŹ Computation (áá˝ááşááťááşááźááşá¸) ááᯠMathematical functions áá˝áą ááźáąáážááşá¸áá˝ááşááťááşááááŻááťááŻá¸ áááąáŹááŹá¸ááŤáááşá áĽááᏠ- ááááşá¸ááááşá¸áá áşááŻáá˛áˇ Factorial value áážáŹááŹá áááŻáˇáááŻááş áááşáážááŻááźáąáŹááş Fibonacci number áá˛áááŻáᏠáážáŹááťááşáááş áĄáąáŹááşá Functions áá˝áąááᯠááŻáśá¸áááŻááşááŤáááş -
factorial(n) = 1 if n == 0
= n * factorial(n - 1) if n > 0
fibo(n) = 0 if n = 0
= 1 if n = 1
= fibo(n - 2) + fibo(n - 1) if n > 1
- Function áá áşááŻáá˛áˇ Output value á áá°áˇáá˛áˇ Arguments áá˝áąáĄááąáŤáşáážáŹáᲠáá°áááşááŤáááşá ááŤááźáąáŹááˇáş Function áá áşááŻááᯠáá°ááŽáá˛áˇ Value áá˛áˇ ááąáŤáşáááŻááşáááŻááşá¸ áĄááźá˛áááşá¸ áá°ááŽáá˛áˇ Result áááŻáᲠááážáá áąááŤáááşá ááŽáĄááťááşááźáąáŹááˇáş Parallel execution ááŻááşáááŻáˇáĄáá˝ááş áĄáá°á¸áááˇáşááąáŹáşááŤáááşá
- áááş Function áááž áááźáŹá¸ Variables áá˝áąáĄááąáŤáş Side effects áááźá áşá áąááŤáá°á¸ (State á áááźáąáŹááşá¸áá˛áᲠááťááşáážáááąááŤáááş)á
- Functional programming model ááᯠDeclarative programming paradigm áááŻáˇáááşá¸ ááąáŤáşááąáˇáážáááźááŤáááşá ááŹááźáąáŹááˇáşáá˛áááŻááąáŹáˇ Statements áá˝áąáĄá áŹá¸ Expressions (áááŻáˇáááŻááş) Declarations áá˝áąáá˛áˇ Programming ááąá¸ááŹá¸áááŻáˇ ááźá áşááŤáááşá
1.6.2 Procedural Programming Model¶
- Procedural programming á ááźáżááŹáá áşááŻááᯠProcedures áĄá áŻáĄááąá¸áá˝áąáĄááźá áş áá˝á˛ááźáŹá¸áááŻááşááŹááŤá áᎠProcedures áá˝áąá Program áá˛áˇ áĄááá Logic áá˝áą ááźá áşááŹááŤáááşá
- Procedures áá˝áąá Input parameters áá˝áąááᯠáááşááśááźáŽá¸ Outputs áá˝áąááᯠááŻááşááąá¸ááŤáááşá Python áážáŹ Functionsá Classesá Modules á áá˛áˇ Procedural programming techniques áá˝áą ááŤáááşááŤáááşá ááŤáá˝áąááᯠChapter 15 áážáŹ áá˝áąá¸áá˝áąá¸áá˝áŹá¸ááŤáááşá
- áᎠModel áážáŹ Computation (áá˝ááşááťááşááźááşá¸) ááᯠProcedures áá˝áąáá˛áˇ Evaluation ááŻááşááąáŹááşááťááşáĄááźá áş áááşáážááşááŤáááşá áĽááᏠ- ááááşá¸ááááşá¸áá áşááŻáá˛áˇ Factorial value áážáŹááŹá áááŻáˇáááŻááş áááşáážááŻááźáąáŹááş Fibonacci number áá˛áááŻáᏠáážáŹááťááşáááş áĄáąáŹááşá Procedures áá˝áąááᯠááŻáśá¸áááŻááşááŤáááş -
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n - 1)
def fibo(n):
if n == 0:
return 0
elif n == 1:
return 1
else:
return fibo(n - 2) + fibo(n - 1)
- Procedure áá áşááŻáá˛áˇ Output value á áá°áˇáá˛áˇ Arguments áá˝áąáĄááąáŤáşáážáŹáᲠáá°áááşááŤáááşá ááŤááźáąáŹááˇáş Procedure áá áşááŻááᯠáá°ááŽáá˛áˇ Value áá˛áˇ ááąáŤáşáááŻááşáááŻááşá¸ áĄááźá˛áááşá¸ áá°ááŽáá˛áˇ Result áááŻáᲠááážáá áąááŤáááşá ááŽáĄááťááşááźáąáŹááˇáş Parallel execution ááŻááşáááŻáˇáĄáá˝ááş áĄáá°á¸áááˇáşááąáŹáşááŤáááşá
- áááş Procedure áááž áááźáŹá¸ Variables áá˝áąáĄááąáŤáş Side effects áááźá áşá áąááŤáá°á¸ (State á áááźáąáŹááşá¸áá˛áᲠááťááşáážáááąááŤáááş)á
- Procedural programming model ááᯠImperative programming paradigm áááŻáˇáááşá¸ ááąáŤáşááźááŤáááşá ááŹááźáąáŹááˇáşáá˛áááŻááąáŹáˇ Expressions (áááŻáˇáááŻááş) Declarations áá˝áąáĄá áŹá¸ Statements (áááŻáˇáááŻááş) Instructions áá˝áąáá˛áˇ Programming ááŻááşáááŻáˇ ááźá áşááŤáááşá
-
Procedural programming á Statement áá áşááźáąáŹááşá¸ááťááşá¸á Ꭰ(Procedure áá áşááŻááťááşá¸á áŽ) áĄááŻááşááŻááşááźáŽá¸ ááźáżááŹááᯠááźáąáážááşá¸ááŤáááşá ááŤááźáąáŹááˇáş áá°áˇáážáŹ áááşáážááşááŹá¸áá˛áˇ Order áĄáááŻááşá¸ Execute ááŻááşáááˇáş áĄáááˇáşáááˇáş ááŤáááşááŤáááşá
-
áá°ááááşá¸ Functions áá˝áąááᯠááŻáśá¸ááąáááˇáş Functional programming áážáŹ ááŻáśá¸áá˛áˇ Mathematical functions áá˝áąáá˛áˇááąáŹáˇ ááá°ááŤáá°á¸á Functional programming á Expressions áá˝áąááᯠáĄáááááŹá¸ááźáŽá¸á Procedural programming áááąáŹáˇ Statements áá˝áąááᯠáĄáááááŹá¸ááŤáááşá
- Statements áá˝áąáážáŹ Values ááážáááŤáá°á¸á áĄá˛ááŽáĄá áŹá¸ áá°áááŻáˇá Conceptual machine áá˛áˇ State áá áşááŻááŻááᯠááźáąáŹááşá¸áá˛ááąá¸áááŻááşááŤáááşá
- áá°ááŽáá˛áˇ Language expression ááźá áşááąáááˇáş Run ááąáá˛áˇ Program áá˛áˇ Global state áĄááąáŤáşáá°áááşááźáŽá¸ áĄááťáááşááá°áááş Values áá˝á˛ááźáŹá¸áá˝áŹá¸áááŻááşááŤáááşá ááąáŹááşááźáŽá¸ Functions áá˝áąá Program áá˛áˇ State ááᯠááźáąáŹááşá¸áá˛áááŻááşááŤáááşá
- Explicit sequence of statements áá˝áąáá˛áˇ State ááᯠááźáąáŹááşá¸áá˛áá˛áˇáĄáá˝ááş Procedural programming model ááᯠImperative programming áááŻáˇ ááąáŤáşááąáˇáážáááźááŹááŤá
1.6.3 Object-oriented Programming Model¶
- áᎠModel áááąáŹáˇ áá˝ááşááťá°ááŹáá˛áážáŹ Objects ááąá¸áá˝áąáá˛áˇ áááşááąáŹááşááŹá¸áá˛áˇ ááášááŹáááşááąá¸áá áşáᯠáááşááŽá¸ááźáŽá¸ Real world (áĄááźááşááąáŹáááźáŽá¸) ááᯠááŻáááŹá¸áᏠááźá áşááŤáááşá
- ááášááááŻááşáá áşááŻáá˛áˇ System áážáŹáááŻáááş VC (ááŤááąáŹáášáááťáŻááş)á Professorsá Non-teaching staffá Studentsá Coursesá Semestersá Examinations á ááŹáá˝áą áĄáŹá¸ááŻáśá¸á Objects áá˝áą ááźá áşáááŻááşááŤáááşá
- Object áááŻááşá¸áážáŹ State (values) áá˛áˇ Behavior (interface/methods) áážáááźááŤáááşá Objects áá˝áąá áá°áááŻáˇááᯠáááşááŽá¸áááŻááşáá˛áˇ Class áĄááąáŤáşáá°áááşááźáŽá¸ State áá˛áˇ Behavior áá˝áąááᯠááážáááŤáááşá
- Objects áá˝áąá áá áşááŻáá˛áˇáá áşáᯠInterface methods áá˝áąááᯠáážááşá¸ááąáŤáşááźáŽá¸ Messages áá˝áą ááąá¸áááŻáˇáᏠáĄááźááşáĄáážááş áááşáá˝ááşááŻááşááąáŹááşááźááŤáááşá
1.6.4 Event-driven Programming Model¶
- áᎠModel áááŻááąáŹáˇ Windowsá Check boxesá Buttonsá Combo-boxesá Scroll barsá Menus á ááŹáá˝áąááŤáá˛áˇ GUI applications áá˝áą ááąá¸ááŹá¸ááŹáážáŹ áĄááťáŹá¸ááŻáśá¸ ááŻáśá¸ááźááŤáááşá
- ááťá˝ááşááąáŹáşáááŻáˇá áᎠElements áá˝áąáá˛áˇ áááá˝áąáˇáááşááśáááŻááşáá˛áˇáĄá፠(áĽááᏠ- Button áážáááşááŹá Scrollbar áá˝á˛ááŹá Menu item áá˝áąá¸ááŹááťááŻá¸)á Events áá˝áą ááźá áşááąáŤáşááŹááźáŽá¸ áᎠElements áá˝áąá Messages áá˝áąááᯠááŻááşáá˝ážááşááąá¸ááŤáááşá áᎠGUI elements áá˝áąáážáŹ Register ááŻááşááŹá¸áá˛áˇ Listener methods áá˝áąá áĄá˛áᎠEvents áá˝áąááᯠááŻáśáˇááźááşááąáŹááşáá˝ááşááŤáááşá
- ááťá˝ááşááąáŹáşáááŻáˇ GUI elements áá˝áąááᯠááŻáśá¸áá˛áˇááŻáśá áśáĄááąáŤáş áá°áááşááźáŽá¸ Events áá˝áąá áááşáĄá ááşáááŻááş ááźá áşáááşáááŻáᏠáĄááąáĄááťáŹ ááźáąáŹáááŻáˇáááá˛áˇáĄáá˝ááş Listeners áá˝áąá Events áá˝áąááᯠAsynchronous manner (áĄá ááşáááŻááşáááŻááşááąáŹ ááŻáśá áś) áá˛áˇ Handle ááŻááşáááŻááşá á˝ááşá¸ áážááááŤáááşá
Exercises¶
[A] Answer the following (áĄáąáŹááşááŤáááŻáˇááᯠááźáąáááŻááŤ):
- (a) Python ááᯠáá°ááŻáśá¸ááťáŹá¸áá˛áˇ áááşáááş (á ) ááŻááᯠááąáŹáşááźááŤá
- (b) Event-driven programming ááᯠáááşááąááŹáážáŹ áĄááá áĄááŻáśá¸ááźáŻááá˛á
- © ááŹááźáąáŹááˇáş Python ááᯠPortable language áááŻáˇ ááąáŤáşááŹáá˛á
- (d) áᎠChapter áážáŹ áá˝áąá¸áá˝áąá¸áá˛áˇáá˛áˇ Programming models áĄááťááŻá¸ááťááŻá¸áá˛áˇ áĄááąá¸áĄááźáŽá¸ááŻáśá¸ Feature áá áşááŻá áŽá ááŹáá˛á
- (e) áĄáąáŹááşááŤáĄááťááşááťáŹá¸áá˛ááž áááşáĄááŹá Python áá˛áˇ Feature áááŻááşááá˛á
- Static typing
- Dynamic typing
- Error numbers ááźááˇáş Run-time error handling ááŻááşááźááşá¸
- Listsá Dictionariesá Tuples áá˛áˇáááŻáˇááąáŹ Containers ááťáŹá¸áĄáá˝ááş Library support ááŤáááşááźááşá¸
- (f) áĄáąáŹááşá፠Programming models áá áşááŻá áŽáĄáá˝ááş áĽááᏠApplication áá áşááŻá Ꭰááąá¸ááŤá
- Functional model
- Procedural model
- Object-oriented model
- Event-driven model
[B] State whether the following statements are True or False (áĄáąáŹááşááŤáĄáááŻááťáŹá¸áááş áážááş/áážáŹá¸ ááąáŹáşááźááŤ):
- (a) Python áááş áĄááá˛áˇáĄááŻáśá¸ááźáŻáááŻááşááźáŽá¸ ááźááˇáşááąáááŻááşáááşá
- (b) Python Program áá áşááŻááşáááşá¸ááᯠááá°ááŽáá˛áˇ OS - Microprocessor áá˝á˛áááşáá˝áąáážáŹ áĄááŻáśá¸ááźáŻáááŻááşáááşá
- © Python Program áá˛áá˝ááş C++ áááŻáˇáááŻááş Java libraries ááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááŻááşáááşá
- (d) Python áá˝ááş Variable á Type ááᯠáááşá¸á áĄááŻáśá¸ááźáŻááŻáśáĄááąáŤáş áá°áááşááźáŽá¸ ááŻáśá¸ááźááşáááşá
- (e) Python ááᯠGUI applications ááťáŹá¸ áááşááąáŹááşáááş áĄááŻáśá¸áááźáŻáááŻááşááŤá
- (f) Python áááş Functionalá Proceduralá Object-oriented áážááˇáş Event-driven programming models ááťáŹá¸ááᯠSupport ááŻááşáááşá
- (g) GUI applications ááťáŹá¸áááş Event-driven programming model ááᯠáĄááźáąááśáááşá
- (h) Functional programming model áááş Objects áĄááťáŹá¸áĄááźáŹá¸ ááťáááşáááşááŻááşááąáŹááşááźááşá¸ ááźá áşáááşá
[C] Match the following pairs (áĄáąáŹááşááŤáááŻáˇááᯠáá˝á˛áááşááŤ):
- (a) Functional programming -> 1. GUI element based interaction
- (b) Event-driven programming -> 2. Interaction of objects
- © Procedural programming -> 3. Statements
- (d) OOP -> 4. Maths-like functions
[D] Fill in the blanks (áá˝ááşáááşááźááˇáşááŤ):
- (a) Functional programming paradigm ááᯠ________ programming model ááŻáááşá¸ ááąáŤáşáááşá
- (b) Procedural programming paradigm ááᯠ________ programming model ááŻáááşá¸ ááąáŤáşáááşá
- © Python ááᯠ_________ á áááşááŽá¸áá˛áˇáááşá
- (d) Python Programmers ááťáŹá¸ááᯠ_________ áᯠááąáŤáşááąáˇáážááááşá