On Thu, Oct 13, 2016 at 10:37:35AM +0200, Sven R. Kunze wrote: > On 13.10.2016 01:29, Steven D'Aprano wrote: > >On Wed, Oct 12, 2016 at 06:32:12PM +0200, Sven R. Kunze wrote: > >> > >>So, my reasoning would tell me: where have I seen * so far? *args and > >>**kwargs! > >And multiplication. > > Multiplication with only a single argument? Come on.
You didn't say anything about a single argument. Your exact words are shown above: "where have I seen * so far?". I'm pretty sure you've seen * used for multiplication. I also could have mentioned regexes, globs, and exponentiation. I cannot respond to your intended meaning, only to what you actually write. Don't blame the reader if you failed to communicate clearly and were misunderstood. [...] > About the list constructor: we construct a list by writing [a,b,c] or by > writing [b for b in bs]. The end result is a list I construct lists using all sorts of ways: list(argument) map(func, sequence) zip(a, b) file.readlines() dict.items() os.listdir('.') sorted(values) and so on. Should I call them all "list constructors" just because they return a list? No, I don't think so. Constructor has a specific meaning, and these are not all constructors -- and neither are list comprehensions. > and that matters from > the end developer's point of view, no matter how fancy words you choose > for it. These "fancy words" that you dismiss are necessary technical terms. Precision in language is something we should aim for, not dismiss as unimportant. List comprehensions and list displays have different names, not to show off our knowledge of "fancy terms", but because they are different things which just happen to both return lists. Neither of them are what is commonly called a constructor. List displays are, in some senses, like a literal; list comprehensions are not, and are better understood as list builders, a process which builds a list. Emphasis should be on the *process* part: a comprehension is syntactic sugar for building a list using for-loop, not for a list display or list constructor. The bottom line is that when you see a comprehension (list, set or dict) or a generator expression, you shouldn't think of list displays, but of a for-loop. That's one of the reasons why the analogy with argument unpacking fails: it doesn't match what comprehensions *actually* are. -- Steve _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/