Лучший способ сделать это с помощью стандартной функции.Лямбда действительно полезна только тогда, когда вы должны передать аргументы функции, что вам не нужно делать здесь.В противном случае лямбда просто делает карту труднее писать, труднее понимать и труднее отлаживать.Лично для меня мое эмпирическое правило - никогда не использовать лямбду, пока я абсолютно не должен использовать лямбду (или ее эквивалент, такой как functools.partial
).
Прежде всего, код должен быть ясным и простым для понимания.читать.Он читается намного чаще, чем он пишется или изменяется, поэтому, если нет веских причин для этого, вы должны оптимизировать его для читабельности.
Я написал бы код, подобный следующему:
class Something(...):
def __init__(self, ...):
...
self.menu_main_top_evaluation.add_command(
label=self.test_me, command=self._test_me
)
...
def _test_me(self):
if self.file_data_for_processing:
do_something()
else:
do_something_else()
Примечание: выбор использования префикса _
предназначен исключительно для иллюстративных целей.Подчеркивание помогает документально подтвердить, что эта функция является закрытой для класса, но вы, конечно же, можете использовать любое имя.Хорошая идея - придумать соглашение об именах, которое что-то для вас значит, чтобы легко было запомнить, какие функции связаны с какими пунктами меню.