我如何使用一个函数作为另一个函数的参数,
how can I use a function as an argument to another function,
我正在尝试编写一个简单的代码,根据用户输入的星期几显示 3 组问候语。我是初学者,正在学习函数,所以请根据函数用法回答。
我尝试为问候指令设置一个函数,另一个函数作为用户的输入,作为参数传递给第一个函数。请告诉我代码有什么问题。
def action(user_response):
greeting = "hello madam"
greeting2 = " Good afternoon madam"
greeting3 = "Have a good weekend"
while user_response == "tuesday" or "monday":
return greeting
if user_response == "wednesday" or "thursday":
return greeting2
return greeting3
def user_response():
user_input = input("what day of the week is it: ").lower()
print(f"{user_input}")
return user_response()
def main():
action(user_response)
user_response()
main()
您可能希望您的函数 return 一个字符串,您可以将其作为参数传递给另一个函数。或者传递对函数的引用,以便在目标
中调用它
比如像这样传递响应
def action(response):
print(response)
def user_response():
user_input = input("what day of the week is it: ").lower()
return user_input
def main():
response = user_response()
action(response)
main()
或者像这样通过对函数的引用传递
def action(fn):
response = fn()
print(response)
def user_response():
user_input = input("what day of the week is it: ").lower()
return user_input
def main():
action(user_response)
main()
你的代码有一些错误,让我们一步步来:
- 条件
user_response == "tuesday" or "monday"
将returnTrue
因为:如果 user_response 不等于星期二(不是,因为你正在比较一个函数和一个字符串),你会得到“星期一”,因为 or
条件,False or something -> something
.所以你得到 if "monday"
,计算结果为 True
,因为 not-empty 字符串在 python. 中计算结果为 True
- 如果你想传递一个函数作为参数,你需要在被调用函数中调用那个函数。您没有 return 从
user_response
获取任何值,因此您正在检索 None
(但您没有,因为您没有捕获结果)。你应该从 user_response
return user_input
- 如果你
return
一个值,你必须捕获并打印它,否则,该函数将退出,什么也不做。我已经修改了您的代码,因此 action
打印问候语,仅在周末打印后退出。
执行顺序为:
- 调用
action
传递 user_response
作为参数
- 在
action
中调用 user_response
并检索值
- Return 基于从
user_response
检索到的值的问候语
def action(user_func):
greeting = "hello madam"
greeting2 = "Good afternoon madam"
greeting3 = "Have a good weekend"
user_answer = user_func()
while user_answer not in ('friday', 'saturday', 'sunday'):
if user_answer in ("monday", "tuesday"):
print(greeting)
else:
print(greeting2)
user_answer = user_func()
print(greeting3)
return
def user_response():
user_input = input("what day of the week is it: ").lower()
return user_input
def main():
action(user_response)
main()
我正在尝试编写一个简单的代码,根据用户输入的星期几显示 3 组问候语。我是初学者,正在学习函数,所以请根据函数用法回答。
我尝试为问候指令设置一个函数,另一个函数作为用户的输入,作为参数传递给第一个函数。请告诉我代码有什么问题。
def action(user_response):
greeting = "hello madam"
greeting2 = " Good afternoon madam"
greeting3 = "Have a good weekend"
while user_response == "tuesday" or "monday":
return greeting
if user_response == "wednesday" or "thursday":
return greeting2
return greeting3
def user_response():
user_input = input("what day of the week is it: ").lower()
print(f"{user_input}")
return user_response()
def main():
action(user_response)
user_response()
main()
您可能希望您的函数 return 一个字符串,您可以将其作为参数传递给另一个函数。或者传递对函数的引用,以便在目标
中调用它比如像这样传递响应
def action(response):
print(response)
def user_response():
user_input = input("what day of the week is it: ").lower()
return user_input
def main():
response = user_response()
action(response)
main()
或者像这样通过对函数的引用传递
def action(fn):
response = fn()
print(response)
def user_response():
user_input = input("what day of the week is it: ").lower()
return user_input
def main():
action(user_response)
main()
你的代码有一些错误,让我们一步步来:
- 条件
user_response == "tuesday" or "monday"
将returnTrue
因为:如果 user_response 不等于星期二(不是,因为你正在比较一个函数和一个字符串),你会得到“星期一”,因为or
条件,False or something -> something
.所以你得到if "monday"
,计算结果为True
,因为 not-empty 字符串在 python. 中计算结果为 - 如果你想传递一个函数作为参数,你需要在被调用函数中调用那个函数。您没有 return 从
user_response
获取任何值,因此您正在检索None
(但您没有,因为您没有捕获结果)。你应该从user_response
return user_input
- 如果你
return
一个值,你必须捕获并打印它,否则,该函数将退出,什么也不做。我已经修改了您的代码,因此action
打印问候语,仅在周末打印后退出。
True
执行顺序为:
- 调用
action
传递user_response
作为参数 - 在
action
中调用user_response
并检索值 - Return 基于从
user_response
检索到的值的问候语
def action(user_func):
greeting = "hello madam"
greeting2 = "Good afternoon madam"
greeting3 = "Have a good weekend"
user_answer = user_func()
while user_answer not in ('friday', 'saturday', 'sunday'):
if user_answer in ("monday", "tuesday"):
print(greeting)
else:
print(greeting2)
user_answer = user_func()
print(greeting3)
return
def user_response():
user_input = input("what day of the week is it: ").lower()
return user_input
def main():
action(user_response)
main()