赞
踩
对于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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。