远航的恒星 2023-01-31 19:27 采纳率: 66.7%
浏览 38
已结题

python TypeError

在调用函数时,函数的参数显示多重参数
TypeError: tengxun() got multiple values for argument 'addr'
def tengxun(addr,self):
        addr1=self.addr
        # addr=self.comboBox.currentText()+self.comboBox_2.currentText()+self.lineEdit.text()
        url = "https://apis.map.qq.com/jsapi?"   #腾讯地图API接口
        para = {
            "qt": "geoc",
            "addr":addr1, #传入地址参数
            "output": "json",
            "key": "S7RBZ-RL2E 3-7IP3C-364T2-SPW77-3QFG3", #即腾讯地图API的key
            "pf":"jsapi",
            "ref":"jsapi"
        }
        req = requests.get(url,para) #请求数据
        req = req.json() #转为json格式
        #print(req)
        m = req["detail"]
        g = f"{m['pointx']},{m['pointy']}" #解析到经纬度数据
        print(g)
        return g
        df1 = pd.read_excel("result.xlsx")
        df2=df1['经纬度'].split(",")
        df3=df1["名称"]
        h=g.split(",")
        if df2[0]>h[0]:
            if df2[1]>h[1]:
                dis=(df2[0]-h[0])+(df2[1]-h[1])
                self.dis={"name":df3,"dis":dis}
                
            else:
                dis=(df2[0]-h[0])+(h[1]-df2[1])
                self.dis={"name":df3,"dis":dis}
        else:
            if df2[1]<h[1]:
                dis=(h[0]-df2[0])+(h[1]-df2[1])
                self.dis={"name":df3,"dis":dis}
            else:
                dis=(h[0]-df2[0])+(df2[1]-h[1])
                self.dis={"name":df3,"dis":dis}
        first=min(self.dis["dis"])


        
    def start (self,addr):
        add1=""
        self.addr=self.comboBox.currentText()+self.comboBox_2.currentText()+self.lineEdit.text()
        print(add1)
        addr2="上海市闵行区漕宝路3138号"
        self.addr=add1
        self.tengxun(addr=addr2)

Traceback (most recent call last):

File "e:\python\项目\停车管理\停车排序管理.py", line 199, in start
self.tengxun(addr=self.addr,self="")
TypeError: tengxun() got multiple values for argument 'addr'

我将tengxun这个函数的代码段复制到另一个文件里,在调用时直接将addr这个参数的值设为上海市闵行区漕宝路3138号,就不会报错
希望各位能够帮我解决这个问题,我的项目这两天要申报了,急,谢谢!!
  • 写回答

2条回答 默认 最新

  • 社区专家-Monster-XH 2023-01-31 19:38
    关注

    回答有用,就讨个赏,再采纳一下。
    出错的原因是在调用tengxun()函数时,给addr参数传了两个值,一个是 addr=addr2,一个是 self="",但是函数只有两个参数addr和self,这两个参数都被赋予了值,所以报错了。

    修改方法:在调用tengxun()函数时,仅仅给addr参数赋值即可,不要再给self参数赋值,代码如下:

    
    def start (self,addr):
        add1=""
        self.addr=self.comboBox.currentText()+self.comboBox_2.currentText()+self.lineEdit.text()
        print(add1)
        addr2="上海市闵行区漕宝路3138号"
        self.addr=add1
        self.tengxun(addr2)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
    1人已打赏
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月8日
  • 已采纳回答 1月31日
  • 创建了问题 1月31日

悬赏问题

  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)
  • ¥15 AIC3204的示例代码有吗,想用AIC3204测量血氧,找不到相关的代码。