Он работает следующим образом:
s1
неявно преобразуется в строку (s1.toString()
), в результате получается [Ljava.lang.String;@2a139a55
. 1
добавляется к указанной выше строке. Это приводит к [Ljava.lang.String;@2a139a55 1
varargs()
. «Точка входа» - это, как правило, функция (или другой вызываемый функциональный объект), который может захотеть использовать разработчик или пользователь вашего пакета Python, хотя не вызываемый объект может быть также предоставляется в качестве точки входа (как правильно указано в комментариях!).
Самым популярным видом точки входа является точка входа console_scripts , которая указывает на функцию, которую вы хотите сделать доступной в качестве инструмента командной строки для тех, кто устанавливает ваш пакет. Это входит в ваш setup.py как:
entry_points={
'console_scripts': [
'cursive = cursive.tools.cmd:cursive_command',
],
},
У меня есть только что развернутый пакет, который называется cursive.tools, и я хотел, чтобы он сделал доступной команду «cursive», которую кто-то может запустить из командной строки, например :
$ cursive --help
usage: cursive ...
Способ сделать это - определить функцию, например, функцию «cursive_command» в cursive / tools / cmd. пи, которая выглядит как:
def cursive_command():
args = sys.argv[1:]
if len(args) < 1:
print "usage: ..."
и так далее; следует предположить, что он был вызван из командной строки, проанализировать аргументы, предоставленные пользователем, и ... ну, делать то, для чего предназначена команда.
Установить пакет docutils для отличный пример использования точки входа: он установит что-то вроде полдюжины полезных команд для преобразования документации Python в другие форматы.
С абстрактной точки зрения точки входа используются для создания общесистемного реестра вызовов Python, которые реализуют определенные интерфейсы , В pkg_resources есть API для просмотра того, какие точки входа объявляются данным пакетом, а также API для определения того, какие пакеты рекламируют определенную точку входа.
Точки входа полезны для того, чтобы один пакет мог использовать плагины, которые есть в другом пакете. Например, проект Яна Бикинга Paste широко использует точки входа. В этом случае вы можете написать пакет, который рекламирует свою фабрику приложений WSGI, используя точку входа paste.app_factory
.
Другое использование точек входа - перечисление всех пакетов в системе, которые предоставляют некоторые функциональные возможности плагинов. Веб-инфраструктура TurboGears использует точку входа python.templating.engines
для поиска библиотек шаблонов, которые установлены и доступны.