Tuple Comprehension ???

Hen Hanna henhanna at gmail.com
Tue Feb 21 20:52:21 EST 2023


On Tuesday, February 21, 2023 at 10:39:54 AM UTC-8, Thomas Passin wrote:
> On 2/21/2023 12:32 PM, Axy via Python-list wrote: 
> > On 21/02/2023 04:13, Hen Hanna wrote: 
> >>
> >>                  (A)   print( max( * LisX )) 
> >>                  (B)   print( sum( * LisX ))        <------- Bad 
> >> syntax !!! 
> >> 
> >> What's most surprising is....     (A)  is ok, and  (B) is not. 
> >> 
> >>             even tho'   max() and sum()  have   (basically)  the same 
> >> syntax...  ( takes one arg ,  whch is a list )
> They **don't** have basically the same signature, though. max() takes 
> either an iterable or two or more numbers. Using max(*list_) presents 
> it with a series of numbers, so that's OK. 
> 
> sum() takes just one iterable (plus an optional start index). Using 
> sum(*list_) presents it with a series of numbers, and that does not 
> match its signature. 
> 
> Check what I said: 
> 
> >>> help(sum) 
> Help on built-in function sum in module builtins:
> sum(iterable, /, start=0) 

> >>> help(max) 

thakns...    i like the use of the word  [signature]


thanks for all the commetns...  i'll try to catch up later.


i think i understand it much better now.

regular  Python  (func-calling)  notation   is like  CL (Common Lisp) funcall.

and        fun( *  args )      notation is like a (compile-time)  macro


   ( max( * X ))               ----macroexpand--->        (apply  max    X)

   ( max( * [1,2,3,4] ))        ----macroexpand--->       (apply  max    '(1 2 3 4) )

and
      Max()   can take many arguments, but
      Sum()  can basically take only 1.




More information about the Python-list mailing list