Как передать файл в функцию Python

Обновлено: 24.11.2024

Программы Python можно легко запускать в интегрированных средах разработки, а также файлы Python можно запускать в терминалах.

Вы можете запустить файл python в терминале с помощью команды python3 filename.py.

В этом руководстве вы узнаете, как

  • Запустить файл Python в терминале
  • Запустить файл Python в терминале с аргументами
  • Использовать аргументы командной строки Python3

Для демонстрации вы будете использовать файл сценария Python sample.py, доступный в вашей системе Ubuntu.

Оглавление

Установите Python в Ubuntu

Ubuntu 20.04 и другие дистрибутивы Debian Linux поставляются с установленным по умолчанию Python 3. Вы можете проверить, доступен ли Python, с помощью приведенной ниже команды.

Вы увидите установленную версию Python, как показано ниже.

Если он не установлен, вы можете установить Python3 в Ubuntu с помощью следующей команды.

Это установит Python 3.8 в Ubuntu, и вы сможете снова проверить его, используя команду python3 -V, как показано выше.

Если вы хотите установить другую версию Python, вы можете обновить номер версии, который выделен желтым цветом.

Python установлен.

Теперь вы узнаете, как запускать скрипты Python в Linux.

Запустить файл Python в терминале

В этом разделе вы узнаете, как запускать файлы python в терминале.

Файлы Python содержат сценарии Python, которые необходимо выполнить. Так что этот раздел будет ответом на вопрос, как запускать скрипты python в Linux[Ububtu].

В этом руководстве вы будете использовать интерпретатор вместе с именем файла для выполнения скрипта.

Используйте команду python3 вместе с именем файла сценария python, как показано ниже.

Теперь python3 запустит скрипт, доступный в файле, и вы увидите вывод консоли, как вы написали в своем скрипте.

Далее вы увидите, как запустить файл Python в терминале с аргументами.

Запустить файл Python в терминале с аргументами

В этом разделе вы узнаете, как запустить файл Python в терминале с аргументами из командной строки.

Вы можете передать аргументы в python из командной строки Linux, указав значение аргумента рядом с командами. Если у вас есть две или более команд, вы можете разделить их пробелом.

Используйте приведенную ниже команду, чтобы передать var1 , var2 в файл сценария Python sample.py .

Теперь ваша программа примет этот аргумент командной строки и обработает его, как определено в сценарии.

Использование аргументов командной строки Python3

В этом разделе вы узнаете, как использовать аргументы командной строки Python3 в скрипте Python.

Вы можете использовать аргументы командной строки, используя массив sys.argv[].

Первый индекс массива состоит из имени файла скрипта Python. А во-вторых, аргументы командной строки будут передаваться при запуске скрипта Python.

Рассмотрите приведенный ниже скрипт Python, доступный в файле с именем sample.py .

Запустите файл сценария с помощью приведенной ниже команды.

Вы увидите следующий вывод.

Вот как вы можете использовать аргументы командной строки внутри вашего скрипта Python.

Заключение

В этом руководстве вы узнали, как запустить файл python в терминале (Ubuntu или любом другом терминале командной строки bash). Вы также узнали, как запустить файл python в терминале с аргументами во время работы, а также узнали, как получить доступ к этим аргументам командной строки внутри скрипта python.

Python предоставляет модуль getopt, который помогает анализировать параметры и аргументы командной строки.

Модуль sys Python обеспечивает доступ к любым аргументам командной строки через файл sys.argv. Это служит двум целям —

sys.argv — это список аргументов командной строки.

len(sys.argv) — количество аргументов командной строки.

Здесь sys.argv[0] — это программа, т.е. имя сценария.

Пример

Рассмотрите следующий скрипт test.py —

Теперь запустите приведенный выше скрипт следующим образом:

Это дает следующий результат —

ПРИМЕЧАНИЕ. Как упоминалось выше, первым аргументом всегда является имя скрипта, и оно также учитывается в количестве аргументов.

Анализ аргументов командной строки

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

метод getopt.getopt

Этот метод анализирует параметры командной строки и список параметров. Ниже приведен простой синтаксис для этого метода —

Вот подробная информация о параметрах —

args — это список аргументов для анализа.

options — это строка букв опций, которую скрипт хочет распознать, а опции, требующие аргумента, должны сопровождаться двоеточием (:).

long_options — это необязательный параметр, и если он указан, он должен быть списком строк с именами длинных параметров, которые должны поддерживаться.После длинных опций, требующих аргумента, должен следовать знак равенства ('='). Чтобы принимать только длинные параметры, параметры должны быть пустой строкой.

Этот метод возвращает значение, состоящее из двух элементов: первый представляет собой список пар (параметр, значение). Второй — это список аргументов программы, оставшихся после удаления списка опций.

Каждая возвращаемая пара "опция-значение" содержит опцию в качестве первого элемента, перед которой ставится дефис для коротких опций (например, "-x") или два дефиса для длинных опций (например, "--long-option" ).

Исключение getopt.GetoptError

Это происходит, когда в списке аргументов обнаруживается нераспознанный параметр или когда параметру, требующему аргумента, не задано значение none.

Аргументом исключения является строка, указывающая причину ошибки. Атрибуты msg и opt содержат сообщение об ошибке и соответствующий параметр.

Пример

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

Функции или процедуре обычно требуется некоторая информация о среде, в которой они были вызваны. Интерфейс между средой, из которой была вызвана функция, и функцией, т. е. телом функции, состоит из специальных переменных, называемых параметрами. Используя эти параметры, можно использовать все виды объектов «снаружи» внутри функции. Синтаксис объявления параметров и семантика передачи аргументов в параметры функции или процедуры зависят от языка программирования.

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

"вызов по значению" и "вызов по имени"

Стратегия оценки аргументов, т. е. то, как аргументы вызова функции передаются в параметры функции, различается в разных языках программирования. Наиболее распространенными стратегиями оценки являются "вызов по значению" и "вызов по ссылке":

Вызов по значению Наиболее распространенной стратегией является оценка вызова по значению, иногда также называемая передачей по значению. Эта стратегия используется, например, в C и C++. При вызове по значению вычисляется выражение аргумента, и результат этой оценки привязывается к соответствующей переменной в функции. Так, если выражение является переменной, ее значение будет присвоено (скопировано) соответствующему параметру. Это гарантирует, что переменная в области действия вызывающего объекта останется неизменной при возврате функции.

Вызов по ссылке При вызове по ссылке, также известном как передача по ссылке, функция получает неявную ссылку на аргумент, а не копию его значения. Как следствие, функция может модифицировать аргумент, т. е. значение переменной в области действия вызывающего объекта может быть изменено. Используя вызов по ссылке, мы экономим как время вычислений, так и место в памяти, поскольку аргументы не нужно копировать. С другой стороны, это таит в себе тот недостаток, что переменные могут быть "случайно" изменены при вызове функции. Таким образом, необходимо соблюдать особую осторожность, чтобы «защитить» значения, которые не следует изменять. Многие языки программирования поддерживают вызов по ссылке, например C или C++, но Perl использует его по умолчанию.

В ALGOL 60 и COBOL была другая концепция, называемая вызовом по имени, которая больше не используется в современных языках.

Живое обучение Python

Нравится эта страница? Мы предлагаем живые обучающие курсы Python, охватывающие содержание этого сайта.

а как насчет Python?

В некоторых книгах стратегия Python называется вызовом по значению, а в некоторых — вызовом по ссылке. Вы можете спросить себя, что правильно.

Шалтай-Болтай объясняет:

--- «Когда я использую слово, — сказал Шалтай-Болтай довольно презрительным тоном, — оно означает именно то, что я выбираю, — ни больше, ни меньше».

--- "Вопрос в том, — сказала Алиса, — можете ли вы заставить слова означать так много разных вещей".

--- "Вопрос в том, — сказал Шалтай-Болтай, — кто должен быть хозяином — вот и все".

Льюис Кэрролл, Зазеркалье

Вернемся к нашему первоначальному вопросу о том, какая стратегия оценки используется в Python: авторы, которые называют механизм вызовом по значению, и те, кто называет его вызовом по ссылке, растягивают определения, пока они не подходят.

Правильно говоря, Python использует механизм, известный как "Вызов по объекту", иногда также называемый "Вызов по ссылке на объект" или "Вызов по совместному использованию".

Если вы передаете в функцию неизменяемые аргументы, такие как целые числа, строки или кортежи, передача действует как вызов по значению. Ссылка на объект передается в параметры функции. Их нельзя изменить внутри функции, потому что их вообще нельзя изменить, т.е. они неизменяемы.Другое дело, если мы передаем изменяемые аргументы. Они также передаются по ссылке на объект, но их можно изменить прямо внутри функции. Если мы передаем список в функцию, мы должны рассмотреть два случая: Элементы списка могут быть изменены на месте, т.е. список будет изменен даже в области действия вызывающей стороны. Если для имени назначен новый список, старый список не будет затронут, т. е. список в области действия вызывающей стороны останется нетронутым.

Во-первых, давайте взглянем на целочисленные переменные ниже. Параметр внутри функции остается ссылкой на переменную аргумента до тех пор, пока параметр не изменяется. Как только ей присваивается новое значение, Python создает отдельную локальную переменную. Переменная вызывающей стороны не будет изменена таким образом:

В приведенном выше примере мы использовали функцию id(), которая принимает объект в качестве параметра. id(obj) возвращает «идентификацию» объекта «obj». Эта идентичность, возвращаемое функцией значение, представляет собой целое число, уникальное и постоянное для этого объекта в течение его жизни. Два разных объекта с непересекающимся временем жизни могут иметь одинаковое значение id().

Дионисия Лемонаки

В Python есть множество полезных встроенных функций, которые можно использовать для самых разных целей. И каждый выполняет определенную задачу.

Но знаете ли вы, что Python также позволяет определять ваши собственные функции?

В этой статье показано, как создавать и вызывать собственные функции Python. Кроме того, вы узнаете, как передавать входные параметры и аргументы в ваши функции.

Что такое функция?

Функция – это изолированный блок кода, выполняющий определенную задачу.

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

Если определенное действие требуется часто и в разных местах, это хороший показатель того, что для него можно написать функцию. Функции предназначены для повторного использования.

Функции также помогают организовать ваш код.

Если вам нужно внести изменения, вам нужно будет обновить только эту определенную функцию. Это избавляет вас от необходимости искать разные фрагменты одного и того же кода, которые были разбросаны по разным местам вашей программы путем копирования и вставки.

Это соответствует принципу DRY (не повторяйтесь) в разработке программного обеспечения.

Код внутри функции запускается только при вызове функции.

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

Как определить функцию в Python

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

  • def – это ключевое слово, которое сообщает Python, что определяется новая функция.
  • Далее следует допустимое имя функции по вашему выбору. Допустимые имена начинаются с буквы или символа подчеркивания, но могут включать цифры. Слова пишутся строчными буквами и разделяются символом подчеркивания. Важно знать, что имена функций не могут быть зарезервированными ключевыми словами Python.
  • Затем у нас есть набор открывающих и закрывающих скобок () . Внутри них может быть ноль, один или несколько необязательных параметров, разделенных запятыми, с их необязательными значениями по умолчанию. Они передаются функции.
  • Далее идет двоеточие : , которым заканчивается строка определения функции.
  • Затем следует новая строка, за которой следует уровень отступа (вы можете сделать это с помощью 4 пробелов с помощью клавиатуры или с помощью 1 табуляции). Отступ важен, так как он позволяет Python узнать, какой код будет принадлежать функции.
  • Затем у нас есть тело функции. Вот код, который нужно выполнить — содержимое с действиями, которые необходимо выполнить при вызове функции.
  • Наконец, в теле функции есть необязательный оператор return, возвращающий значение вызывающей стороне при выходе из функции.

Имейте в виду, что если вы забудете круглые скобки () или двоеточие : при попытке определить новую функцию Python сообщит вам об этом с помощью SyntaxError .

Как определить и вызвать базовую функцию в Python

Ниже приведен пример базовой функции, которая не имеет оператора return и не принимает никаких параметров.

Он просто печатает hello world всякий раз, когда вызывается.

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

Чтобы выполнить код внутри функции, необходимо выполнить вызов функции или вызов функции.

Затем вы можете вызывать функцию столько раз, сколько захотите.

Чтобы вызвать функцию, вам нужно сделать следующее:

Вот разбивка кода:

  • Введите имя функции.
  • За именем функции должны следовать круглые скобки.Если есть какие-либо обязательные аргументы, они должны быть переданы в круглых скобках. Если функция не принимает никаких аргументов, вам все равно нужны круглые скобки.

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

Как определять и вызывать функции с параметрами

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

Что делать, если вы хотите передать функции дополнительные данные?

Мы использовали здесь такие термины, как параметр и аргументы.

Каковы их определения?

Параметры – это именованные заполнители, которые передают информацию в функции.

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

В приведенном выше примере есть один параметр name .

Вместо этого мы могли бы использовать форматирование f-строки — оно работает так же, как и в предыдущем примере:

В скобках может быть список параметров, разделенных запятыми.

Здесь параметрами функции являются имя и возраст .

При вызове функции передаются аргументы.

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

В частности, это фактические значения, соответствующие параметрам в определении функции.

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

Эту функцию можно вызывать много раз, каждый раз передавая разные значения.

Представленные до сих пор аргументы называются позиционными аргументами.

Все позиционные аргументы очень необходимы.

Количество позиционных аргументов имеет значение

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

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

Вы не можете ничего пропустить или добавить.

Скажем, у вас есть эта функция, которая принимает два параметра:

Если функция вызывается только с одним переданным аргументом, как здесь, возникает ошибка:

Если функция вызывается с тремя переданными аргументами, снова возникает ошибка:

Также возникнет ошибка, если мы передадим аргументы без.

Вместо этого нам нужны два аргумента, поскольку в определении функции указаны два параметра.

Порядок позиционных аргументов имеет значение

Помимо включения правильного количества аргументов, важно отметить, что важен порядок, в котором передаются аргументы.

Аргументы должны передаваться в том же порядке, что и параметры, объявленные в определении функции.

Это работает как присваивание переменной.

Первый аргумент — это значение первого параметра в определении функции. Второй аргумент — это значение второго параметра в ddefinition функции, и так далее.

Если порядок неправильный, вывод может быть бессмысленным и не таким, каким вы хотели его видеть.

Как использовать аргументы ключевых слов в функциях Python

До сих пор вы видели один тип аргументов — позиционные аргументы.

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

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

В этом случае вместо того, чтобы просто передавать значения при вызове функции, вы вместо этого указываете имя параметра, а затем значение, которое вы хотите ему присвоить, в форме key = value .

Каждый ключ соответствует каждому параметру в определении функции.

Явный вызов имен параметров и значений, которые они принимают, помогает лучше понять, что вы передаете, и избежать возможной путаницы.

Аргументы ключевых слов, как показано выше, могут располагаться в определенном порядке. Но они более гибкие, чем позиционные аргументы, в том смысле, что порядок аргументов теперь не имеет значения.

Чтобы вы могли сделать это и не было бы ошибок:

Но вам все равно нужно указать правильное количество аргументов.

В вызове функции можно использовать одновременно и позиционные, и ключевые аргументы, как в приведенном ниже примере, где есть один позиционный аргумент и один аргумент ключевого слова:

В этом случае порядок снова имеет значение.

Позиционные аргументы всегда идут первыми, а все ключевые аргументы должны следовать за позиционными аргументами. В противном случае будет ошибка:

Как определить параметр со значением по умолчанию в Python

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

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

Вы делаете это с помощью формы ключ=значение, где значение будет значением по умолчанию для этого параметра.

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

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

Функции может быть передано более одного значения по умолчанию.

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

Аргументы по умолчанию можно комбинировать с аргументами не по умолчанию при вызове функции.

Вот функция, которая принимает два аргумента: один позиционный, не по умолчанию ( имя ) и один необязательный, по умолчанию ( язык ).

Аргумент по умолчанию, langyage="Python" , является необязательным. Но позиционный аргумент name всегда будет требоваться. Если другой язык не передан, значением по умолчанию всегда будет Python.

Еще одна вещь, которую следует упомянуть здесь, это то, что когда значения по умолчанию и не по умолчанию используются вместе, порядок их определения в определении функции имеет значение.

Все позиционные аргументы идут первыми, а за ними следуют аргументы по умолчанию.

Это не сработает:

Заключение

Из этой статьи вы узнали, как объявлять функции и вызывать их с параметрами на языке программирования Python.

Это было введение в то, как создавать простые функции и как передавать в них данные с параметрами. Мы также рассмотрели различные типы аргументов, такие как позиционные, ключевые слова и аргументы по умолчанию.

  • Порядок и количество позиционных аргументов имеют значение.
  • С аргументами keyword порядок не имеет значения. Однако число имеет значение, поскольку каждый аргумент ключевого слова соответствует каждому параметру в определении функции.
  • Аргументы
  • по умолчанию являются необязательными. Вы можете пройти все из них, некоторые из них или вообще ничего.

Если вы заинтересованы в более глубоком изучении языка программирования Python, у freeCodeCamp есть бесплатная сертификация Python.

Вы начнете с основ языка, а затем перейдете к более сложным понятиям, таким как структуры данных и реляционные базы данных. В итоге вы создадите 5 проектов, чтобы применить полученные знания на практике.

Читайте также: