Bottom Page

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
 call func from dict
#1
how do I call functions from a dictionary?
def foo():
    print('foo')

def bar():
    print('bar')

foobar = {
    'foo': foo,
    'bar': bar
}

command = input('foo or bar, Choose one. ')

foobar[command] # returns nothing.
print(foobar[command]) # prints memory location.
Output:
PS C:\Users\User\Desktop> python test.py foo or bar, Choose one. foo <function foo at 0x0380C030> PS C:\Users\User\Desktop>
Quote
#2
foobar[command]()
mcmxl22 likes this post
Quote
#3
I'm still not getting this. It works when I call functions from within the same program but if I import the functions then store them in a dict they get ran even without being called. Why?
I am trying to modify this program to get rid of all the if\elif\else statements.
Quote
#4
Use if __name__ == '__main__':
# my_nodule
def foo():
    print('foo')

def bar():
    print('bar')

foobar = {
    'foo': foo,
    'bar': bar
}

if __name__ == '__main__':
    command = input('foo or bar, Choose one. ')
    foobar[command]()
No do not get run on import.
>>> import my_module

>>> command = input('foo or bar, Choose one. ')
foo or bar, Choose one. bar

>>> my_module.foobar[command]()
bar
Another way that i think is cleaner as avoid the the somewhat strange call [something]() and do error checking with get().
# my_module1.py
def spam():
    return 'spam'

def eggs():
    return 'eggs'

def switch_case(user_choice):
    return {
        'foo': spam(),
        'bar': eggs(),
    }.get(user_choice, f'<{user_choice}> Not in Record')
>>> import my_module1

>>> command = input('foo or bar, Choose one. ')
foo or bar, Choose one. bar
>>> my_module1.switch_case(command)
'eggs'

>>> command = input('foo or bar, Choose one. ')
foo or bar, Choose one. car
>>> my_module1.switch_case(command)
'<car> Not in Record'
Quote

Top Page

Possibly Related Threads...
Thread Author Replies Views Last Post
  call dict object result key error lateublegende 2 326 May-15-2019, 01:08 PM
Last Post: lateublegende
  About [from FILE import FUNC] Nwb 7 416 Apr-21-2019, 02:46 PM
Last Post: snippsat
  Executing func() from a different folder ebolisa 2 377 Jan-14-2019, 10:18 AM
Last Post: ebolisa
  How can I return my list from a func? Mike Ru 3 634 Oct-22-2018, 01:15 PM
Last Post: buran
  list func in lambda mepyyeti 1 990 Mar-10-2018, 09:07 PM
Last Post: buran
  return variable in func mepyyeti 1 572 Mar-01-2018, 02:30 AM
Last Post: Larz60+
  How to get parent directory from existing func not user func ? harun2525 3 1,739 May-15-2017, 04:47 PM
Last Post: harun2525

Forum Jump:


Users browsing this thread: 1 Guest(s)