On Wed, Feb 12, 2014 at 2:36 AM, Travis Griggs <travisgri...@gmail.com> wrote: > OTOH, I’m not sure I’ve heard the parameters-less functions are a code one? > Is it just loose functions that you’re referring to? As opposed to methods > (which are just bound functions)? I could maybe accept that. But methods with > fewer arguments, and even none, are a desirable thing. There are code smells > that are the opposite in fact, methods with long parameter lists are > generally seen as code smell (“passing a paragraph”). >
'self' is, imo, a parameter. When you call a parameter-less method on an object, it's usually an imperative with a direct object (or sometimes a subject): some_file.close() # "Close some_file" some_list.shuffle() # "Shuffle some_list" some_file.readline() # "Some_file, read in a line" There are times when, for convenience, the object is implicit. print("some text", file=some_file) # Print that text print(file=some_file) # Print a blank line print("some text") # Print that text to sys.stdout print() # Print a blank line to sys.stdout So in that situation, the no-args call does make sense. Of course, this is a call to a function that does take args, but it's accepting all the defaults and providing no additional content. It's quite different to actually define a function that mandates exactly zero arguments, and isn't making use of some form of implicit state (eg a closure, or maybe a module-level function that manipulates module-level state - random.random() would be an example of the latter). Syntactically, Python can't tell the difference between "print()" and "foo()" where foo can never take args. I'd say that a function taking no args is code smell, unless it's obviously taking its state from somewhere else (callbacks, for instance - maybe you pass a bound method, or maybe a closure, but in either case it has implicit state that's not described by function args); but _calling_ with no args isn't as smelly. It's certainly less common than using args, but there are plenty of times when a type is called without args, for instance[1]. ChrisA [1] Okay, that was a really abysmal pun. -- https://mail.python.org/mailman/listinfo/python-list