原文链接:木兰重生:与 Python 生态的兼容问题;字符串插值
节选:
前两天用木兰调用 pygame 库实现了个井字棋棋盘界面。期间遇到了一些问题,先小结一下。
注:解决方法限于个人至今对木兰和 Python 的了解。如有高招,烦请指教!
python 中很常用的结构,可以如下初始化:
>>> t = (1,2)
>>> t
(1, 2)
>>> t = 2, 3
>>> t
(2, 3)
但木兰中好像没找到类似的简便方法。幸好与 python 相似,函数返回多项时就会打包成元组,因此暂时这样定义函数:
func 多项 2(a, b) {
return a, b
}
func 多项 3(a, b, c) {
return a, b, c
}
...
之后支持变长参数时,就可以合并为一个函数了。
下面是 pygame 的常见操作,检查 pygame.event 的 type:
for event in pygame.event.get():
if event.type == pygame.QUIT :
但木兰中的 type 是类型定义的关键词,因而如果仍使用 .type 会报错。刚遇到这一问题时,颇为震惊,以为发现了木兰的一个大硬伤,不过还好 python 还有一个 __getattribute__('type')
可用。但另一种方法用在这里就无法获得 type 值:
func getType(个体) {
for 属性, 值 in 个体.__dict__.items() {
return 值 if 属性 == 'type'
}
}
大概因为这个 type 是个 @property (木兰中的应变属性),那么如果是普通属性如下:
type 人 {
func $人(名) {
$type = 名
}
}
上面两种方法就都可用。
......
完整内容见原文链接:木兰重生:与 Python 生态的兼容问题;字符串插值 (降权,发不起完整的)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.