Почему для этой функции python даются 2 аргумента?

from ev3dev.ev3 import *

from time import sleep


ml = LargeMotor('outB')
mr = LargeMotor('outC')
ts = TouchSensor()
cs = ColorSensor()
us = UltrasonicSensor()

cs.mode = 'COL-REFLECT'
us.mode = 'US-DIST-CM'


def motorenStop(stopaction):
    ml.stop(stop_action=stopaction)
    mr.stop(stop_action=stopaction)


def motorenRun(speed_sp, time_sp = None, stop_action = None):
    if time_sp is not None and stop_action is not None:
        ml.run_timed(time_sp=time_sp, speed_sp=speed_sp, stop_action=stop_action)
        mr.run_timed(time_sp=time_sp, speed_sp=speed_sp, stop_action=stop_action)
    else:
        ml.run_forever(speed_sp)
        mr.run_forever(speed_sp)




def drive():

    while 1==1:
        motorenRun(300)

Выход:

Traceback (most recent call last):
  File "/home/robot/helloworld/main.py", line 21, in <module>
    drive()
  File "/home/robot/helloworld/drive.py", line 35, in drive
    motorenRun(300)
  File "/home/robot/helloworld/drive.py", line 26, in motorenRun
    ml.run_forever(speed_sp)
TypeError: run_forever() takes 1 positional argument but 2 were given

Я пытался запустить свой EV3 с python, теперь у меня возникла проблема, что функции передаются 2 аргумента. Я искал свою проблему, но не нашел решения. Как я могу исправить эту ошибку?


person GhettoReptiloid    schedule 24.12.2019    source источник


Ответы (1)


run_forever — это функция, которая по умолчанию не принимает никаких аргументов. Однако вы заметите, что у него есть аргумент **kwargs. Это означает, что вы можете передать необязательные именованные параметры следующим образом:

ml.run_forever(speed_sp=speed_sp)

Попробуйте посмотреть, работает ли это.

person TerryA    schedule 24.12.2019