繁体   English   中英

缺少位置参数 Python(指向函数)

[英]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.

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