简体   繁体   中英

Call function for paired arguments

Here is simple script to generate greeting messages:

def greeting(event, person):
    print("Happy " + event + ", dear " + person + ".")

event = "Birthday"
person = "Emily"
greeting(event, person) # Happy Birtday, dear Emily.

event = "New Year"
person = "Mark"
greeting(event, person) # Happy New Year, dear Mark.

Is there way to get the same result, but call the greeting function only once?

You can put this in a loop to handle a list of names and events. I'd recommend keeping the inner function the same, and firing a sequence of data at it from outside. Depending on your application, mileage may vary.

def greeting(event, person):
    print("Happy " + event + ", dear " + person + ".")

event_list = [("Birthday", "Emily"),
              ("New Year", "Mark")]
for event, person in event_list:
    greeting(event, person)

If you just want to the function to loop over the inputs, this should work:

def greeting(messages):
    for event, person in messages:
        print("Happy " + event + ", dear " + person + ".")

greeting([('Birthday', 'Emily'), ('New Year', 'Mark')])

If you can modify greeting:

def greeting(info_pairs):
    for event, person in info_pairs:
         print("Happy " + event + ", dear " + person + ".")

greeting([("Birthday", "Emily"), ("New Year", "Mark")])

Either of the options mentioned by other users will work. It depends on whether you want to put the loop in the function or outside of it:

def greeting(event, person):
    print("Happy " + event + ", dear " + person + ".")

for event, person in [("Birthday", "Emily"),
              ("New Year", "Mark")]:
    greeting(event, person)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM