(original) (raw)
On 01/21/2014 12:59 AM, Serhiy
Storchaka wrote:
21.01.14 04:44, Nikolaus Rath написав(ла):
Serhiy Storchaka writes:
20.01.14 06:19, Nikolaus Rath написав(ла):
This works if the user calls time.gmtime(None), but it fails for
time.gmtime(). It seems that in that case my C converter function is
never called.
What's the trick that I'm missing?
/\*\[clinic input\]
time.gmtime
\[
seconds: time\_t
\]
/
Ahh, interesting. So this works, but now the C default is evaluated even
if the user passed an argument (so that answers my question about
decreased performance in the other subthread). The generated code is:
Don't use time(NULL) as C default. Instead check group\_right\_1 and call time(NULL) explicitly.
While this "trick" works, it abuses optional groups. Optional groups are intended as a last resort, for semantics that can't be expressed any other way. The semantics of time.gmtime() are very easily expressed using normal Python syntax. Please don't use optional groups here.
/arry