设置传递给函数的字典格式的首选方法?

2024-04-18 16:13:10 发布

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

我将如何格式化:

self.bot = servo.Robot({
        'waist': servo.Servo(3, 90, .02, 0),
        'shoulder': servo.Servo(4, 130, .03, 15),
        'elbow': servo.Servo(5, 110, .02, 19),
        'wrist': servo.Servo(6, 20, .01, 9),
        'claw': servo.Servo(7, 40, .01, 0)
    }, [5, 15, 25])

如果太多了,创建一个变量自助机器人,使其等于自我。机器人(servo\u dict,num\u list),它将dict和list作为参数。你知道吗

我已经研究了PEP8this其他堆栈溢出问题。我会鼓励答案链接到风格指南。。。你知道吗


Tags: self参数bot机器人robotnumdictlist
1条回答
网友
1楼 · 发布于 2024-04-18 16:13:10

使用dict构造函数,您至少可以避免键入一堆引号:

self.bot = servo.Robot(dict(
        waist = servo.Servo(3, 90, .02, 0),
        shoulder = servo.Servo(4, 130, .03, 15),
        elbow = servo.Servo(5, 110, .02, 19),
        wrist = servo.Servo(6, 20, .01, 9),
        claw = servo.Servo(7, 40, .01, 0)
    ), [5, 15, 25])

当然,您也可以这样编写助手函数:

def servos(**kwargs):
    for k, v in kwargs.iteritems():
        kwargs[k] = servo.Servo(*v)
    return kwargs

然后:

self.bot = servo.Robot(servos(
        waist = (3, 90, .02, 0),
        shoulder = (4, 130, .03, 15),
        elbow = (5, 110, .02, 19),
        wrist = (6, 20, .01, 9),
        claw = (7, 40, .01, 0)
    ), [5, 15, 25])

如果要使用不同类型的实例执行大量实例的dict,可以将helper设置为泛型:

def instance_dict(typ, **kwargs):
    for k, v in kwargs.iteritems():
        kwargs[k] = typ(*v)
    return kwargs

# later...
self.bot = servo.Robot(
               instance_dict(servo.Servo,
                   waist = (3, 90, .02, 0),
                   shoulder = (4, 130, .03, 15),
                   elbow = (5, 110, .02, 19),
                   wrist = (6, 20, .01, 9),
                   claw = (7, 40, .01, 0) ),
               [5, 15, 25])

相关问题 更多 >