Питон википедия: Python — Викиучебник

Руководство:Pywikibot — MediaWiki

Languages:

  • Bahasa Indonesia
  • Bân-lâm-gú
  • Deutsch
  • English
  • Tiếng Việt
  • Türkçe
  • Zazaki
  • asturianu
  • azərbaycanca
  • català
  • dansk
  • español
  • euskara
  • français
  • italiano
  • lietuvių
  • norsk bokmål
  • oʻzbekcha / ўзбекча
  • polski
  • português do Brasil
  • shqip
  • slovenčina
  • svenska
  • čeština
  • Ελληνικά
  • беларуская (тарашкевіца)
  • български
  • русский
  • українська
  • հայերեն
  • עברית
  • اردو
  • العربية
  • فارسی
  • नेपाली
  • हिन्दी
  • বাংলা
  • ไทย
  • 中文
  • 日本語
  • 粵語
  • 한국어

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

Запуск бота

  • Что такое Pywikibot?
  • Узнайте как установить и настроить Pywikibot
  • Познакомиться с доступными скриптами для Pywikibot

Написание бота

  • Как написать простой скрипт
  • Прочитать документацию на doc.wikimedia.org
  • Узнать, как взаимодействовать с Wikidata
  • Take ideas from Pywikibot Cookbook

Разработка Pywikibot

  • Узнайте, как внести вклад в Pywikibot
  • Исследуйте исходный код на Gerrit (зеркало на GitHub, зеркало на Diffusion, инструмент Codesearch)
  • Список багов в Pywikibot
  • Узнайте, как переводить Pywikibot

Получить помощь

  • Используйте IRC-канал #pywikibot подключиться для возможности быстро задать вопрос
  • Подпишитесь на лист рассылки, чтобы иметь возможность задавать комплексные вопросы и делиться информацией
  • Получить больше помощи на других каналах поддержки
  • Поддержка миграции с Python 2 на Python 3
  • Поддержка совместимости Pywikibot с миграцией ядра

См.

также
  • Совместимость Pywikibot с Python и MediaWiki
  • Википедия:Рекомендации юному ботоводу
  • mwparserfromhell (wikicode-парсер, написанный на Python’е)
  • Другие боты на Python’е

Pywikibot

2020 Coolest Tool
Award Winner

in the category
Developer

Новости

Выпущен новый стабильный релиз 8.0.1. Он помечен тэгом stable.
Выпущен новый стабильный релиз 8.0.
A new stable release 7.7.3 has been deployed.
 Заметка: This is the last release supporting Python 3.5.
Доступны финальные релизы Python 3.11.1, 3.10.9, 3.9.16, 3.8.16 и 3.7.16.
A new stable release 7. 7.2 has been deployed.
Python 3.11.0 final release is available.
A new stable release 7.7.1 has been deployed.
Выпущен новый стабильный релиз 7.7.
Доступны финальные релизы Python 3.10.7, 3.9.14, 3.8.14 и 3.7.14.
Выпущен новый стабильный релиз 7.6.

Самообучаемый чат-бот python, который умеет искать ответы в Wikipedia / Хабр

Всем привет!

Давно хотел сделать своего собственного Jarvis. Недавно удалась свободная минутка и я его сделал. Он умеет переписываться с Вами, а также искать ответы на Ваши вопросы в Wikipedia. Для его реализации я использовал язык Python.

Для начала установим все необходимые библиотеки. Их три: pyTelegramBotAPI, scikit-learn, а также Wikipedia. Устанавливаются они просто:

pip install pyTelegramBotAPI
pip install Wikipedia
pip install scikit-learn

После установки всех библиотек приступаем к разработке. Для начала импортируем все библиотеки, установим язык для Википедии и подключим телеграмм бота

import telebot, wikipedia, re
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
wikipedia.set_lang("ru")
bot = telebot.TeleBot('Ваш ключ, полученный от BotFather')

Теперь напишем код, для очистки всех ненужных нам знаков, которые вводит пользователь:

def clean_str(r):
	r = r.lower()
	r = [c for c in r if c in alphabet]
	return ''.join(r)
alphabet = ' 1234567890-йцукенгшщзхъфывапролджэячсмитьбюёqwertyuiopasdfghjklzxcvbnm?%.,()!:;'

Также Вам необходимо создать в папке, где находится Ваш код файл dialogues.txt, в нем мы будем создавать реплики на которые должен отвечать бот. Вот пример данного файла:

привет\здравствуйте!
как дела\хорошо. 
кто ты\я Джарвис.

Строка до знака \ означает вопрос пользователя, а после ответ нашего бота. После чего напишем такой код в наш файл с ботом:

def update():
	with open('dialogues.txt', encoding='utf-8') as f:
		content = f.read()
	
	blocks = content.split('\n')
	dataset = []
	
	for block in blocks:
		replicas = block.split('\\')[:2]
		if len(replicas) == 2:
			pair = [clean_str(replicas[0]), clean_str(replicas[1])]
			if pair[0] and pair[1]:
				dataset.append(pair)
	
	X_text = []
	y = []
	
	for question, answer in dataset[:10000]:
		X_text.append(question)
		y += [answer]
	
	global vectorizer
	vectorizer = CountVectorizer()
	X = vectorizer.fit_transform(X_text)
	
	global clf
	clf = LogisticRegression()
	clf.fit(X, y)
update()

Этот кусок кода читает файл dialogues.txt, потом превращает реплики в так называемые вектора, с помощью которых наш бот будет искать наиболее подходящий ответ к заданному нами вопросу. Например, если Вы написали в файле dialogues. \{\}]*\}’, », wikitext2) return wikitext2 except Exception as e: return ‘В Википедии нет информации об этом’

Этот кусок кода получает вопрос пользователя, потом ищет ответ на него в Википедии и если ответ найден, то отдает его пользователю, а если ответ не найден, то пишет, что «В Википедии нет информации об этом».

Теперь пишем последний кусок кода:

@bot.message_handler(commands=['start'])
def start_message(message):
	bot.send_message(message.chat.id,"Здравствуйте, Сэр.")
question = ""
@bot.message_handler(content_types=['text'])
def get_text_messages(message):
	command = message.text.lower()
	if command =="не так":
		bot.send_message(message.from_user.id, "а как?")
		bot.register_next_step_handler(message, wrong)
	else:
		global question
		question = command
		reply = get_generative_replica(command)
		if reply=="вики ":
			bot.send_message(message.from_user.id, getwiki(command))
		else:
			bot.send_message(message.from_user.id, reply)
def wrong(message):
	a = f"{question}\{message. text.lower()} \n"
	with open('dialogues.txt', "a", encoding='utf-8') as f:
		f.write(a)
	bot.send_message(message.from_user.id, "Готово")
	update()

В этом куске кода телеграмм бот при получении сообщения от пользователя отвечает на него и если ответ не верный, то пользователь пишет «не так». Если бот получает сообщение «не так», то он берет последний вопрос пользователя и спрашивает «а как?», после чего пользователь должен отправить ему правильный ответ. После этого бот обновляет свою базу данных вопросов и ответов и при следующих вопросах пользователя отвечает на них правильно. И если ответ на вопрос бот должен был взять из Википедии, то пользователь в ответ на вопрос «а как?», должен написать «wiki». Осталось в конце приписать строчку:

bot.polling(none_stop=True)

И можно запускать и тестировать бота.

Весь код файла с ботом прилагаю ниже:

import telebot, wikipedia, re
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.linear_model import LogisticRegression
bot = telebot.
TeleBot('Ваш ключ от BotFather') wikipedia.set_lang("ru") def clean_str(r): r = r.lower() r = [c for c in r if c in alphabet] return ''.join(r) alphabet = ' 1234567890-йцукенгшщзхъфывапролджэячсмитьбюёqwertyuiopasdfghjklzxcvbnm?%.,()!:;' def update(): with open('dialogues.txt', encoding='utf-8') as f: content = f.read() blocks = content.split('\n') dataset = [] for block in blocks: replicas = block.split('\\')[:2] if len(replicas) == 2: pair = [clean_str(replicas[0]), clean_str(replicas[1])] if pair[0] and pair[1]: dataset.append(pair) X_text = [] y = [] for question, answer in dataset[:10000]: X_text.append(question) y += [answer] global vectorizer vectorizer = CountVectorizer() X = vectorizer.fit_transform(X_text) global clf clf = LogisticRegression() clf.fit(X, y) update() def get_generative_replica(text): text_vector = vectorizer.transform([text]).toarray()[0] question = clf.predict([text_vector])[0] return question def getwiki(s): try: ny = wikipedia.
\{\}]*\}', '', wikitext2) return wikitext2 except Exception as e: return 'В энциклопедии нет информации об этом' @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id,"Здравствуйте, Сэр.") question = "" @bot.message_handler(content_types=['text']) def get_text_messages(message): command = message.text.lower() if command =="не так": bot.send_message(message.from_user.id, "а как?") bot.register_next_step_handler(message, wrong) else: global question question = command reply = get_generative_replica(command) if reply=="вики ": bot.send_message(message.from_user.id, getwiki(command)) else: bot.send_message(message.from_user.id, reply) def wrong(message): a = f"{question}\{message.text.lower()} \n" with open('dialogues.txt', "a", encoding='utf-8') as f: f.write(a) bot.send_message(message.from_user.id, "Готово") update() bot.polling(none_stop=True)

Надеюсь, статья Вам понравилась 🙂

Python (язык программирования) — Простая английская Википедия, бесплатная энциклопедия

Из Простая английская Википедия, бесплатная энциклопедия

Эта статья о языке программирования. Чтобы узнать о змее, см. Питон .

Python — это язык программирования с открытым исходным кодом. Это было сделано, чтобы быть легким для чтения и понимания и мощным. Голландский программист по имени Гвидо ван Россум создал Python в 1991 году. Он назвал его в честь телевизионной программы «Летающий цирк Монти Пайтона». Многие примеры и руководства по Python содержат шутки из шоу. [31]

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

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

Python черпал вдохновение из других языков программирования, таких как C, C++, Java, Perl и Lisp.

Разработчики Python стараются не менять язык, чтобы сделать его лучше, пока у них не появится много вещей, которые нужно изменить. Кроме того, они стараются не вносить мелкие исправления, называемые исправлениями, в несущественные части эталонной реализации CPython, которые могли бы сделать ее быстрее. Когда важна скорость, программист Python может перенести часть работы программы на другие части, написанные на таких языках программирования, как C или PyPy, компиляторе «точно в срок». Он переводит скрипт Python на язык C и выполняет прямые вызовы API уровня C в интерпретаторе Python.

Сделать использование Python интересным — важная цель разработчиков Python. Это отражено в названии языка, дань уважения британской комедийной группе Monty Python. Иногда к учебным пособиям и справочным материалам применяются игровые подходы, например, ссылки на спам и яйца вместо стандартных foo и bar.

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

Его стандартная библиотека состоит из многих функций, которые поставляются с Python при его установке. [32] В Интернете есть много других библиотек, которые были исследованы для обеспечения замечательных результатов в различных областях, таких как машинное обучение (ML), глубокое обучение и т. д. [33] Эти библиотеки делают его мощным языком; он может делать много разных вещей.

Часть синтаксиса Python происходит от C, потому что это язык, на котором Python был написан. Но Python использует пробелы для разделения кода: пробелы или табуляции используются для организации кода в группы. Это отличается от C. В C есть точка с запятой в конце каждой строки, а фигурные скобки ({}) используются для группировки кода. Использование пробелов для разделения кода делает Python очень удобным для чтения языком. [34]

Операторы и поток управления[change | изменить источник]

Операторы Python включают:

  • Оператор присваивания или знак =. В Python оператор x = 2 означает, что имя x связано с целым числом 2. Имена в Python могут быть повторно связаны со многими различными типами, поэтому Python является языком с динамической типизацией. Например, теперь вы можете ввести оператор x = 'spam' , и он будет работать, но не будет работать на другом языке, таком как C или C++.
  • Оператор if, который запускает блок кода при выполнении определенных условий вместе с else и elif (сокращение else if из других языков программирования). Оператор elif запускает блок кода, если предыдущие условия не выполняются, но выполняются условия для оператора elif. Оператор else запускает блок кода, если ни одно из предыдущих условий не выполняется.
  • Оператор for, который выполняет итерацию по итерируемому объекту, такому как список, и привязывает каждый элемент этого объекта к переменной для использования в этом блоке кода, что создает цикл for.
  • Оператор while, выполняющий блок кода при выполнении определенных условий, что создает цикл while.
  • Оператор def, определяющий функцию или метод.
  • Оператор pass, означающий «ничего не делать».
  • Оператор класса, который позволяет пользователю создавать объекты собственного типа, такие как целые числа и строки.
  • Оператор импорта, который импортирует файлы Python для использования в пользовательском коде.
  • Оператор печати, который выводит различные данные на консоль.

Выражения[изменить | изменить источник]

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

  • Сложение, вычитание, умножение и деление, представленные +, -. *, и /.
  • Экспоненты, представленные **.
  • Чтобы сравнить два значения, Python использует ==.
  • Python использует слова «и», «или» и «не» для логических выражений.

Это небольшой пример программы на Python. Он показывает «Привет, мир!» на экране.

 печать ("Привет, мир!")
# Этот код делает то же самое, только длиннее:
готов = Истина
если готов:
    print("Привет, мир!")
 

Python также делает то, что называется «динамическим назначением переменных». Это означает, что когда число или слово составляются в программе, пользователю не нужно говорить, к какому типу оно относится. Это упрощает повторное использование имен переменных, упрощая быстрые изменения. Пример этого показан ниже. Этот код создаст и число, и слово, и покажет их оба, используя только одну переменную.

 х = 1
печать (х)
х = "Слово"
печать (х)
 

В «статически типизированном» языке, таком как C, программист должен был бы сказать, является ли x числом или словом, прежде чем C позволит программисту установить x , и после этого C не разрешит его тип перейти от числа к слову.

  1. «Общие часто задаваемые вопросы по Python — документация по Python 3.9.2». docs.python.org . Архивировано из оригинала 24 октября 2012 г. Проверено 28 марта 2021 г.
  2. «Python 0.9.1, часть 21 января». архивы alt.sources. Архивировано из оригинала 11 августа 2021 года. Проверено 11 августа 2021.
  3. «Доступны Python 3.11.2, Python 3.10.10 и 3.12.0 альфа 5». 8 февраля 2023 г. Проверено 8 февраля 2023 г. .
  4. «Выпущен Python 3.12.0 alpha 6». 7 марта 2023 г. Проверено 8 марта 2023 г. .
  5. «Почему Python является динамическим языком, а также строго типизированным языком — Python Wiki». wiki.python.org . Архивировано из оригинала 14 марта 2021 года. Проверено 27 января 2021 года.
  6. «PEP 483 — Теория подсказок типов». Python.org . Архивировано из оригинала 14 июня 2020 г. Проверено 14 июня 2018 г. .
  7. «Скачать Python». Python.org . Архивировано из оригинала 8 августа 2018 года. Проверено 24 мая 2021 г.
  8. ↑ Расширение файла .pyo было удалено в Python 3.5. См. PEP 0488, заархивировано 1 июня 2020 г. на Wayback Machine.
  9. Холт, Мур (30 марта 2014 г.). «PEP 0441 — Улучшение поддержки приложений Python ZIP» . Архивировано из оригинала 26 декабря 2018 г. Проверено 12 ноября 2015 г. .
  10. «Язык звездных жаворонков». Архивировано из оригинала 15 июня 2020 года. Проверено 25 мая 2019 года.
  11. «Зачем вообще был создан Python?». Общие вопросы и ответы по Python . Фонд программного обеспечения Python. Архивировано из оригинала 24 октября 2012 г. Проверено 22 марта 2007 г.
  12. «Справочное руководство по Ada 83 (оператор повышения)». Архивировано из оригинала 22 октября 2019 года. Проверено 7 января 2020 года.
  13. Кухлинг, Эндрю М. (22 декабря 2006 г.). «Интервью с Гвидо ван Россумом (июль 1998 г. )». amk.ca . Архивировано из оригинала 1 мая 2007 г. Проверено 12 марта 2012 г. .
  14. 14.0 14.1 «itertools — Функции, создающие итераторы для эффективного зацикливания — Документация по Python 3.7.1». docs.python.org . Архивировано из оригинала 14 июня 2020 г. Проверено 22 ноября 2016 г. .
  15. ван Россум, Гвидо (1993). «Введение в Python для программистов UNIX/C». Материалы NLUUG Najaarsconferentie (Голландская группа пользователей UNIX) . CiteSeerX 10.1.1.38.2023. , несмотря на то, что дизайн языка C далек от идеала, его влияние на Python значительно.
  16. 16.0 16.1 «Классы». Учебник по Python . Фонд программного обеспечения Python. Архивировано из оригинала 23 октября 2012 г. Проверено 20 февраля 2012 г. Это смесь механизмов классов, используемых в C++ и Modula-3
  17. Лунд, Фредрик. «Вызов по объекту». effbot.org . Архивировано из оригинала 23 ноября 2019 года. Проверено 21 ноября 2017 года. замените «CLU» на «Python», «запись» на «экземпляр» и «процедуру» на «функцию или метод», и вы получите довольно точное описание. объектной модели Python.
  18. Симионато, Микеле. «Порядок разрешения метода Python 2.3». Фонд программного обеспечения Python. Архивировано из оригинала 20 августа 2020 года. Проверено 29 июля 2014 года. Сам по себе метод C3 не имеет ничего общего с Python, поскольку он был изобретен людьми, работающими над Диланом, и описан в статье, предназначенной для шепелявых .
  19. Кухлинг, А. М. «HOWTO по функциональному программированию». Документация Python v2.7.2 . Фонд программного обеспечения Python. Архивировано из оригинала 24 октября 2012 года. Проверено 9.Февраль 2012.
  20. Шеменауэр, Нил; Питерс, Тим; Хетланд, Магнус Ли (18 мая 2001 г.). «PEP 255 – Простые генераторы». Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 5 июня 2020 г. Проверено 9 февраля 2012 г. .
  21. Смит, Кевин Д.; Джуэтт, Джим Дж.; Монтанаро, Скип; Бакстер, Энтони (2 сентября 2004 г.). «PEP 318 – Декораторы для функций и методов». Предложения по улучшению Python . Фонд программного обеспечения Python. Архивировано из оригинала 3 июня 2020 г. Проверено 24 февраля 2012 г.
  22. «Дополнительные инструменты управления потоком». Документация Python 3 . Фонд программного обеспечения Python. Архивировано из оригинала 4 июня 2016 года. Проверено 24 июля 2015 года.
  23. «CoffeeScript». coffeescript.org . Архивировано из оригинала 12 июня 2020 г. Проверено 3 июля 2018 г. .
  24. «Учебник по языку программирования Genie». Архивировано из оригинала 1 июня 2020 года. Проверено 28 февраля 2020 года.
  25. «Влияние Perl и Python на JavaScript». www.2ality.com . 24 февраля 2013 г. Архивировано из оригинала 26 декабря 2018 г. Проверено 15 мая 2015 г.
  26. Раушмайер, Аксель. «Глава 3: Природа JavaScript; влияние». О’Рейли, говорящий на JavaScript . Архивировано из оригинала 26 декабря 2018 г. Проверено 15 мая 2015 г. .
  27. «Почему мы создали Джулию». Юлия сайт . Февраль 2012 г. Архивировано из оригинала 2 мая 2020 г. Проверено 5 июня 2014 г. Нам нужно что-то такое же пригодное для общего программирования, как Python […]
  28. Ring Team (4 декабря 2017 г.). «Ринг и другие языки». ring-lang.net . кольцевой язык. Архивировано из оригинала 25 декабря 2018 г. Проверено 4 декабря 2017 г. .
  29. Бини, Ола (2007). Практические проекты JRuby on Rails Web 2.0: перенос Ruby on Rails на платформу Java . Беркли: APress. п. 3. ISBN 978-1-59059-881-8 .
  30. Латтнер, Крис (3 июня 2014 г. ). «Домашняя страница Криса Латтнера» . Крис Латтнер. Архивировано из оригинала 25 декабря 2018 года. Проверено 3 июня 2014 года. Язык Swift является продуктом неустанных усилий команды языковых экспертов, гуру документации, ниндзя по оптимизации компилятора и невероятно важной внутренней группы тестирования, которая предоставила отзывы, чтобы помочь уточняйте и тестируйте идеи. Конечно, он также сильно выиграл от опыта, с трудом завоеванного многими другими языками в этой области, черпая идеи из Objective-C, Rust, Haskell, Ruby, Python, C#, CLU и слишком многих других, чтобы их можно было перечислить.
  31. «Юмор о Питоне». Python.org . Проверено 19 сентября 2020 г. .
  32. «Кодирование на Python | Базовый лагерь данных». 2021-11-27. Проверено 29 августа 2022 г. .
  33. Ядав, Прамод (09.10.2020). «25 лучших библиотек Python для проектов по науке о данных — моя школа программирования» . Моя школа программирования . Проверено 22 декабря 2022 г. . {{цитировать в Интернете}} : CS1 maint: URL-статус (ссылка)
  34. Сах, Рокки (2022). «Как Python анализирует пустое пространство». Codelivly — Путь для программистов . {{цитировать в Интернете}} : CS1 maint: URL-статус (ссылка)
  • Учебник по Python
  • Изучение Python

Реализации Python — Python Wiki

Содержание

  1. Реализации Python
    1. Варианты CPython
      1. Сокращенные варианты Python
    2. Другие реализации
      1. Рабочие реализации
      2. Предварительные реализации
    3. Расширения
    4. Компиляторы
    5. Числовые ускорители
    6. Похожие, но разные языки
    7. Руководства по темам
    8. (Веселье) Препроцессоры Python
    9. Academic Projects

Под «реализацией» Python следует понимать программу или среду, которая обеспечивает поддержку выполнения программ, написанных на языке Python, представленном эталонной реализацией CPython.

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

Варианты CPython

Это реализации, основанные на ядре среды выполнения CPython (де-факто эталонная реализация Python), но с расширенным поведением или функциями в некоторых аспектах.

  • CrossTwine Linker — комбинация CPython и дополнительной библиотеки, обеспечивающая повышенную производительность (в настоящее время проприетарная)

  • Stackless Python — CPython с упором на параллелизм с использованием тасклетов и каналов (используется dspython для Nintendo DS)

  • Pyston — форк CPython, первоначально разработанный в Dropbox, но теперь независимыми разработчиками, ориентированный на производительность, включая ускорение байт-кода и упрощенный JIT.

  • Cinder, форк CPython от Instagram, содержащий ряд оптимизаций, таких как переписывание байт-кода и JIT-компилятор метода за раз.

  • Pyjion, расширение JIT для CPython, которое компилирует код Python в CIL (.NET) и выполняет его в среде CLR.

  • unladen-swallow — «ветвь оптимизации CPython, предназначенная для полной совместимости и значительного ускорения», изначально рассматривалась для слияния с CPython в соответствии с PEP 3146, но теперь не поддерживается

  • S6, расширение JIT для CPython также содержит собственный интерпретатор байт-кода

  • wpython — повторная реализация CPython с использованием «кода слова» вместо байт-кода0003

  • x-python — Интерпретатор C Python, написанный на Python; полезно в образовательных целях. Для него также существует отладчик байт-кода

  • Falcon — регистровая машина Python, поставляемая в виде модуля расширения

Сокращенные варианты Python

Они предоставляют подмножество полной языковой + стандартной библиотеки для использования во встроенных сценариях (см. также тему EmbeddedPython)

Также просмотрите разделы о компиляторах и расширениях Python ниже, некоторые из которых можно квалифицировать как варианты CPython.

Другие реализации

Это повторные реализации языка Python, которые не зависят (или обязательно взаимодействуют) с ядром среды выполнения CPython. Многие из них повторно используют (большую часть) реализацию стандартной библиотеки.

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

Рабочие реализации

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

  • PyPy — Python в Python, включает отслеживающий JIT-компилятор

  • Jython — Python на Java для платформы Java

  • IronPython — Python на C# для Common Language Runtime (CLR/. NET) и IronPython Community Edition (IPCE) 9 проекта FePy0003

  • GraalPython — Python на Java с использованием своевременного компилятора Graal и среды реализации интерпретатора Truffle. .

  • Brython — способ запуска Python в браузере через трансляцию в JavaScript

  • CLPython — Python в Common Lisp информация о типе, собранная во время выполнения

  • pyjs — (формально Pyjamas) компилятор Python в JavaScript плюс фреймворк Web/GUI

  • PyMite — Python для встраиваемых устройств

  • содержит систему «пространства пользователя»

  • RapydScript — язык, подобный Python, который компилируется в JavaScript

  • SNAPpy — «подмножество языка Python, оптимизированное для использования в маломощных встраиваемых устройствах» (очевидно, проприетарное)

  • tinypy — минималистская реализация Python в 64 КБ кода

  • Transcrypt — прекомпилятор Python 3. 6 в JavaScript с компактным и быстро сгенерированным кодом, исходными картами, встроенной минимизацией, дополнительной статической проверкой типов, поддержкой JSX

Предварительные реализации

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

  • Berp — реализация Python 3 на Haskell, предоставляющая интерактивную среду, а также компилятор

  • phpython — интерпретатор Python, написанный на PHP

  • Pyjaco — компилятор Python в JavaScript, похожий на Pyjs, но более легкий web.archive.org/web/20041206021225if_/http://www.twistedmatrix.com/users/z3p/files/pyvm2.py — интерпретатор байт-кода CPython 2, написанный на Python 2, заброшенный, упомянутый в списке рассылки PyPy в 2003 г.

  • Skulpt — Python на JavaScript

  • Typhon — реализация Python на основе Rubinius

  • Violet — реализация Python на Swift

  • RustPython — интерпретатор Python, написанный на RustPython. Направлен на совместимость с Python 3.11+.

Расширения

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

Компиляторы

Эти компиляторы обычно реализуют что-то близкое к Python, хотя некоторые компиляторы могут накладывать ограничения, изменяющие характер языка:

  • Cython — широко используемый оптимизирующий компилятор Python-to-C, генератор модулей расширения CPython и язык-оболочка для привязки внешних библиотек. Взаимодействует со средой выполнения CPython и поддерживает встраивание CPython в автономные двоичные файлы.

  • Nuitka — компилятор Python-C++, использующий libpython во время выполнения и пытающийся оптимизировать время компиляции и время выполнения. Взаимодействует со средой выполнения CPython.

  • MyPyC компилирует полностью типизированный код Python в расширение C на основе mypy.

  • 2c-python — статический компилятор Python-to-C, очевидно переводящий байт-код CPython в C Front-End — незавершенная работа по компиляции кода Python в инфраструктуре GCC

  • Pyc — выполняет статический анализ для компиляции программ Python, использует методы, аналогичные Shed Skin

  • Shed Skin — компилятор Python-C++, ограниченный неявно статически типизированным подмножеством языка, для которого он может автоматически выводить эффективные типы посредством анализа всей программы

  • unPython — компилятор Python-C введите аннотации

  • VOC — транспилятор, который преобразует байт-код Python в байт-код Java.

Числовые ускорители

  • Numba — оптимизирующий компилятор времени выполнения с поддержкой NumPy для Python

  • Pythran — опережающий компилятор для подмножества Python с упором на научные вычисления

  • Copperhead — чисто функциональный Python с параллельными данными, компилируется в многоядерные и графические серверные части

  • Parakeet — компилятор времени выполнения для числового подмножества Python

Похожие, но разные языки

Эти языки не пытаются быть напрямую совместимыми даже с подмножеством Python, предоставляя свой собственный набор функций:

  • Alore — компилируемый язык с опциональной типизацией и синтаксисом, вдохновленным Python/Ruby; планируется построить мост Алоре-Питон; разработка была перенесена на mypy (см. ниже)

  • Cobra

  • Converge — вдохновлен Python, Haskell, Icon и Smalltalk, предоставляет макросы, которые можно оценить во время компиляции

  • Delight — на основе язык программирования D

  • Genie — основан на тех же основах (Gtk+, GNOME), что и язык программирования Vala, предположительно вдохновленный Boo

  • mypy — Python с опциональной статической типизацией и некоторым локальным выводом типов , C++ и JS, включает параметризованные типы, макросы и т. д.

  • Pythonect — язык, ориентированный на поток данных, использующий базовый синтаксис выражений Python, реализованный в Python и интегрированный со средой Python

  • Защищенный язык Roket — интерпретатор Python-подобного языка для приложений, где требуется «ограниченное выполнение Python». подробнее)

  • Serpentine — язык с Python-подобным синтаксисом для виртуальной машины Dalvik

  • Wirbel — компилируемый язык с ограничениями, аналогичными Shed Skin (статически типизированные имена, списки не могут смешивать элементы разных типов), больше не разрабатывается активно по состоянию на 21 июля 2011 г.

Сравнение:

  • Сравнение Genie и Wirbel и Genie и Python, проведенное ведущим разработчиком дистрибутива Puppy Linux Руководства по темам

    • EmbeddedPython

    • Дистрибутивы Python

    (Веселье) Препроцессоры Python

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

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *