Выполняемые пользователем функции в python

Я иногда использовал (lambda x:<code>)(<some input>) в python, чтобы сохранить чистое пространство имен (в глобальном пространстве имен или где-либо еще). Одна проблема с лямбда-решением заключается в том, что это очень ограничивающая конструкция с точки зрения того, что она может содержать.

Примечание. Это привычка программирования javascript.

Является ли это рекомендуемым способом сохранения пространства имен? Если это так, есть ли лучший способ реализовать функцию самоисполнения?

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

Вместо :

 def a_fn(): //do something def b_fn(): //do something def c_fn(): b_fn() a_fn() 

Ты можешь:

 def c_fn(): def a_fn(): //do something def b_fn(): //do something b_fn() a_fn() 

Хотя я не уверен, что это путинский путь, я обычно так делаю.

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

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