3.10: Fruitful functions and void functions

Think Python 2ed. · LibreTexts

0%

Contents

    Text

    Size
    100%
    Theme
    Typeface
    Line length
    Spacing

    From LibreTexts, under CC BY-NC 3.0, as the source states it; its equations are written in TeX, which the PDF shows typeset. This page at LibreTexts.

    3.10: Fruitful functions and void functions

    Some of the functions we have used, such as the math functions, return results; for lack of a better name, I call them fruitful functions. Other functions, like print_twice, perform an action but don’t return a value. They are called void functions.

    When you call a fruitful function, you almost always want to do something with the result; for example, you might assign it to a variable or use it as part of an expression:

    x = math.cos(radians)
    golden = (math.sqrt(5) + 1) / 2
    

    When you call a function in interactive mode, Python displays the result:

    >>> math.sqrt(5)
    2.2360679774997898
    

    But in a script, if you call a fruitful function all by itself, the return value is lost forever!

    math.sqrt(5)
    

    This script computes the square root of 5, but since it doesn’t store or display the result, it is not very useful.

    Void functions might display something on the screen or have some other effect, but they don’t have a return value. If you assign the result to a variable, you get a special value called None.

    >>> result = print_twice('Bing')
    Bing
    Bing
    >>> print(result)
    None
    

    The value None is not the same as the string 'None'. It is a special value that has its own type:

    >>> type(None)
    <class 'NoneType'>
    

    The functions we have written so far are all void. We will start writing fruitful functions in a few chapters.


    This page titled 3.10: Fruitful functions and void functions was last modified on Tue, 01 Dec 2020 03:31:06 GMT and is shared under a CC BY-NC 3.0 license and was authored, remixed, and/or curated by Allen B. Downey (Green Tea Press) via source content that was edited to the style and standards of the LibreTexts platform.