Что вам не хватает, так это то, что matches
заполняется одной записью для каждой группы захвата (включая всю согласованную подстроку как 0-й захват).
Если вы пишете
std::regex needle("a(b)c");
] , то вы получите matches.size()==2
, с matches[0]=="abc"
и matches[1]=="b"
.
Из комментария - не вопрос.
мне просто любопытно видеть, возможно ли то, что я пытаюсь сделать.
ответ на ", это возможный" всегда является "да". Всегда. Если Ваш вопрос не включает путешествие во времени, антигравитационное или вечное движение.
, Так как ответ всегда - "да", Ваш вопрос плохо формируется. Реальный вопрос, "что хороший путь состоит в том, чтобы иметь мой модуль входа, знают имя клиента?" или что-то как этот.
ответ, "Принимают его в качестве параметра". Не бездельничайте с осмотром или поиском таинственного globals или других приемов.
Просто следуют шаблону разработки logging.getLogger () и используют явно названные регистраторы. Общая идиома является следующим
logger= logging.getLogger( __name__ )
, Который обрабатывает почти весь журнал, называющий отлично.
"В настоящее время выполняющийся модуль" ясно является нечто, поскольку это - то, что содержит функцию, в настоящее время работающую - я думаю лучшее описание относительно того, что Вы хотите, модуль непосредственной вызывающей стороны нечто (который может самостоятельно быть нечто, если Вы называете f () от функции в нечто названным функцией в панели. То, как далеко Вы хотите подняться, зависит от того, для чего Вы хотите это.
В любом случае, принимая Вы хотите непосредственную вызывающую сторону, можно получить это путем хождения по стеку вызовов. Это может быть выполнено путем вызова sys._getframe
с aprropriate количеством уровней для обхода.
def f():
caller = sys._getframe(1) # Obtain calling frame
print "Called from module", caller.f_globals['__name__']
[Редактирование] : На самом деле использование эти осматривает , модуль, как предложено выше является, вероятно, более чистым способом получить стековый фрейм. Эквивалентный код:
def f():
caller = inspect.currentframe().f_back
print "Called from module", caller.f_globals['__name__']
(sys. _ getframe документируется как являющийся для внутреннего пользования - осмотреть модуль является более надежным API)
Я думаю, что Вы хотите использовать, эти , осматривают модуль, для осмотра стека этапа выполнения Python. Проверьте этот учебное руководство . Я думаю, что это обеспечивает почти точный пример того, что Вы хотите сделать.
__file__
путь текущего модуля, вызов выполняется.
Это было некоторое время, так как я сделал Python, но я полагаю, что можно получить доступ к globals и местным жителям вызывающей стороны через traceback.
Я не полагаю, что это возможно, так как это вне foo
объем. нечто будет только знать о своем внутреннем объеме, так как это могут называть бесчисленные другие модули и приложения.