Python 函数只接受2个参数(给定4个)
我试图在raspberry pi上运行一些python代码,以模拟不同的传感器。当调用一个函数两次时,我被告知我提供了太多的参数。我将有大约20个不同的函数,所有这些函数都调用这个Python 函数只接受2个参数(给定4个),python,function,arguments,Python,Function,Arguments,我试图在raspberry pi上运行一些python代码,以模拟不同的传感器。当调用一个函数两次时,我被告知我提供了太多的参数。我将有大约20个不同的函数,所有这些函数都调用这个outputPWM函数,但我刚刚展示了两个函数作为示例 我这周才开始使用python,所以我不完全确定如何修复这个问题。如果我能在下次调用之前以某种方式清除参数的outputPWM函数,或者我的代码中可能存在一些基本缺陷 def输出脉宽调制(n1,i): num1=(n1.get()) 结果=整数(num1) duty
outputPWM
函数,但我刚刚展示了两个函数作为示例
我这周才开始使用python,所以我不完全确定如何修复这个问题。如果我能在下次调用之前以某种方式清除参数的outputPWM
函数,或者我的代码中可能存在一些基本缺陷
def输出脉宽调制(n1,i):
num1=(n1.get())
结果=整数(num1)
dutycycle=结果
打印(列表[25])
列表[i]。开始(0)
列表[i]。更改dutycycle(dutycycle)
打印(“占空比为%d”%dutycycle)
打印(“输出位于端口%d”%i)
def控件():
ControlReturn=tk.StringVar()
ControlLabel=tk.Label(master,text=“控制回风温度(摄氏度)”).grid(行=0,列=0)
ControlResult=tk.标签(主)
ControlEntry=tk.Entry(主控,textvariable=ControlReturn).grid(行=0,列=2)
全局输出脉宽调制
输出PWM=部分(输出PWM,控制回路,20)
buttonCal=tk.按钮(master,text=“Enter”,command=outputPWM).grid(行=0,列=3)
def display():
DisplayReturn=tk.StringVar()
DisplayLabel=tk.Label(master,text=“显示回风温度(摄氏度)”).grid(行=1,列=0)
DisplayEntry=tk.Entry(master,textvariable=DisplayReturn).grid(行=1,列=2)
全局输出脉宽调制
outputPWM=部分(outputPWM,DisplayReturn,25)
buttonCal=tk.按钮(master,text=“Enter”,command=outputPWM).grid(行=1,列=3)
显示()
控制()
我收到的错误是:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1550, in __call__
return self.func(*args)
TypeError: outputPWM() takes exactly 2 arguments (4 given)
无论您在何处创建分部函数,请为其命名为全局输出PWM以外的名称:
global outputPWM
outputPWM_ = partial(outputPWM, ControlReturn, 20)
buttonCal = tk.Button(master, text="Enter", command=outputPWM_).grid(row=0, column=3)
此代码执行两次,第一次在
display()
中执行,第二次在control()
中执行(参数略有不同,但这并不重要)
它将原始函数替换为派生的部分函数,该函数添加了2个参数。第二轮将该部分函数替换为从第一部分函数派生的另一部分函数。结果函数分两步添加2+2个参数。这就是“获取2个参数(4个给定)”错误的来源
解决方案是不重用相同的名称(请参阅),也不使用global
,除非它不是真的需要
global outputPWM
outputPWM=partial(outputPWM,ControlReturn,20)