When you do stuff.pop() you modify the object stuff. When you do num = num + 1 you don't modify num, you just create a new object and assign it to the variable num. If num were a list, the result would be exactly the same:
def addone(num):
num = num + [1]
print "function: added 1, now", num
number = [5]
print "Before:", number
addone(number)
print "After:", number
# Before: [5]
# function: added 1, now [5, 1]
# After: [5]