"Data blocks" syntax specification draft

bartc bc at freeuk.com
Wed May 23 12:29:21 EDT 2018


On 23/05/2018 14:11, Steven D'Aprano wrote:
> On Wed, 23 May 2018 11:10:33 +0100, bartc wrote:
>> (x,)  Tuple of one item
> 
> Incorrect. Yet again, you have failed to do enough testing. No special
> form is required. Only a comma:
> 
> py> x = 1,
> py> type(x)
> <class 'tuple'>
> 
> It isn't enough to test examples which confirm a hypothesis. You need to
> test examples which also refute it, and see if your hypothesis survives
> the challenge.

I use this trailing comma scheme in my own own languages too. The reason 
is simple, it is to distinguish between these two:

   (x)     Ordinary bracketed expression
   (x)     A list (in my case) of one item.

That is not needed for one less item: (), or one more: (x,y). Like 
Python, that trailing comma is not needed for [x] (I don't have a {...} 
constructor).

In both languages, it's just a hack to get around a syntax clash in the 
language.

I don't say however, that the comma is the defining feature of a list.

Comma is used to separate items of /any/ kind of list, and that trailing 
comma is used when there is an ambiguity or a conflict.

-- 
bartc



More information about the Python-list mailing list