【问题标题】:missing 1 required positional argument on ReturnReturn 时缺少 1 个必需的位置参数
【发布时间】:2021-04-10 18:33:59
【问题描述】:

我在下面的代码中缺少 1 个必需的位置参数。我尝试了不同的东西,但没有运气。我相信这是我遗漏的一个小细节,但因为我是 Python 的初学者,我无法自己修复它。

import requests
from flask import Flask, jsonify, request, render_template
import os

app = Flask(__name__)

    @app.route('/outages')
    def map_status(data):
    
      url = "https://my-api.local.com/data"
    
      response = requests.get(url)
    
      result_data = json.loads(response.text)
      if(data['install_status']=='1'):
        data['install_status']='Installed'
      elif(data['install_status']=='3'):
            data['install_status']='Maintenance'
      return data
    
      result_data['result']=map(map_status,result_data['result'])
    
      return(list(result_data['result']))

这是我得到的错误: [ERR] TypeError: map_status() missing 1 required positional argument: 'data'

如果我更改返回打印,它可以工作,但在这种情况下,我需要使用返回来获取数据。

【问题讨论】:

  • 您正在调用烧瓶端点函数。你确定这是你想做的吗?
  • 绝对不是return有问题。
  • 你怎么调用这个函数map_status
  • ...嗯,one 调用是倒数第二行的递归调用。另一种调用方式是在路由传入请求时从 Flask 调用。请注意,尝试将单个函数用于这两个目的是一个坏主意;它真的应该是或者一个Web服务端点应用程序逻辑,而不是同时两个相同的东西。
  • 呃,这看起来很不对劲。除非您确切知道自己在做什么,否则不应调用带有 app.route 注释的函数。

标签: python python-3.x return


【解决方案1】:

当你调用一个有参数的函数时,你必须指定它们的值。 正确的代码是:

result_data['result'] = map(map_status(insert_data), result_data['result'])

(insert_data) 是您插入需要放入的值的位置。

如果您不希望始终需要该参数,您可以指定一个 可选 参数,如下所示:

def map_status(data=None)

这使得data 的初始值成为 NoneType。当您想使用 data 参数调用函数时,只需像普通参数一样执行此操作,但使用等号,如下所示:

map_status(data="hello")

您也可以将可选参数设为空文字:

def map_status(data="")

【讨论】:

    猜你喜欢
    • 2014-09-13
    • 1970-01-01
    • 1970-01-01
    • 2019-10-10
    • 2017-03-27
    • 2019-11-12
    • 2019-12-23
    • 2021-02-01
    相关资源
    最近更新 更多