I'm developing a bot on Python (2.7, 3.4). I defined a about 30+ dynamic functions which to be used based on bot commands. While development, since not all functions are done, I have to define for them an empty functions (if I not define then code won't run) like this:
def c_about():
    return
def c_events():
    return
def c_currentlocation():
    return
etc. many dummy functions.
Question:
it is somehow possible in Python to define same function but with multiple names?
Something like this:  
def c_about(), c_events(), c_currentlocation():
    return
                Yes, it's perfectly possible since defined functions are stored in variables like everything else.
def foo():
    pass
baz = bar = foo
There is still some metadata relating to the original function (help(bar) will still mention foo), but it doesn't affect functionality.
Another option is to use lambdas for one-liners:
foo = bar = baz = lambda: None
                        Functions do not intern in Python (i.e., automatically share multiple references to the same immutable object), but can share the same name:
>>> def a(): pass
... 
>>> a
<function a at 0x101c892a8>
>>> def b(): pass
... 
>>> b
<function b at 0x101c89320>
>>> c=a
>>> c
<function a at 0x101c892a8>  # note the physical address is the same as 'a'
So clearly you can do:
>>> c=d=e=f=g=a
>>> e
<function a at 0x101c892a8>
For the case of functions not yet defined, you can use a try/catch block by catching either a NameError:
def default():
    print "default called"
try:
    not_defined()
except NameError:
    default()
Or use a dict of funcs and catch the KeyError:
funcs={"default": default}
try:
    funcs['not_defined']()
except KeyError:
    funcs['default']()      
Or, you can do funcs.get(not_defined, default)() if you prefer that syntax with a dict of funcs. 
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With