将必需参数传递给optional

时间:2017-12-06 10:59:20

标签: python function syntax arguments

尝试制作一个棋盘,如果只有一个参数,则必须是正方形(如果有两个参数,则为矩形)。

代码示例:

class Game:
    def __init__(self,h,w=h): # lookie-lookie 
       self.board = [[0 for i in range(w)] for j in range(h)]

我的期望:

b = Game(2)
b.board
#should return [[0,0],[0,0]]
b = Game(2,1)
b.board
#should return [[0],[0]]

我得到了什么:

NameError: name 'h' is not defined

我该如何解决?

1 个答案:

答案 0 :(得分:3)

在函数定义中,将计算传递给可选参数的值,但是,在该瞬间,未定义FileContentResult。您可以使用sentinel值作为可选参数的占位符:

h

如果您使用的是Python 2,请记住继承class Game(object): def __init__(self,h,w=None): if w is None: w = h