"""Same name
This program uses the same variable name throughout.
Attributes:
    eggs (str): String denoting global variable.
Note:
    Not recommended, but possible.
"""
eggs = 'global'
[docs]def spam() -> None:
    """Spam
    Prints its local variable called eggs.
    Returns:
        None. Prints the local variable.
    """
    eggs = 'spam local'  #: String denoting local variable.
    print(eggs)  # prints 'spam local' 
[docs]def bacon() -> None:
    """Bacon
    Prints its local variable called eggs and also calls :meth:`spam`.
    Returns:
        None. Prints local variables.
    """
    eggs = 'bacon local'  #: String denoting local variable.
    print(eggs)  # prints 'bacon local'
    spam()
    print(eggs)  # prints 'bacon local' 
[docs]def main():
    bacon()
    print(eggs)  # prints 'global' 
if __name__ == '__main__':
    main()