最近在学习pyqt4的使用,在学习文档中看到一段代码:
names = ['Cls', 'Bck', '', 'Close',
'7', '8', '9', '/',
'4', '5', '6', '*',
'1', '2', '3', '-',
'0', '.', '=', '+']
positions = [(i,j) for i in range(5) for j in range(4)]
for position,name in zip(positions,names):
if name == '':
continue
button = QtGui.QPushButton(name)
grid.addWidget(button,*position)
在完善其余代码后,最终实现效果为:
在这段代码中,需要学习的代码有三句:
positions = [(i,j) for i in range(5) for j in range(4)]
构建一个二维positions列表
for position,name in zip(positions,names):
name:依次遍历names赋值给name
position:依次遍历列表positions赋值(元组)给position
grid.addWidget(button,*position)
position是一个表示位置的元组
当要使函数
接收元组或字典形式的参数
的时候,有一种特殊的方法,它
分别使用*和**前缀
。这种方法在函数需要
获取可变数量的参数
的时候特别有用。
所以在此处使用*position
[注意]
[1] 由于在args变量前有 *前缀 ,所有多余的函数参数都会 作为一个元组存储在args中 。如果使用的是 **前缀 ,多余的参数则会被认为是 一个字典的健/值对 。
[2] 对于def func(*args):,*args表示把传进来的位置参数存储在tuple(元组)args里面。例如,调用 func(1, 2, 3) , args就表示(1, 2, 3)这个元组 。
[3] 对于def func(**args):,**args表示把参数作为字典的健-值对存储在dict(字典)args里面。例如,调用 func(a='I', b='am', c='wcdj') , args就表示{'a':'I', 'b':'am', 'c':'wcdj'}这个字典 。
[4] 注意普通参数与*和**参数公用的情况,一般将*和**参数放在参数列表最后。
所以在此处使用*position
[注意]
[1] 由于在args变量前有 *前缀 ,所有多余的函数参数都会 作为一个元组存储在args中 。如果使用的是 **前缀 ,多余的参数则会被认为是 一个字典的健/值对 。
[2] 对于def func(*args):,*args表示把传进来的位置参数存储在tuple(元组)args里面。例如,调用 func(1, 2, 3) , args就表示(1, 2, 3)这个元组 。
[3] 对于def func(**args):,**args表示把参数作为字典的健-值对存储在dict(字典)args里面。例如,调用 func(a='I', b='am', c='wcdj') , args就表示{'a':'I', 'b':'am', 'c':'wcdj'}这个字典 。
[4] 注意普通参数与*和**参数公用的情况,一般将*和**参数放在参数列表最后。