Max_Python_Help DOC 通读001

在MS里使用Py的lib

bi = Python.Import "__builtin__"
bi.pow 2 3

"__builtin__"应该就是Python的内置package。

在PY里,pow()是这么用的

pow(2, 3)

但是ms里函数调用直接在后面写上实参就好,不需要括号

如果需要重新加载一下已经import的module,用?:

python.reload bi

在MS里使用Py的复合类型(列表,元组,字典,类)

注意:在MS里数组的下标是从1开始的。

这里测试(环境:Max2017)看到了一个不一样的结果,表示懵逼!

下面这张图是HelpDoc里的栗子,tp[0]的返回值是1,也就是说还是遵循着py的规则,数组元组等从0开始下标

但是下面是我测试的结果,tp[0]返回了3,是元组的最后一位。

然后我又测试了tp[1],tp[2],tp[3]分别返回1, 2, 3。。。。

然后我想在py里tp[-1]返回的是元组的最后一位。。。可惜,测试的结果是倒数第二位,因为倒数第一位的下标是0,上面已经验证了。

这个分歧不知道是文档写错了,还是max的bug?

接下来看一下字典类型

声明一个字典

d = bi.dict one:1 two:2 three:3

像字典里添加

d["five"] = 5

上面说有个bug。我又重新看了一下doc,有这么一句话

Python lists passed to MAXScript are 1-based.

传给MS的py列表是从1开始的。就是说,从py传回给ms的列表是从1开始的。

我还是没有理解这句话。

官方的?

str = python.import("string")
mystrlist = str.split("an example string")
mystrlist[1]
-- prints "an"

是,的确是print了一个an,但是上面的tp[0]返回值怎么去理解。

如果我想在ms里直接运行Py代码怎么办?

python.execute "print 'Hello'"

是的,在py2.7里print一个Hello就是这么写的

print 'Hello'

那么在ms里只需要在python.execute后面把py的语句变成string即可

但是一定要注意max里的py是2.7的版本。

另外在py2.7里print一个Hello也可以这么写:

print "Hello"

那在ms里调用py这条语句是不是就需要考虑一下转义字符了呢。

python.execute "print \"Hello\""

对于python.ExecuteFile这个命令是一样的。后面跟一个带扩展名的文件名的字符串就可以了

如果这个文件名不是一个全路径。那么max会在下面的路径中找你的py脚本。

  • User Scripts directory
  • User Startup Scripts directory
  • Scripts directory
  • Startup Scripts
  • 以及系统的path路径

这里要Note一下:

1.Ms大小写不明感

2.Py在ms里运行不是thread-safe。py的命令总是在max的主线程上运行。所以你不要尝试使用多线程。

 

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值