Здесь есть две разные концепции: назначения и функции.
Он хранит значение чего-то справа от присваивание внутри переменной слева от присваивания, которое затем может быть использовано позже.
Она разрешает делать что угодно и может возвращать значение (или нет) после этого.
Ваша функция f1 напечатает 'привет' и затем ничего не возвращает. Ваша функция f2 ничего не делает и возвращает "мир". Затем у вас есть переменная f1 и f2 с тем же именем, что и у функции (это сбивает с толку), которая содержит то, что возвращается f1 и f2. Если мы удалим функции, которые вы кодируете, сделайте это:
print 'hello'
f1=None # Nothing in 'Python'
f2='world'