python-3.x 为什么在另一个函数中调用此函数时返回列表?

wfypjpf4  于 2022-12-05  发布在  Python
关注(0)|答案(2)|浏览(152)

我的函数被设置为返回一个字典。当被调用时,它返回字典。但是,如果我从另一个函数中调用该函数,它返回一个列表。
`

def draw(self, num: int) -> dict:
    drawn_dict = {}
    if num > len(self.contents):
      return self.contents
    else:
      while num >= 1:
        drawn_num = self.contents.pop(random.randint(0, len(self.contents) - 1))
        drawn_dict.setdefault(drawn_num, 0)
        drawn_dict[drawn_num] +=1
        num -= 1
      return drawn_dict

def experiment(hat, expected_balls, num_balls_drawn, num_experiments):
  matches = 0
  full_match = 0
  count = 0
  print(hat.draw(num_balls_drawn))

print(hat.draw(5))

`
当我调用draw函数并打印结果时,我得到的是预期的字典,但是当draw函数被调用并在experiment函数中打印结果时,我得到的是一个列表。

jpfvwuh4

jpfvwuh41#

什么是self.contents的类型?我想它是list,这是对你问题的回答:-)

def draw(self, num: int) -> dict:
    drawn_dict = {}
    if num > len(self.contents):
      return self.contents  # <- THIS
    else:
      while num >= 1:
        drawn_num = self.contents.pop(random.randint(0, len(self.contents) - 1))
        drawn_dict.setdefault(drawn_num, 0)
        drawn_dict[drawn_num] +=1
        num -= 1
      return drawn_dict
cdmah0mi

cdmah0mi2#

我意识到了这个问题。我在实验函数之前调用了draw函数,通过调用draw,我编辑了self.contents列表,这影响了它的长度,从而触发了“if num〉len(self.contents)"。所以当我在实际使用它之前没有修改列表时,函数可以按预期工作!

相关问题