Как добавить встроенные функции

Я новичок в программировании на питоне. Как добавить новые встроенные функции и ключевые слова в интерпретатор python с помощью C или С++?

Ответ 1

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

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

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

Если вы новичок в программировании на Python и чувствуете, что должны изменять основной язык в своей повседневной работе, это, вероятно, показатель, который вы должны просто узнать больше об этом. Python используется немодифицированным для огромного числа различных проблемных областей (например, numpy - это расширение, которое облегчает научные вычисления, а Blender использует его для 3D-анимации), поэтому вполне вероятно, что язык также сможет обрабатывать вашу проблемную область.

†: вы можете изменить модуль __builtin__ чтобы "добавлять новые встроенные функции"… Но это почти наверняка плохая идея: любой код, который зависит от него, будет очень трудно (и сбить с толку) использовать где-либо вне контекста его исходного приложения. Рассмотрим, например, если вы добавляете "встроенный" greater_than_zero, то используйте его где-нибудь еще:

$ cat foo.py
import __builtin__
__builtin__.greater_than_zero = lambda x: x > 0

def foo(x):
    if greater_than_zero(x):
        return "greater"
    return "smaller"

Любой, кто попытается прочитать этот код, будет сбит с толку, потому что он не будет знать, где определено greater_than_zero, и любой, кто попытается использовать этот код из приложения, которое не greater_than_zero в __builtin__, не сможет его использовать.

Лучшим методом является использование существующего оператора import Python: http://docs.python.org/tutorial/modules.html