The “do something” part above would work exactly the same regardless of how you declare the function. Which begs the question, which should you use? In the object-oriented world we were used to objects doing things, and in that context d.quack() may seem more intuitive or familiar than quack(d) because it “reads better”. After all, one could argue that the former is a duck quacking, but the latter