Pythonic参数传递

2024-05-14 23:45:28 发布

您现在位置:Python中文网/ 问答频道 /正文

这两个方法调用中哪一个被认为是最具python特性的?你知道吗

some_method(that_has, very_many, aurguments=None, of_different=None, 
            kinds=u'', and_importance=None, spanning=u'multple lines'):

或者

method_args = {
   u'first_arg' : that_has,
   u'second_arg' : very_many,
   u'arguments' : None,
   u'of_different' : None,
   u'kinds' : u'',
   u'and_importance' : None,
   u'spanning' : u'multiple lines'
}
some_method(**method_args)

就我个人而言,我更喜欢第二种方法,当第一种方法跨越两条以上的线和第一种方法,如果它适合在一条线,两条线我不太确定。你知道吗

编辑:传递的参数可能不像我的示例中那样短而静态,更可能是很长的名称。你知道吗


Tags: andof方法nonethatsomemethodmany
2条回答

如果只是这样一个静态调用,上面的内容更像是python。如果你想(有些人真的这么做了),你可以这样排列它:

some_method(
    that_has,
    very_many,
    arguments=None,
    of_different=None, 
    kinds=u'',
    and_importance=None,
    spanning=u'multple lines'
)

另请注意,第二种方法甚至不起作用-它只传递关键字参数(甚至可能不是关键字的参数)。你知道吗

更具可读性的。你知道吗

一旦函数的参数达到一定的复杂程度,就有必要定义一个封装这些参数的类:

args = SomeMethodArgs() # custom args class for the some_method func

args.x = 2
args.y = "a string"
args.z = None
args.items = [a, b, c]

some_method(args)

这样做的好处是,您可以稍后在一个地方修改参数或签名的数量,而附带影响最小。你知道吗

相关问题 更多 >

    热门问题