[英]Missing Positional Arguments Python (Directing to a function)
我想弄清楚如何将一个函数指向一个函数。 我想要做的是回答一个提示问题 y/n 会运行某个功能。 当我输入 y 时,它将运行两个函数,而不是仅运行函数 1。
谢谢!
def company_type(question, public_company, private_company):
print("Is the target company public on NYSE or NASDAQ?")
prompt = f'{question} (y/n)'
ans = input(prompt)
if ans == 'y':
return (public_company)
if ans == 'n':
print("Please enter financial infomation manually.")
return (private_company)
company_type("public_company", "private_company", 1)
# function 1
def public_company():
return (print("Success 1"))
public_company()
# function 2
def private_company():
return (print("Success 2"))
private_company()
你真的不想返回一个函数。 您只希望一个函数调用另一个函数。 这样做是这样的:
# function 1
def public_company():
return print("Success 1")
# function 2
def private_company():
return print("Success 2")
def company_type(question, public_company, private_company):
print("Is the target company public on NYSE or NASDAQ?")
prompt = f'{question} (y/n)'
ans = input(prompt)
if ans == 'y':
return public_company()
else:
print("Please enter financial information manually.")
return private_company()
company_type("some question", public_company, private_company)
并且请注意 Python 中的 return 语句不使用一组额外的括号。 这是一个C成语。
你绝对可以返回一个函数供以后使用——这是函数式编程的精髓,也是在 python 中将函数作为第一类对象的原因~ Guido Van Rossum 。
重要的是要记住括号表示函数调用,而没有括号表示函数对象。
def public_company():
print("we do what public companies do")
def private_company():
print("we do what private companies do")
def choose_company():
ans = input("Is the target company public?")
if ans == 'y':
return public_company # no parens
else:
return private_company # no parens
if __name__ == '__main__':
# assign the returned function to selected_company
selected_company = choose_company()
# calling selected_company() will call the selected function
selected_company() # use parens, this is a function call!
function
不是关键字。<function_name>()
。# function 1
def public_company():
print("Success")
# function 2
def private_company():
print("Success")
def company_type():
print("Is the target company public on NYSE or NASDAQ?")
prompt = 'Is your company a public company? (y/n)'
ans = input(prompt)
if ans == 'y':
public_company()
if ans == 'n':
print("Please enter financial information manually.")
private_company()
company_type()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.