[Python-Dev] Call for prudence about PEP-572
Chris Angelico
rosuav at gmail.com
Sun Jul 8 13:23:50 EDT 2018
More information about the Python-Dev mailing list
Sun Jul 8 13:23:50 EDT 2018
- Previous message (by thread): [Python-Dev] Call for prudence about PEP-572
- Next message (by thread): [Python-Dev] Call for prudence about PEP-572
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Mon, Jul 9, 2018 at 3:14 AM, Giampaolo Rodola' <g.rodola at gmail.com> wrote: > > > On Sun, Jul 8, 2018 at 6:45 PM Steve Holden <steve at holdenweb.com> wrote: >> >> On Sun, Jul 8, 2018 at 10:41 AM, Giampaolo Rodola' <g.rodola at gmail.com> >> wrote: >>> >>> [...] >>> I find that (space between the parentheses of a function call statement) >>> too unnatural as a place where to put an assignment. It is not even >>> "guarded" by a keyword like "if" or "while" which can help as indicators >>> that an assignment may occur. Also, I think it's way too easy to confuse it >>> with a keyword argument: >>> >>> >>> foo(x = 1) # keyword arg >>> >>> foo(x := 1) # assignment + value passing >>> [...] >> >> >> But the PEP 8 spellings are >> >> foo(x=1) >> >> and >> >> f(x := 1). >> >> The extra spacing makes it obvious that this isn't a regular named >> argument. > > > What if the author of the code I'm reading didn't respect PEP-8? I don't > think it's fair to invoke PEP-8 as a counter-measure to obviate a syntax > which can clearly be mistaken with something else simply by omitting 2 > spaces. Not to mention that I don't see why anyone would want to declare a > variable in there in the first place. > It's not about why someone would want to assign inside a function call. It's about why it should be forbidden. Perhaps nobody has a good reason to use THlS_OBJECT as a variable name, and it's potentially very confusing; but should the grammar of Python forbid it? No. Because there is no value in forbidding it. Python's grammar has a number of weird edge cases due to necessity (for instance, "for x in a if cond else b:" works, but not in a comprehension), and when there's an actual conflict, sure, you can say "but nobody would ever want to do that, so we'll forbid it". In this case, there is no conflict. ChrisA
- Previous message (by thread): [Python-Dev] Call for prudence about PEP-572
- Next message (by thread): [Python-Dev] Call for prudence about PEP-572
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-Dev mailing list