2016-10-13 2 views
0

У меня есть скрипт python, который реализует несколько функций, но я хочу быть гибким с точки зрения того, какие функции я использую каждый раз. Когда я буду запускать скрипт Python, я бы хотел передать некоторые аргументы, которые будут стоять как «флаги» для выполнения моих функций.Как передать аргументы в скрипт python, похожий на скрипт функции MATLAB?

В 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 метрики (мин, макс.)

argparse()

и

os.system ("metrics.py 1,1")

Любое предложение, как транспонировать функция MATLAB вызова в Python Shell (Я использую Spyder Anaconda для этого вопроса)?

+0

Вы хотите вызывать функции из командной строки (например, окна командной строки или Линукс оболочки) или из питона оболочки? Эквивалентом командного окна MATLAB является оболочка Python, а не командная строка. – TheBlackCat

+0

@TheBlackCat оболочка Python, моя плохо. – Roxanne

+0

Пожалуйста, отредактируйте ваш вопрос. Это было неправильно обозначено как дубликат. – TheBlackCat

ответ

3

Вы можете использовать результаты непосредственно так же, как в MATLAB. Анализ синтаксического анализа аргументов - это вызов сценариев python из командной строки системы или оболочки, а не оболочки Python. Так есть файл сценария, как 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') 

Затем из питона или IPython оболочки, сделайте следующее:

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

Хотя обычно в Python вы будете использовать True и False. Кроме того, я изменил имена аргументов, так как их слишком легко путать со встроенными, а в 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') 
Смежные вопросы