4 ms·
> print(*more_numbers, sep=', ') This alone makes me appreciate print as a function in py3.
by cpsempek 8y ago
> print(*more_numbers, sep=', ')
This alone makes me appreciate print as a function in py3.
- sooheon 8y agoNow how much nicer would it be if even more things were functions, rather than special syntax like here? This can be done with an `apply`.
- nemetroid 8y agoI think the star syntax is a lot nicer than `apply`. Python actually had an `apply` builtin, but it was deprecated in Python 2.3.
- sooheon 8y agoApply, and first class / higher order functions in general are good in languages where they compose well. Python's * won't compose well.
- int_19h 8y agoHow wouldn't * not compose as well as apply?
- syrrim 8y agodef apply(f, a): return f(*a)
- quietbritishjim 8y agoTo add a small footnote to the existing replies to this comment: A related, but slightly different, function in the `functools` module (part of the Python standard library) is the `partial` function. It is like apply() but returns a function instead of calling the function and return its return value: f1 = partial(f, 1, 2) f2 = partial(f1, 3, 4) f2(5, 6) # equivalent to f(1, 2, 3, 4, 5, 6) It also supports kwargs.
- maybecorrect 8y agoIt is a function - print() is being called as a function, taking a number of positional, arguments followed by named argument. I don't think you're correct about this being special syntax, except for the '*' is being used to expand a list into the positional arguments.
- mclehman 8y agoI believe they meant replacing the special * syntax with a use of apply so that there was no special syntax to achieve that functionality at all.
- wodenokoto 8y agoI'm not the sharpest functional programmer in the cohort, but isn't `apply` a parallelizable for-loop? apply(l, print) is the same as for el in l: print(el) which is a number of print statements, rather than 1 print statement with a number of arguments.