SlideShare a Scribd company logo
Programming with
Python
                    Week 3
Dept. of Electrical Engineering and Computer Science
Academic Year 2010-2011
Week 2 - Highlights


• Dictionaries:
  {key:value,...}
• Lists:
  [12,4,56,...]
• Tuples:
  (firstname,lastname)=(“Programming”,”Python”)
Programming with Python - Week 3
4.1 The power of
Introspection
• Introspection is code looking at other modules and
  functions in memory as objects, getting information
  about them, and manipulating them.
• Along the way:
  i. you'll define functions with no name,
  ii. you’ll call functions with arguments out of order,
  iii. you’ll reference functions whose names you don't
  even know ahead of time.
Introspection at work

def info(object, spacing=10, collapse=1):
  """Print methods and doc strings.

  Takes module, class, list, dictionary, or string."""
  methodList = [method for method in dir(object) if callable(getattr(object, method))]
  processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)
  print "n".join(["%s %s" %
               (method.ljust(spacing),
                processFunc(str(getattr(object, method).__doc__)))
              for method in methodList])
(setup)


• >>> import apihelper
• >>> apihelper.info.__doc__
  'Print methods and doc strings.n      n Takes module,
  class, list, dictionary, or string.'
4.2 Using Optional and
Named Arguments

• Python allows function arguments to have default values.
• If the function is called without the argument, the
  argument gets its default value.
• Arguments can be specified
  - in any order
  - by using named arguments.
spacing and collapse are
optional arguments.


def info(object, spacing=10, collapse=1):
This looks totally whacked
until you realize that
arguments are simply a
dictionary.
• info(spacing=15, object=odbchelper)
4.3 Some built-in functions


• type
• str
• dir
• callable
type function


• The type function returns the datatype of any arbitrary
  object.
• The possible types are listed in the types module. This is
  useful for helper functions that can handle several types
  of data.
Examples

• >>> type(apihelper)
  <type 'module'>
• >>> type(info)
  <type 'function'>
• >>> type("hello")
  <type 'str'>
• >>> type(1)
  <type 'int'>
types module


• >>> import types
• >>> types.ModuleType == type(apihelper)
  True
str function
• The str coerces data into a string. Every datatype can be
  coerced into a string.
• >>> str(1)
  '1'
• >>> str(apihelper)
  "<module 'apihelper' from '.../Week 3/Code/
  apihelper.py'>"
• >>> str([“mortal”, “kombat”, “go and fight”])
  ask in class..
dir function


• dir returns a list of the attributes and methods
  of any object: modules, functions, strings, lists,
  dictionaries...

  pretty much anything.
Examples


• >>> dir([])
• >>> dir({})
• >>> dir(apihelper)
callable function

• The callable function takes any object and returns
  True if the object can be called,
  or False otherwise.
                                      example class
• Callable objects include
  functions,
  class methods,
  even classes themselves.
callable is beautiful:

• By using the callable function on each of an object's
  attributes, you can determine which attributes you care
  about (methods, functions, classes) and which you want
  to ignore (constants and so on)
  without knowing anything about the object
  ahead of time.

  HINT: Introspection
Examples

• >>> import string
• >>> string.punctuation
   '!"#$%&'()*+,-./:;<=>?@[]^_`{|}~'
• >>> string.join
   <function join at 0x6efaf0>
• >>> callable(string.punctuation)
   False
• >>> ask in class for string.join test..
4.4 Getting object
references with getattr

• You already know that Python functions are
  objects.
• What you don't know is that you can get a reference to
  a function without knowing its name until run-time, by
  using the getattr function.
Examples

• >>> li = [“Larry”, “Brackety”]
• >>> li.pop
• >>> getattr(li, “pop”)
• >>> getattr(li, “append”)(“Junior”)
• >>> li
Ask in class..



• 1. First import the ask_in_class module
  and then;
  2. call the mockfunction using getattr function.
4.4.2 Introspection,
Dispatching



• what is the typical use of getattr-like functionality?
Dispatching..
Dispatcher
Model, View, Controller (MVC)
Model, View, Controller (MVC)

So, what the hell is MVC?
Dispatcher


             Dispatcher
             sitting here
Model, View, Controller (MVC)
Front Controller
4.4.2 Introspection,
Dispatching

• A common usage pattern of getattr is as a dispatcher.
• For example, if you had a program that could output
  data in a variety of different formats, you could define
  separate functions for each output format and use a
  single dispatch function to call the right one.
Example

• For example, let's imagine a program that prints site
  statistics in HTML, XML, and plain text formats.
• The choice of output format could be specified on the
  command line, or stored in a configuration file.
• A statsout module defines three functions,
  output_html, output_xml, and output_text. Then the
  main program defines a single output function, like this:
Example

  import statsout

  def output(data, format="text"):
    output_function = getattr(statsout, "output_%s" % format)
    return output_function(data)
Default value
in case, the method or
attribute is not found.
 import statsout

 def output(data, format="text"):
   output_function = getattr(statsout, "output_%s" % format, statsout.output_text)
   return output_function(data)
Programming with Python - Week 3
4.5 Filtering Lists


• Python has powerful capabilities for mapping lists into
  other lists, via list comprehensions.
• This can be combined with a filtering mechanism, where
  some elements in the list are mapped while others are
  skipped entirely.
Filtering syntax:
[mapping-expression for element in source-list if filter-expression]


         Any element for which the filter expression
         evaluates true will be included in the mapping.

         All other elements are ignored, so they are never
         put through the mapping expression and
         are not included in the output list.
Example



• >>> li = [“aaa”, “aa”, “a”, “b”]
• >>> [elem for elem in li if len(elem) == 1]
Ask in class..


methodList = [method for method in dir(object) if callable(getattr(object, method))]




         interpretation
            please?!?
4.6 The Peculiar Nature
    of and and or


• In Python, and and or perform boolean logic as you
  would expect, but they do not return boolean values;
  instead, they return one of the actual values
  they are comparing.
and

• If all values are true, the last value is returned.
• If not all values are true, then it returns the first false
  value.
• >>> “a” and “b”
  'b'
• >>> “” and “b”
  ''
or



• if any value is true, that value is returned immediately.
• if all values are false, then the last value is returned.
4.7 Using lambda functions

• Python supports an interesting syntax that lets you
  define one-line mini-functions on the fly.
• Borrowed from Lisp, these so-called lambda functions
  can be used anywhere a function is required.
• The entire function can only be one expression.
• A lambda is just an in-line function.
Example

• >>> def f(x):
           return x*2
• >>> f(3)
• >>> g = lambda x: x*2
• >>> g(3)
• >>> (lambda x: x*2)(3)
Remember:

• To generalize, a lambda function is a function that takes
  any number of arguments (including optional arguments)
  and returns the value of a single expression.
• Don't try to squeeze too much into a lambda function; if
  you need something more complex, define a normal
  function instead and make it as long as you want.
• Use them in places where you want to encapsulate
  specific, non-reusable code without littering your code
  with a lot of little one-line functions.
apihelper.py
Happy holidays

More Related Content

What's hot (18)

PPTX
Chapter 14 strings
Praveen M Jigajinni
 
PPTX
Python Datatypes by SujithKumar
Sujith Kumar
 
PPTX
Regular expressions in Python
Sujith Kumar
 
PDF
Arrays in python
moazamali28
 
PDF
Python programming : Strings
Emertxe Information Technologies Pvt Ltd
 
PPTX
Introduction to the basics of Python programming (part 1)
Pedro Rodrigues
 
PDF
Arrays In Python | Python Array Operations | Edureka
Edureka!
 
PPTX
Python language data types
Hoang Nguyen
 
PPTX
Data Structures in Python
Devashish Kumar
 
PPTX
Python dictionary
Mohammed Sikander
 
PPTX
Basic data structures in python
Celine George
 
PPTX
Parts of python programming language
Megha V
 
PDF
Learn 90% of Python in 90 Minutes
Matt Harrison
 
PPTX
Data structures in c#
SivaSankar Gorantla
 
PDF
1. python
PRASHANT OJHA
 
PDF
Python list
Prof. Dr. K. Adisesha
 
PPT
Intro to Functions Python
primeteacher32
 
Chapter 14 strings
Praveen M Jigajinni
 
Python Datatypes by SujithKumar
Sujith Kumar
 
Regular expressions in Python
Sujith Kumar
 
Arrays in python
moazamali28
 
Python programming : Strings
Emertxe Information Technologies Pvt Ltd
 
Introduction to the basics of Python programming (part 1)
Pedro Rodrigues
 
Arrays In Python | Python Array Operations | Edureka
Edureka!
 
Python language data types
Hoang Nguyen
 
Data Structures in Python
Devashish Kumar
 
Python dictionary
Mohammed Sikander
 
Basic data structures in python
Celine George
 
Parts of python programming language
Megha V
 
Learn 90% of Python in 90 Minutes
Matt Harrison
 
Data structures in c#
SivaSankar Gorantla
 
1. python
PRASHANT OJHA
 
Intro to Functions Python
primeteacher32
 

Viewers also liked (8)

KEY
Programming with Python: Week 1
Ahmet Bulut
 
PDF
Centro1807 marpegan tecnologia
Guillermo Barrionuevo
 
KEY
What is open source?
Ahmet Bulut
 
KEY
Virtualization @ Sehir
Ahmet Bulut
 
KEY
Kaihl 2010
Ahmet Bulut
 
PPT
Upstreamed
jfetch01
 
KEY
Startup Execution Models
Ahmet Bulut
 
Programming with Python: Week 1
Ahmet Bulut
 
Centro1807 marpegan tecnologia
Guillermo Barrionuevo
 
What is open source?
Ahmet Bulut
 
Virtualization @ Sehir
Ahmet Bulut
 
Kaihl 2010
Ahmet Bulut
 
Upstreamed
jfetch01
 
Startup Execution Models
Ahmet Bulut
 
Ad

Similar to Programming with Python - Week 3 (20)

PDF
Functional Python Webinar from October 22nd, 2014
Reuven Lerner
 
PDF
justbasics.pdf
DrRajkumarKhatri
 
PDF
Luciano Ramalho - Fluent Python_ Clear, Concise, and Effective Programming-O'...
upendramaurya11
 
PDF
Introduction to Python for Plone developers
Jim Roepcke
 
PDF
Fluent Python Clear Concise And Effective Programming 2nd Edition 2nd Luciano...
miljakecock
 
PPT
Introduction to Python - Part Two
amiable_indian
 
PPTX
Python Basic for Data science enthusiast
tomil53840
 
PDF
advanced python for those who have beginner level experience with python
barmansneha1204
 
PDF
Advanced Python after beginner python for intermediate learners
barmansneha1204
 
PPTX
Python Tutorial Part 1
Haitham El-Ghareeb
 
PDF
Python Foundation – A programmer's introduction to Python concepts & style
Kevlin Henney
 
PDF
Python's magic methods
Reuven Lerner
 
PDF
Presentation pythonpppppppppppppppppppppppppppppppppyyyyyyyyyyyyyyyyyyytttttt...
manikbuma
 
KEY
What's New In Python 2.4
Richard Jones
 
PPTX
Python programming: Anonymous functions, String operations
Megha V
 
PPTX
Functional programming in python
Edward D. Weinberger
 
PDF
Functional programming in python
Edward D. Weinberger
 
PDF
Processing data with Python, using standard library modules you (probably) ne...
gjcross
 
PPTX
Advance python
pulkit agrawal
 
PPTX
Python1_Extracted_PDF_20250404_1054.pptx
ecomwithfaith
 
Functional Python Webinar from October 22nd, 2014
Reuven Lerner
 
justbasics.pdf
DrRajkumarKhatri
 
Luciano Ramalho - Fluent Python_ Clear, Concise, and Effective Programming-O'...
upendramaurya11
 
Introduction to Python for Plone developers
Jim Roepcke
 
Fluent Python Clear Concise And Effective Programming 2nd Edition 2nd Luciano...
miljakecock
 
Introduction to Python - Part Two
amiable_indian
 
Python Basic for Data science enthusiast
tomil53840
 
advanced python for those who have beginner level experience with python
barmansneha1204
 
Advanced Python after beginner python for intermediate learners
barmansneha1204
 
Python Tutorial Part 1
Haitham El-Ghareeb
 
Python Foundation – A programmer's introduction to Python concepts & style
Kevlin Henney
 
Python's magic methods
Reuven Lerner
 
Presentation pythonpppppppppppppppppppppppppppppppppyyyyyyyyyyyyyyyyyyytttttt...
manikbuma
 
What's New In Python 2.4
Richard Jones
 
Python programming: Anonymous functions, String operations
Megha V
 
Functional programming in python
Edward D. Weinberger
 
Functional programming in python
Edward D. Weinberger
 
Processing data with Python, using standard library modules you (probably) ne...
gjcross
 
Advance python
pulkit agrawal
 
Python1_Extracted_PDF_20250404_1054.pptx
ecomwithfaith
 
Ad

More from Ahmet Bulut (12)

PDF
Nose Dive into Apache Spark ML
Ahmet Bulut
 
PDF
Data Economy: Lessons learned and the Road ahead!
Ahmet Bulut
 
PDF
Apache Spark Tutorial
Ahmet Bulut
 
PDF
A Few Tips for the CS Freshmen
Ahmet Bulut
 
PDF
Agile Data Science
Ahmet Bulut
 
PDF
Data Science
Ahmet Bulut
 
PDF
Agile Software Development
Ahmet Bulut
 
KEY
Liselerde tanıtım sunumu
Ahmet Bulut
 
KEY
Ecosystem for Scholarly Work
Ahmet Bulut
 
KEY
I feel dealsy
Ahmet Bulut
 
KEY
Bilisim 2010 @ bura
Ahmet Bulut
 
KEY
ESX Server from VMware
Ahmet Bulut
 
Nose Dive into Apache Spark ML
Ahmet Bulut
 
Data Economy: Lessons learned and the Road ahead!
Ahmet Bulut
 
Apache Spark Tutorial
Ahmet Bulut
 
A Few Tips for the CS Freshmen
Ahmet Bulut
 
Agile Data Science
Ahmet Bulut
 
Data Science
Ahmet Bulut
 
Agile Software Development
Ahmet Bulut
 
Liselerde tanıtım sunumu
Ahmet Bulut
 
Ecosystem for Scholarly Work
Ahmet Bulut
 
I feel dealsy
Ahmet Bulut
 
Bilisim 2010 @ bura
Ahmet Bulut
 
ESX Server from VMware
Ahmet Bulut
 

Recently uploaded (20)

PPTX
Stereochemistry-Optical Isomerism in organic compoundsptx
Tarannum Nadaf-Mansuri
 
PPTX
Universal immunization Programme (UIP).pptx
Vishal Chanalia
 
PDF
Geographical Diversity of India 100 Mcq.pdf/ 7th class new ncert /Social/Samy...
Sandeep Swamy
 
PDF
Governor Josh Stein letter to NC delegation of U.S. House
Mebane Rash
 
PPTX
PPT-Q1-WK-3-ENGLISH Revised Matatag Grade 3.pptx
reijhongidayawan02
 
PDF
Stokey: A Jewish Village by Rachel Kolsky
History of Stoke Newington
 
PDF
Biological Bilingual Glossary Hindi and English Medium
World of Wisdom
 
PPTX
QUARTER 1 WEEK 2 PLOT, POV AND CONFLICTS
KynaParas
 
PPTX
How to Create a PDF Report in Odoo 18 - Odoo Slides
Celine George
 
PPTX
PPT-Q1-WEEK-3-SCIENCE-ERevised Matatag Grade 3.pptx
reijhongidayawan02
 
PDF
The Constitution Review Committee (CRC) has released an updated schedule for ...
nservice241
 
PPT
Talk on Critical Theory, Part One, Philosophy of Social Sciences
Soraj Hongladarom
 
PDF
0725.WHITEPAPER-UNIQUEWAYSOFPROTOTYPINGANDUXNOW.pdf
Thomas GIRARD, MA, CDP
 
PDF
Dimensions of Societal Planning in Commonism
StefanMz
 
PPTX
Controller Request and Response in Odoo18
Celine George
 
PPTX
PATIENT ASSIGNMENTS AND NURSING CARE RESPONSIBILITIES.pptx
PRADEEP ABOTHU
 
PDF
Knee Extensor Mechanism Injuries - Orthopedic Radiologic Imaging
Sean M. Fox
 
PDF
Women's Health: Essential Tips for Every Stage.pdf
Iftikhar Ahmed
 
PPTX
care of patient with elimination needs.pptx
Rekhanjali Gupta
 
PPTX
Neurodivergent Friendly Schools - Slides from training session
Pooky Knightsmith
 
Stereochemistry-Optical Isomerism in organic compoundsptx
Tarannum Nadaf-Mansuri
 
Universal immunization Programme (UIP).pptx
Vishal Chanalia
 
Geographical Diversity of India 100 Mcq.pdf/ 7th class new ncert /Social/Samy...
Sandeep Swamy
 
Governor Josh Stein letter to NC delegation of U.S. House
Mebane Rash
 
PPT-Q1-WK-3-ENGLISH Revised Matatag Grade 3.pptx
reijhongidayawan02
 
Stokey: A Jewish Village by Rachel Kolsky
History of Stoke Newington
 
Biological Bilingual Glossary Hindi and English Medium
World of Wisdom
 
QUARTER 1 WEEK 2 PLOT, POV AND CONFLICTS
KynaParas
 
How to Create a PDF Report in Odoo 18 - Odoo Slides
Celine George
 
PPT-Q1-WEEK-3-SCIENCE-ERevised Matatag Grade 3.pptx
reijhongidayawan02
 
The Constitution Review Committee (CRC) has released an updated schedule for ...
nservice241
 
Talk on Critical Theory, Part One, Philosophy of Social Sciences
Soraj Hongladarom
 
0725.WHITEPAPER-UNIQUEWAYSOFPROTOTYPINGANDUXNOW.pdf
Thomas GIRARD, MA, CDP
 
Dimensions of Societal Planning in Commonism
StefanMz
 
Controller Request and Response in Odoo18
Celine George
 
PATIENT ASSIGNMENTS AND NURSING CARE RESPONSIBILITIES.pptx
PRADEEP ABOTHU
 
Knee Extensor Mechanism Injuries - Orthopedic Radiologic Imaging
Sean M. Fox
 
Women's Health: Essential Tips for Every Stage.pdf
Iftikhar Ahmed
 
care of patient with elimination needs.pptx
Rekhanjali Gupta
 
Neurodivergent Friendly Schools - Slides from training session
Pooky Knightsmith
 

Programming with Python - Week 3

  • 1. Programming with Python Week 3 Dept. of Electrical Engineering and Computer Science Academic Year 2010-2011
  • 2. Week 2 - Highlights • Dictionaries: {key:value,...} • Lists: [12,4,56,...] • Tuples: (firstname,lastname)=(“Programming”,”Python”)
  • 4. 4.1 The power of Introspection • Introspection is code looking at other modules and functions in memory as objects, getting information about them, and manipulating them. • Along the way: i. you'll define functions with no name, ii. you’ll call functions with arguments out of order, iii. you’ll reference functions whose names you don't even know ahead of time.
  • 5. Introspection at work def info(object, spacing=10, collapse=1): """Print methods and doc strings. Takes module, class, list, dictionary, or string.""" methodList = [method for method in dir(object) if callable(getattr(object, method))] processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s) print "n".join(["%s %s" % (method.ljust(spacing), processFunc(str(getattr(object, method).__doc__))) for method in methodList])
  • 6. (setup) • >>> import apihelper • >>> apihelper.info.__doc__ 'Print methods and doc strings.n n Takes module, class, list, dictionary, or string.'
  • 7. 4.2 Using Optional and Named Arguments • Python allows function arguments to have default values. • If the function is called without the argument, the argument gets its default value. • Arguments can be specified - in any order - by using named arguments.
  • 8. spacing and collapse are optional arguments. def info(object, spacing=10, collapse=1):
  • 9. This looks totally whacked until you realize that arguments are simply a dictionary. • info(spacing=15, object=odbchelper)
  • 10. 4.3 Some built-in functions • type • str • dir • callable
  • 11. type function • The type function returns the datatype of any arbitrary object. • The possible types are listed in the types module. This is useful for helper functions that can handle several types of data.
  • 12. Examples • >>> type(apihelper) <type 'module'> • >>> type(info) <type 'function'> • >>> type("hello") <type 'str'> • >>> type(1) <type 'int'>
  • 13. types module • >>> import types • >>> types.ModuleType == type(apihelper) True
  • 14. str function • The str coerces data into a string. Every datatype can be coerced into a string. • >>> str(1) '1' • >>> str(apihelper) "<module 'apihelper' from '.../Week 3/Code/ apihelper.py'>" • >>> str([“mortal”, “kombat”, “go and fight”]) ask in class..
  • 15. dir function • dir returns a list of the attributes and methods of any object: modules, functions, strings, lists, dictionaries... pretty much anything.
  • 16. Examples • >>> dir([]) • >>> dir({}) • >>> dir(apihelper)
  • 17. callable function • The callable function takes any object and returns True if the object can be called, or False otherwise. example class • Callable objects include functions, class methods, even classes themselves.
  • 18. callable is beautiful: • By using the callable function on each of an object's attributes, you can determine which attributes you care about (methods, functions, classes) and which you want to ignore (constants and so on) without knowing anything about the object ahead of time. HINT: Introspection
  • 19. Examples • >>> import string • >>> string.punctuation '!"#$%&'()*+,-./:;<=>?@[]^_`{|}~' • >>> string.join <function join at 0x6efaf0> • >>> callable(string.punctuation) False • >>> ask in class for string.join test..
  • 20. 4.4 Getting object references with getattr • You already know that Python functions are objects. • What you don't know is that you can get a reference to a function without knowing its name until run-time, by using the getattr function.
  • 21. Examples • >>> li = [“Larry”, “Brackety”] • >>> li.pop • >>> getattr(li, “pop”) • >>> getattr(li, “append”)(“Junior”) • >>> li
  • 22. Ask in class.. • 1. First import the ask_in_class module and then; 2. call the mockfunction using getattr function.
  • 23. 4.4.2 Introspection, Dispatching • what is the typical use of getattr-like functionality?
  • 27. Model, View, Controller (MVC) So, what the hell is MVC?
  • 28. Dispatcher Dispatcher sitting here
  • 31. 4.4.2 Introspection, Dispatching • A common usage pattern of getattr is as a dispatcher. • For example, if you had a program that could output data in a variety of different formats, you could define separate functions for each output format and use a single dispatch function to call the right one.
  • 32. Example • For example, let's imagine a program that prints site statistics in HTML, XML, and plain text formats. • The choice of output format could be specified on the command line, or stored in a configuration file. • A statsout module defines three functions, output_html, output_xml, and output_text. Then the main program defines a single output function, like this:
  • 33. Example import statsout def output(data, format="text"): output_function = getattr(statsout, "output_%s" % format) return output_function(data)
  • 34. Default value in case, the method or attribute is not found. import statsout def output(data, format="text"): output_function = getattr(statsout, "output_%s" % format, statsout.output_text) return output_function(data)
  • 36. 4.5 Filtering Lists • Python has powerful capabilities for mapping lists into other lists, via list comprehensions. • This can be combined with a filtering mechanism, where some elements in the list are mapped while others are skipped entirely.
  • 37. Filtering syntax: [mapping-expression for element in source-list if filter-expression] Any element for which the filter expression evaluates true will be included in the mapping. All other elements are ignored, so they are never put through the mapping expression and are not included in the output list.
  • 38. Example • >>> li = [“aaa”, “aa”, “a”, “b”] • >>> [elem for elem in li if len(elem) == 1]
  • 39. Ask in class.. methodList = [method for method in dir(object) if callable(getattr(object, method))] interpretation please?!?
  • 40. 4.6 The Peculiar Nature of and and or • In Python, and and or perform boolean logic as you would expect, but they do not return boolean values; instead, they return one of the actual values they are comparing.
  • 41. and • If all values are true, the last value is returned. • If not all values are true, then it returns the first false value. • >>> “a” and “b” 'b' • >>> “” and “b” ''
  • 42. or • if any value is true, that value is returned immediately. • if all values are false, then the last value is returned.
  • 43. 4.7 Using lambda functions • Python supports an interesting syntax that lets you define one-line mini-functions on the fly. • Borrowed from Lisp, these so-called lambda functions can be used anywhere a function is required. • The entire function can only be one expression. • A lambda is just an in-line function.
  • 44. Example • >>> def f(x): return x*2 • >>> f(3) • >>> g = lambda x: x*2 • >>> g(3) • >>> (lambda x: x*2)(3)
  • 45. Remember: • To generalize, a lambda function is a function that takes any number of arguments (including optional arguments) and returns the value of a single expression. • Don't try to squeeze too much into a lambda function; if you need something more complex, define a normal function instead and make it as long as you want. • Use them in places where you want to encapsulate specific, non-reusable code without littering your code with a lot of little one-line functions.

Editor's Notes