"Andrew Kuchling" <akuchlin at mems-exchange.org> wrote in message news:3ditkkv9oo.fsf at ute.cnri.reston.va.us... > "Bruce Edge" <bedge at troikanetworks.com> writes: > > Can the follwoing be accomplished in Python? > > > > I want to create a func named "abc": > > Just bind the name to 'abc'. > def dummy_name (): > ... > > abc = dummy_name > > Or: exec '%s = dummy_name' % name Sure, but this has a flaw...: >>> def dummy_name(): ... pass ... >>> abc = dummy_name >>> abc.func_name 'dummy_name' >>> i.e., the function internally retains the "dummy name". One can work around this using module new, e.g.: >>> import new >>> if dummy_name.func_defaults is None: ... abc = new.function(dummy_name.func_code, dummy_name.func_globals, 'abc') ... else: ... abc = new.function(dummy_name.func_code, dummy_name.func_globals, 'abc', ... dummy_name.func_defaults) ... >>> > But such dynamic creation of functions usually strikes me as a flawed > design. An informal rule of mine is that 'exec' or 'eval' should only > be needed when you're expecting arbitrary expressions, perhaps in a > config file, but exec'ing a single statement or applying eval() to a > single name is usually a sign of programming in some non-Pythonic > style. Absolutely true!!! And I suspect that 90%+ of the time this also extends to usages of module new... Alex
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4