简体   繁体   English

配对参数的调用函数

[英]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? 有没有办法获得相同的结果,但是只调用一次greeting函数?

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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