Matlab中的nargin在python中应该怎么写。
函数输入参数的个数。
n表示number
arg表示arguments
in表示input
nargin表示number
of
function
input
arguments
下面的代码输出nargin,结果为3
function
demoa
=
1;b
=
1;c
=
1;fun(a,b,c);endfunction
fun(a,b,c)narginend
nargin对应varargin的个数,是一个数值,而varargin用来存入输入变量,以元胞数组形式存储nargout对应varargout的个数,是一个数值,而varargout用来存入输出变量,以元胞数组形式存储。
例子:function qiujuli(varargin)%求两点间距离%%%%使用方法:qiujuli([2 3]),qiujuli([2 3],[4 5]),if nargin==0disp('未输入,请至少输入一点坐标值')endif nargin==1x1=varargin{1};d=sum(x1.^2)^0.5;disp('输入只有一点,则求其距原点距离为:')disp(['距离d=' num2str(d)]) endif nargin==2x1=varargin{1};x2=varargin{2};x=x1-x2;d=sum(x.^2)^0.5;disp('输入有两点,则求这两点距离为:')disp(['距离d=' num2str(d)])endif nargin>2disp('输入超过两个点,请至多输入两点坐标值')endend
nargin为“number of input arguments”的缩写。 在matlab中定义一个函数时, 在函数体内部, nargin是用来判断输入变量个数的函数。在matlab命令窗口中输入help nargin或者doc nargin即可获得该函数的帮助信息。
nargin通过调用当前正在执行的函数返回输入参数的数量,只在函数体内使用nargin语法功能。
nargin(fx)在函数fx的定义声明中返回输入参数的个数。如果函数包括varargin其定义,那么nargin返回的输入个数为负。例如函数foo输入有 a,b,和varargin三个参数,那么nargin('foo”)返回值为-3。
nargout的作用是在matlab中定义一个函数时, 在函数体内部, nargout指出了输出参数的个数(nargin指出了输入参数的个数)。 特别是在利用了可变参数列表的函数中, 用nargout获取输出参数个数很方便。
语法
nargout
nargout(fun)
相关:varargout、nargin、varargin
应用举例
function varargout = foo(varargin)
fprintf('How many output arguments? %d
', nargout);
for k=1:nargout
varargout(k) = {varargin{k}};
end
end
输出结果
>> ret = foo(1, 2, 3)
How many output arguments? 1
ret = 1
>> [retA, retB] = foo(1, 2, 3)
How many output arguments? 2
retA = 1
retB = 2
>> [retA, retB, retC] = foo(1, 2, 3)
How many output arguments? 3
retA = 1
retB = 2
retC = 3
首先nargin这个函数就是获取参数数量。这个在python有n种方法。
可以用inspect库,也可以用build-in属性。
其他数学上的方法,自己随便找个库都有吧。。
方法1
import inspect
def func(a, b, c):
frame = inspect.currentframe()
args, _, _, values = inspect.getargvalues(frame)
print 'function name "%s"' % inspect.getframeinfo(frame)[2]
for i in args:
print " %s = %s" % (i, values[i])
return [(i, values[i]) for i in args]
>>> func(1, 2, 3)
function name "func"
a = 1
b = 2
c = 3
[('a', 1), ('b', 2), ('c', 3)]
方法2
>>> func = lambda x, y: (x, y)
>>>
>>> func.__code__.co_argcount
2
>>> func.__code__.co_varnames
('x', 'y')
>>>
>>> def func2(x,y=3):
... print(func2.__code__.co_varnames)
... pass # Other things
...
>>> func2(3,3)
('x', 'y')
>>>
>>> func2.__defaults__
(3,)
直接使用默认参数就可以了
def test_var_args(*args):
if len(args) == 2:
print(args[0]+args[1]) else:
print(args[0])
test_var_args(1,2)
test_var_args(1)