Несу ли я ответственность за реализацию кода, который вызывает исключение check_unused_args (used_args, args, kwargs)? - PullRequest
0 голосов
/ 12 июля 2020

Я просматривал документы о строковом модуле в python, и я наткнулся на это описание метода check_unused_args:

Проверка на наличие неиспользуемых аргументы при желании. Аргументы этой функции - это набор всех ключей аргументов, которые фактически упоминались в строке формата (целые числа для позиционных аргументов и строки для именованных аргументов), а также ссылка на args и kwargs, переданная в vformat. Набор неиспользуемых аргументов можно рассчитать по этим параметрам. Предполагается, что check_unused_args () вызовет исключение, если проверка не удалась.

Я просмотрел код строкового модуля и нашел это определение (внутри класса Formatter):

def check_unused_args(self, used_args, args, kwargs):
    pass

Неудивительно, что когда я запустил код a = "{b}".format(b=5,c=3), он не вернул ошибку. Вызывает ли это метод check_unused_args?

Почему в документации сказано, что «check_unused_args () вызывает исключение»? Означает ли это, что я несу ответственность за реализацию кода, вызывающего исключение? Или я ошибаюсь насчет того, когда / как вызывается метод check_unused args?

Заранее спасибо! (Извините за этот вопрос, я новичок в python)

1 Ответ

0 голосов
/ 13 июля 2020

После некоторых экспериментов я наконец выяснил, что произошло. Я изменил инструкцию pass (как показано выше) на raise Exception и заметил, что с кодом import string a = "{b}".format(b=5,c=3) ничего не произошло. Однако, когда я определил свой собственный формат (используя

import string 
a = string.Formatter()
a.format("{}",1)

), возникла ошибка. Чтобы ответить на мой вопрос:

Вызывает ли это метод check_unused_args?

Нет. Встроенный метод .format () не вызывает метод check_unused_args, только определенные пользователем классы Formatter. Вы должны заменить код каждого класса. мои наблюдения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...