关闭
远航的恒星 2023-01-31 11:27 采纳率: 66.7%
浏览 39
已结题

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 11: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人已打赏
    远航的恒星 2023-01-31 11:57

    感谢答主!!救了我!

    1
    回复
    远航的恒星 2023-01-31 12:01

    我还是学生,财务能力有限,只能小小的打赏一下了,希望不要介意啊~

    回复
    远航的恒星 2023-01-31 12:08

    def tengxun(addr,self):
            # addr1=self.addr
            # addr=self.comboBox.currentText()+self.comboBox_2.currentText()+self.lineEdit.text()
            print(addr)
            print(11111111)
            url = "https://apis.map.qq.com/jsapi?"   #腾讯地图API接口
            para = {
                "qt": "geoc",
                "addr":addr, #传入地址参数
                "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"]
            print(m)
            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=""
            addr=self.comboBox.currentText()+self.comboBox_2.currentText()+self.lineEdit.text()
            print(add1)
            addr2="上海市闵行区漕宝路3138号"
            self.addr=add1
            print(addr)
            self.tengxun(addr)
    

    上海市闵行区漕宝路3138号

    <__main__.Ui_MainWindow object at 0x000002775C8EDC40>
    按照逻辑,上面的是start函数里打印出来的内容,下面的是tengxun函数里打印出来的内容,但传递的内容打出来是<__main__.Ui_MainWindow object at 0x000002775C8EDC40>
    这是为什么?

    回复
    展开全部7条评论
查看更多回答(1条)
编辑
预览

报告相同问题?

问题事件

  • 系统已结题 2月7日
  • 已采纳回答 1月31日
  • 创建了问题 1月31日
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部