On Mon, 07 Apr 2014 20:33:31 -0500, Mark H Harris wrote: > I have another question for y'all, is a function (particularly a > generator) a noun or a verb?
Mu. http://en.wikipedia.org/wiki/Mu_%28negative%29#.22Unasking.22_the_question Nouns and verbs are concepts from a completely different magisteria, namely linguistics. Functions are no more a noun (or verb) than list comprehensions are adjectives. What we can say is that in Python, functions are objects, and being objects, they are also values, like ints, strings, lists, floats, etc. Even in languages where functions are not first-class values, e.g. Pascal, we treat them as abstract things rather than actions, so linguistically we use functions as nouns. E.g. given a function "spam", we might say "pass the argument to spam" rather than "spam that argument". We do that even when the function is named for a verb: "pass the argument to execute". (English is great for this: we can use nearly every verb as a noun, if the context is understood.) > Does a function (or generator) 'do' > something (based on name and parms) or does it 'return' something based > on name and parms? Both. Returning something is just a special case of doing. Monkeys climb, fish swim, cows moo, functions return, and programmers drink caffeinated drinks. > Based on name and parms should a function (or > generator) function as a noun, or function as a verb, or *both*? --or, > are Classes nouns only, and all functions *are* verbs only? I *think* you are referring to naming conventions here. Functions which are intended to be used as a procedure, that is, only for their side-effects, should be named using a verb: time.sleep dict.update list.append Spam.make_yummy_foodstuffs Functions which are intended to return a value may be named as verbs: run eval sorted print or as nouns: int str dict namedtuple coordinate array (the first three are now types, i.e. classes, but early in Python they were functions). Classes represent things (possible abstract things), and so should be named as nouns, not verbs: Runner not Run or Do_Run Decimal not Decimalize or Do_Decimal float not Make_Floating_Point Generator functions are called for their value: a generator function returns a generator, and a generator is a value: def make_generator(n): for i in range(n): yield "something" gen = make_generator(23) Since the generator object itself is a thing, it should be named with a noun. Since the generator function is also a thing, and it is called for it's return value, not a side-effect, it could be named as a verb or a noun, whichever you prefer, or makes sense in context. Are there "things" in Python that aren't values? No. But there is syntax that represents verbs: import this del that for <something> [do]: this while condition [do]: that There's no such thing in Python as an "Import object" or a "DelType value", but Python provides verbs for those commands. -- Steven -- https://mail.python.org/mailman/listinfo/python-list