Рубрики

Python | Набор 6 (Аргументы командной строки и переменных)

Предыдущие статьи Python ( Набор 1 | Набор 2 | Набор 3 | Набор 4 | Набор 5 )
Эта статья посвящена аргументам командной строки, а также переменным аргументам (args и kwargs) для функций в python.

Аргументы командной строки

До сих пор мы использовали входные данные в python, используя raw_input () или input () [для целых чисел]. Есть еще один метод, который использует аргументы командной строки. Аргументы командной строки должны указываться всякий раз, когда мы хотим дать ввод перед запуском скрипта, в то время как с другой стороны, raw_input () используется для получения ввода во время работы программы / скрипта python.

Например, в среде UNIX аргументы '-a' и '-l' для команды 'ls' дают разные результаты.

Аргументы командной строки в python могут быть обработаны с помощью модуля 'sys' или модуля 'argparse'.

# Python-код для демонстрации использования модуля 'sys'
# для аргументов командной строки

  

import sys

  
# аргументы командной строки хранятся в форме
# списка в sys.argv

argumentList = sys.argv

print argumentList

  
# Распечатать название файла

print sys.argv[0]

  
# Вывести первый аргумент после имени файла

print sys.argv[1]

ВЫХОД :

['program1.py', 'test', '1']
program1.py
test

ПРИМЕЧАНИЕ. Приведенный выше код работает только в командной строке. Нам нужно запустить приведенную ниже команду, учитывая, что программа сохраняется как program1.py
python program1.py test 123

Обратите внимание на следующие моменты, касающиеся вышеуказанной программы:

  • Sys.argv принимает аргументы командной строки в виде списка.
  • Первый элемент в списке — это имя файла.
  • Аргументы всегда приходят в виде строки, даже если мы введем целое число в списке аргументов. Нам нужно использовать функцию int () для преобразования строки в целое число.
  • Мы можем использовать аргументы командной строки для написания программ, которые выполняют часто используемые задачи. Например, нам нужно найти факториал много раз. Мы можем сохранить следующую программу в файле с именем factorial.py на нашем компьютере и получить вывод, просто написав команду для получения факториала числа, скажем, 5.
    python factorial.py 5

    import sys

    from math import factorial

      

    print factorial(int(sys.argv[1]))

    Переменные Аргументы

    args (*) и kwargs (**)

    И args, и kwargs используются для получения произвольного числа аргументов в функции.

    args выдаст нам все параметры функции в виде списка, а kwargs выдаст нам все ключевые аргументы, кроме тех, которые соответствуют формальному параметру в качестве словаря.

    # Python-программа для иллюстрации использования аргументов, которые
    # умножает все значения, данные функции в качестве параметра

      

    def multiplyAll(*values):

        mul = 1 

      

        # значения (аргументы) будут в форме кортежа

        print values

        print "Type = ", type(values)

      

      

        # Умножаем все параметры и возвращаем результат

        for i in values:

            mul = mul * i

      

        return mul

      

      
    # Программа драйвера для проверки вышеуказанной функции

      
    # Умножить два числа, используя функцию выше

    ans = multiplyAll(1,2)

    print "The multiplication of 1 and 2 is ", ans

      
    # Умножьте 5 чисел, используя вышеуказанную функцию

    ans = multiplyAll(3, 4, 5, 6, 7)

    print "The multiplication of 3 to 7 is ", ans

    ВЫХОД :

(1, 2)
Type =  
The multiplication of 1 and 2 is  2
(3, 4, 5, 6, 7)
Type =  
The multiplication of 3 to 7 is  2520

Обратите внимание, что аргументы обозначаются с помощью одной звезды, а кварги обозначаются двумя звездами перед формальными параметрами в функции.

# Программа для иллюстрации использования kwargs в Python

  
# Функция, которая печатает данные ученика
# Количество деталей на одного учащегося может отличаться

def printDetails(**details):

      

    # Переменная 'details' содержит подробности в

    # форма словаря

    print "Parameter details contains"

    print details 

    print "Type = ", type(details)

  

    # Напечатать имя

    print "First Name = ", details['firstName']

  

    # Распечатать кафедру студента

    print "Department = ", details['department']

    print "" # Дополнительный разрыв строки

  

  
# Программа драйвера для проверки вышеуказанной функции

  
# Вызов функции с тремя аргументами

printDetails(firstName = "Nikhil"

             rollNumber = "007",

             department = "CSE")

  
# Вызов функции с двумя аргументами

printDetails(firstName = "Abhay",

             department = "ECE")

Выход:

Parameter details contains
{'department': 'CSE', 'rollNumber': '007', 'firstName': 'Nikhil'}
Type =  
First Name =  Nikhil
Department =  CSE

Parameter details contains
{'department': 'ECE', 'firstName': 'Abhay'}
Type =  
First Name =  Abhay
Department =  ECE

Обратите внимание, что если вы используете в функции как args, так и kwargs, то перед параметрами kwarg должен предшествовать параметр args.
Пример :

# Функция, содержащая как args, так и kwargs

def cheeseshop(kind, *arguments, **keywords):

    print "-- Do you have any", kind, "?"

    print "-- I'm sorry, we're all out of", kind

    for arg in arguments:

        print arg

    print "-" * 40

    keys = sorted(keywords.keys())

    for kw in keys:

        print kw, ":", keywords[kw]

  
# Программа драйвера для проверки вышеуказанной функции

cheeseshop("Burger", "It's very funny, sir.",

           "It's really very, VERY funny, sir.",

           shopkeeper='Michael Palin',

           client="John Cleese",

           sketch="Cheese Shop Sketch")

Эта статья предоставлена Нихилом Кумаром Сингхом

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Python | Набор 6 (Аргументы командной строки и переменных)

0.00 (0%) 0 votes