函数只接受2个参数(给定4个)

2024-09-22 16:38:25 发布

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

我尝试在raspberry pi上运行一些python代码,以便模拟不同的传感器。当调用一个函数两次时,我被告知我提供了太多的参数。我将有大约20个不同的函数都调用这个outputPWM函数,但我只是举了两个函数作为例子。在

我这周才开始使用python,所以我不完全确定如何解决这个问题。如果我能在下一次调用之前以某种方式清除参数的outputPWM函数,那么我的代码可能有一些根本性的缺陷

def outputPWM(n1,i):
    num1 = (n1.get()) 
    result = int(num1)
    dutycycle = result 
    print(List[25])
    List[i].start(0)
    List[i].ChangeDutyCycle(dutycycle)
    print("Duty cycle is %d" % dutycycle)
    print("output is on port %d" %i)

def control():
    ControlReturn = tk.StringVar()  
    ControlLabel = tk.Label(master, text="Control Return Air Temperature (Degrees Celcius)").grid(row=0, column=0)  
    ControlResult = tk.Label(master)  
    ControlEntry = tk.Entry(master, textvariable=ControlReturn).grid(row=0,column=2)
    global outputPWM
    outputPWM=partial(outputPWM,ControlReturn,20)  
    buttonCal = tk.Button(master, text="Enter", command=outputPWM).grid(row=0, column=3) 

def display():   
    DisplayReturn = tk.StringVar()  
    DisplayLabel = tk.Label(master,text="Display Return Air Temperature (Degrees Celcius)").grid(row=1, column=0)  
    DisplayEntry = tk.Entry(master, textvariable=DisplayReturn).grid(row=1,column=2)
    global outputPWM
    outputPWM= partial(outputPWM,DisplayReturn,25)
    buttonCal = tk.Button(master, text="Enter", command=outputPWM).grid(row=1, column=3)

display()
control()

我收到的错误是:

^{pr2}$

Tags: 函数textmasterdefcolumnlabeltklist
2条回答

无论在何处创建部分函数,请为其指定全局输出PWM以外的名称:

global outputPWM
outputPWM_ = partial(outputPWM, ControlReturn, 20)
buttonCal = tk.Button(master, text="Enter", command=outputPWM_).grid(row=0, column=3)

此代码执行两次,第一次在display()中执行,第二次在{}中执行(参数略有不同,但这无关紧要)

global outputPWM
outputPWM=partial(outputPWM,ControlReturn,20)

它用添加了2个参数的派生部分函数替换了原始函数。第二轮用从第一轮偏函数派生的另一轮偏函数替换该偏函数。结果函数分两步添加2+2个参数。这就是“takes 2args(4给定)”错误的来源。在

解决方案不是重用相同的名称(请参见https://en.wikipedia.org/wiki/Variable_shadowing),也不是使用global,除非这不是真正必要的。在

相关问题 更多 >