nerd

Function

Summary

Example

Function defenition

def my_function():
    print('My function does nothing')

# call it
my_function()  # My function does nothing

Function defenition with an args

def sum_two(x, y):
    return x + y


sum_two(x=2, y=2)  # 4
result = sum_two(x=2, y=2)
print(result)  # 4

result = sum_two(2, 2)  # 4

By default function returns None

def sum_two(x, y):
    print(x + y)


result = sum_two(2, 2)
print(result)
# 4
# None

Function defenition with default arg

def sum_two(x, y=4):
    return x + y


sum_two(x=2)  # 6

Loop inside function

def sum_elements(sequence):
    result = 0
    for element in sequence:
        result += element
    return result


result = sum_elements([1, 2, 3, 4])  # 10

Function scope

# Example 1
result = 1
def show_result():
    print(result)


show_result()  # 1

# Example 2
result = 1
def show_result():
    result = 2
    print(result)


show_result()  # 2
print(result)  # 1

Gotchas

Function defenition with default mutable arg

def append(value, sequence=[]):
    print(f'Appending value: {value} to sequence: {sequence}')
    sequence.append(value)
    print(f'sequence: {sequence}')
    return sequence


append(3, [1, 2])
# Appending value: 3 to sequence: [1, 2]
# sequence: [1, 2, 3]

append(1)
# Appending value: 1 to sequence: []...
# sequence: [1]

append(2)
# Appending value: 2 to sequence: [1]
# sequence: [1, 2]

append(3)
# Appending value: 3 to sequence: [1, 2]
# sequence: [1, 2, 3]

Reference

Link