mayapython学习笔记(7)函数

对于python来说函数是一组语句、表达式、命令,可以使用开发者定义的名称来使用他们,也可以进行输入参数处理,python函数类似与MEL过程。

MEL使用proc来定义函数,python则使用def关键字声明。

def function_name(optional,input,parameters):
    pass;

函数块内,冒号后面的行必须缩进,def关键字后面的缩进级别或更低基本上的所有行,都被视为函数的可执行语句主体的一部分,一直到与def关键字处于相同缩进级别的一行。

pass关键字为占位符,占用执行语句位置。当然我们也可以放入打印代码来替代pass占位符:

def function_name():
    print('hello world');

由于打印代码被封装在函数中,所以执行代码并没有打印相关内容。

将函数名输入执行代码:

type(function_name);

我们得到结果为<type 'function'>,这是一个函数类型。

调用函数则需要将函数名称提供给解释器,名称后面添加();表示为函数,括号内为参数。

执行代码:

function_name();

输出为:

hello world

包含在括号内的为函数参数

def process_all_textures(texture_node):
    print('Processed %s'%texture_node);

这样调用函数时可以向函数传入参数,任何参数的名字都可以是texture_node。

import maya.cmds;
texture=maya.cmds.shadingNode('file',asTexture=True);
process_all_textures(texture);

输出为:

Processed file1

如果函数调用不进行传参,则会返回错误信息。

参数由逗号分隔,函数支持多个参数传入。

默认参数:

def process_all_textures(texture_node,prefix='my_'):
    print('Processed %s%s'%(prefix,texture_node));

这里参数定义了一个前缀my_,以保证每次传入前都会加一个前缀。

执行process_all_textures(texture);

输出为Processed my_file1

输入参数默认值也可以是None,这时调用函数就算没有参数,也不会报错。

def function_name(arg1=None):
    pass;

关键字参数可以使用关键字=值的方式来指定参数。

带*号的运算符可变长度参数列表:

执行代码:

def process_all_textures(*args):
    print(args[0],arg[1:]);

修改process_all_textures()定义支持可变长度参数列表。

tx1=maya.cmds.shadingNode('file',asTexture=True);
tx2=maya.cmds.shadingNode('file',asTexture=True);
tx3=maya.cmds.shadingNode('file',asTexture=True);
tx4=maya.cmds.shadingNode('file',asTexture=True);
process_all_textures('grass_');
process_all_textures('grass_',tx1);
process_all_textures('grass_',tx2,tx3,tx4);

可以发现不同长度的参数依然可以调用完成。

返回值:

使用return语句将函数值返回调用的上下文中:

def process_all_textures(**kwargs):
    pre=kwargs.setdefault('prefix','my_');
    texture=kwargs.setdefault('texture_node');
    return maya.cmds.rename(
        texture,
        '%s%s'&(pre,texture)
    );

执行代码:

texture=process_all_textures(texture_node=texture);
print(texture);

打印出:

my_file1

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值