【问题标题】:How to return values from Function如何从函数返回值
【发布时间】:2016-04-23 18:25:20
【问题描述】:

我为我的 python 练习创建了一些简单的代码。但是当我尝试从我的函数返回值时,我只得到第一个值而不是两者。我究竟做错了什么?

def get_multi_data():
  #IM GETTING DATA FROM AN API as response#
  item_data = json.loads(response.text)
  #Get some data !!TEST!!
  item_info = []

  for name in item_data:
    item_name = item_data['market_hash_name']
    item_info.append(item_name)
    break
  else :
    item_name = None

  for price in item_data:
    item_price = item_data['prices']
    break
  else :
    item_price = None

  for lowest in item_price:
    lowest_price = item_price['lowest']
    item_info.append(lowest_price)
    break
  else : 
    lowest_price = None

  return item_name, lowest_price

当我试图返回我的值时,我只得到第一个值。 谢谢。

【问题讨论】:

  • 你怎么称呼它?您将返回两个值,因此如果您想在单独的变量中获取这两个值,您需要这样做:a, b = get_multi_data()。否则 a = get_multi_data() 在分配给 a 的元组中给你两个。
  • 可以粘贴 JSON 数据吗?
  • @idjaw,我认为问题在于 for 循环中有 break 语句在“第一个”之后停止。
  • 那是错误的人回复...@DraugDev,你为什么有break 声明他们在哪里?
  • 哦,我明白了,所以如果 item_data 为空,您将在 for 循环中运行 else:,否则它会使用数据,这将更好地表示为 if item_data: 和 @987654330 @(删除了breaks)

标签: python arrays python-3.x return-value


【解决方案1】:

你需要在调用函数时选择你想要的值。将函数视为列表:

a = get_multi_data()[0] 

设置a 等于item_name 或:

a = get_multi_data()[1]

设置a 等于lowest_price

正如一些 cmets 所指出的,您也可以只将返回值作为一个元组。

【讨论】:

  • 更合适的处理方法是a, b = get_multi_data()。您正在返回两个值,因此您应该同时获取它们并相应地处理它们。
  • @idjaw 的好点子。正如我在答案中提到的,这将值作为元组返回。放置方括号只是选择一个索引。要按字面意思使用此代码,只需在调用函数时输入它,值将分配给ab。如果您仍然不明白,请尝试更具体地了解是什么绊倒了您。
  • 然后按照@idjlaw 所说的去做,并将它们返回到两个不同的值! a, b = get_multi_data()。这意味着a 等于item_name 并且b 等于lowest_price。尝试输入a, b = get_multi_data(),然后打印ab
  • @DraugDev,你一直说“第一个”,我想其他人都认为你的意思是“item_name 但不是最低价格”,但这没有意义,因为return item_name, lowest_price 确实 在一个元组中返回两个值。如果你的意思不是“第一个”,你能试着用不同的词来解释吗?
  • @DraugDev 您是否输入了a, b = get_multi_data(),然后打印了ab?甚至只是print(get_multi_data())。这将向您显示这两个值
猜你喜欢
  • 1970-01-01
  • 2016-11-17
  • 2020-03-09
  • 1970-01-01
  • 2019-12-06
  • 2020-03-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多