python中的参数数量

时间:2016-10-23 18:42:15

标签: python random

我对此代码有疑问

import random

class MyPlayer:

 def __init__(self, payoff_matrix, number_of_iterations=0):
    self.payoff_matrix = payoff_matrix
    self.number_of_iterations = number_of_iterations
    self.opponent_move = None
    self.opponent_move_history = list()


 def move(self): #move is random, True or False
    return random.choice(False, True)

 def record_opponents_move(self, opponent_move): #recording opponents moves
    self.opponent_move = opponent_move
    self.opponent_move_history.append(opponent_move)

Pycharm仍然显示一个TypeError:choice()只需要2个参数(给定3个),我不认为它是True和False只是2个参数?或不?

2 个答案:

答案 0 :(得分:4)

您的random.choice()来电应该是:

>>> import random
>>> random.choice([False, True]) # wrapped within list
True

现在来讨论这个问题。根据{{​​3}}文档,它只接收一个参数 sequence 。但是在错误中,您会看到正好采用2个参数,因为choice()函数在Random类(random.choice())中定义。类方法期望第一个参数(也称为self)作为同一个类的对象。在这里,random作为self传递。

另请阅读source code以获得更清晰的信息。

答案 1 :(得分:0)

random.choice采用可迭代的,而不是单独的参数。

random.choice([True, False])