fb pixel

Introduction to Python

  • Profound Academy

    • Status
      • 1
        Input and Output
      • 2
        Variables and Integer Arithmetic
      • 3
        Conditional Operators
      • 4
        Advanced Conditions - Nesting
      • 5
        Types and Variables
      • 6
        Strings
      • 7
        Lists
      • 8
        For Loops
      • 9
        While Loops
      • 10
        continue, break, while...else
      • 11
        String and List methods
      • 12
        Nested Loops
      • 13
        List Comprehension
      • 14
        Tuples and Sets
      • 15
        dict
      • 16
        Functions
      • 17
        Functions 2
      • 18
        Lambda and higher-order functions
      • 19
        Files

  • Variable scope

    When writing functions, looping over variables, or writing if statements, we might have variables that are declared within the body of those blocks. For instance, we might have a total variable declared in an if block:
    hello = 0
    if a == 'hey':
    	total = 10
    	print(total)        # 10
    print(hello, total)   # NameError: name 'total' is not defined
    This means that the variable total was declared in the body of an if statement, but is not accessible outside of it.
    The same holds for variables declared inside loops or functions:
    name = 'Helen'
    def greet():
    	name = 'Bob'
    	print('Hi', name)
    
    greet()                  # Hi Bob
    print('Outside:', name)  # Outside: Helen
    The variable name is declared in the greet() function and its scope is up until the end of the function. Variables declared within some scope are usually referred to as local variables. As soon as the program exits the function, it “forgets” about that variable.
    To access and modify the variables outside of the current scope, we can use the global keyword to tell Python that we would like to treat that variable as global:
    name = 'Helen'
    def greet():
    	global name
    	name = 'Bob'
    	print('Hi', name)
    
    greet()                  # Hi Bob
    print('Outside:', name)  # Outside: Bob
    This time the greet() function modified the global name variable and changed its value to Bob. The same global keyword can be used in if statements or loops to refer to global variables.

    Challenge

    Given the following function, try to find the mistake and fix it. The function should return the sum of values passed to it so far.
    total = 0
    
    def compute_sum(val):
    	total = total + val
    	return val
    
    print(compute_sum(10))
    print(compute_sum(20))
    print(compute_sum(30))
    
    To check your solution you need to sign in
    Sign in to continue