>>> def myFunc(*args, **kwargs):
... # This function accepts arbitary arguments:
... # Keywords arguments are available in the kwargs dict;
... # Regular arguments are in the args tuple.
... # (This behaviour is dictated by the stars, not by
... # the name of the formal parameters.)
... print args, kwargs
...
>>> myFunc()
() {}
>>> myFunc(2)
(2,) {}
>>> myFunc(2,5)
(2, 5) {}
>>> myFunc(b = 3)
() {'b': 3}
>>> import dis
>>> dis.dis(myFunc)
1 0 LOAD_FAST 0 (args)
3 PRINT_ITEM
4 LOAD_FAST 1 (kwargs)
7 PRINT_ITEM
8 PRINT_NEWLINE
9 LOAD_CONST 0 (None)
12 RETURN_VALUE
而要真正回答这个问题:不,我不相信还有别的办法。
主要原因很简单:C python是基于堆栈的。不需要参数的函数不会在堆栈上为其分配空间(myFunc,而是将它们放在位置0和1)。(请参阅注释)
另外一点是,否则如何访问参数?