PyQt挖地雷游戏学习笔记(6)
来源:互联网 发布:京瓷网络扫描设置 编辑:程序博客网 时间:2024/05/01 18:00
学习别人的作品,有一大好处,可以反观自己的不足。
自己的不足,往往是基础知识有欠缺,基本功不扎实。
今天,再补一课:星号表达式(*expression)。
挖地雷程序中,有2处用到星号表达式。一是在main.py,另一处在game_scene.py。
先看第一处的情况:
@pyqtSlot()def on_action_Setup_triggered(self): result = setup.getSetup() if not result: return self.scene.setMap(*result) self.scene.start()
这里的result,从setup.py返回,是这个样子:
def getSetup(): if SetupDlg().exec_() != QDialog.Accepted: return return (conf.w, conf.h), conf.mines
即,result = ((conf.w, conf.h), conf.mines)
再看用星号(*)解析result的样子。调用函数self.scene.setMap(*result)之后,
在game_scene.py中:
def setMap(self, size, mines): self.setup = size, mines self.map_size = size self.mines = mines
可见,*result解析的结果,成为2个对象,一个是元组size,另一个是整数mine。
如果不用*result解析,函数setMap的头部参数为result一个对象,还需再做解析。
下面的函数new_func,是第二处用到星号表达式的,也是常见的情形:
def inGame(func): """ check if this game is running """ def new_func(self, *args, **kw): if self.status != RUNNING: return return func(self, *args, **kw) return new_func
注意!第一,星号表达式只能用在函数头部,否则,是语法错误;
第二,重要的是星号,不是参数名称;
第三,星号意味着,参数属于iterable性质的,即可用函数len()测量其长度。
以下是简单的例子:
>>> def func(*S,**K):print(S,'\n',K)...>>> func(1,[2,3],a=5,b='6',c='asd')(1, [2, 3]) {'a': 5, 'c': 'asd', 'b': '6'}>>>
0 0
- PyQt挖地雷游戏学习笔记(6)
- PyQt挖地雷游戏学习笔记(1)
- PyQt挖地雷游戏学习笔记(2)
- PyQt挖地雷游戏学习笔记(3)
- PyQt挖地雷游戏学习笔记(4)
- PyQt挖地雷游戏学习笔记(5)
- PyQt挖地雷游戏学习笔记(7)
- PyQt学习(6)
- 挖地雷游戏的概率
- PyQt学习笔记一
- pyqt 学习笔记
- 修改挖地雷游戏的时间
- 基于java的挖地雷游戏
- PyQt学习笔记(10)--QSetting
- PyQt学习笔记(11)--QTreeWidget
- PyQt学习笔记(12)--QTableWidget
- PyQt学习笔记(13)--QListWidget
- 学习PyQt (1)
- 微信调用微博秀页面
- JS验证用户名密码
- 高并发高流量网站架构
- lua单例
- 风の住む街 矶村由纪子
- PyQt挖地雷游戏学习笔记(6)
- 点退出弹出确认退出
- Accelerated C++ 学习笔记及题解----第三章
- 畅谈程序员接私活
- 《Head First Design Patterns》读书笔记之单例模式
- 开辟一个二维数组,有10*8个元素,用随机数填充,按照下面的方法用函数实现查找一个数是否存在
- Map集合类中保证线程安全的策略比较
- SVM 为什么说高斯核函数能把向量映射到无穷维
- 主要内容