如何将参数传递给类似于MATLAB函数脚本的python脚本?

时间:2016-10-13 13:59:48

标签: python matlab function

我有一个实现多个函数的python脚本,但我希望每次使用哪些函数都是灵活的。当我运行Python脚本时,我想传递一些参数,这些参数可以作为执行我的函数的“标志”。

在MATLAB中看起来像这样:

function metrics( Min, Max )
%UNTITLED Summary of this function goes here
%   Detailed explanation goes here
x = [1,2,3,4,5,5];

if (Min==1)
    min(x)
else
    disp('something')
end

if (Max==1)
    max(x)
else
    disp('else')
end

end

我从命令窗口调用(例如):

metrics(1,0)

Python 中我尝试使用

  

def metrics(min,max)

     

argparse()

  

os.system(“metrics.py 1,1”)

有关如何在 Python Shell 中调用MATLAB函数调用的任何建议(我正在使用Anaconda的Spyder)?

1 个答案:

答案 0 :(得分:3)

您可以像在MATLAB中一样直接使用结果。解析东西的参数是用于从系统命令提示符或shell调用python脚本,而不是从Python shell调用。所以有一个像myscript.py这样的脚本文件:

def metrics(minval, maxval):
    """UNTITLED Summary of this function goes here

    Detailed explanation goes here.
    """
    x = [1, 2, 3, 4, 5, 5]

    if minval:
        print(min(x))
    else:
        print('something')

    if maxval:
        print(max(x))
    else:
        print('else')

然后,从python或ipython shell中执行:

>>> from myscript import metrics
>>> metrics(1, 0)

虽然通常使用Python,但您可以使用TrueFalse。另外,我更改了参数名称,因为它们太容易与builtins混淆,而在Python中你不需要== 1。此外,Python支持默认参数,因此您可以执行以下操作:

def metrics(minval=False, maxval=False):
    """UNTITLED Summary of this function goes here

    Detailed explanation goes here.
    """
    x = [1, 2, 3, 4, 5, 5]

    if minval:
        print(min(x))
    else:
        print('something')

    if maxval:
        print(max(x))
    else:
        print('else')

然后:

>>> from myscript import metrics
>>> matrics(True)
>>> metrics(maxval=True)

此外,Python支持称为三元表达式的东西,它们基本上是if...else表达式。所以这个:

    if maxval:
        print(max(x))
    else:
        print('else')

可以写成:

    print(max(x) if maxval else 'else')