我有一个实现多个函数的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)?
答案 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,但您可以使用True
和False
。另外,我更改了参数名称,因为它们太容易与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')