Python 调用';函数中的另一个函数
更具体地说,我想从内部调用函数get_hours_worked 计算工资总额。我意识到另一种方法是将参数传递到calc_gross_pay,但我想知道我所尝试的是否可行。我觉得不是。谢谢你的帮助Python 调用';函数中的另一个函数,python,Python,更具体地说,我想从内部调用函数get_hours_worked 计算工资总额。我意识到另一种方法是将参数传递到calc_gross_pay,但我想知道我所尝试的是否可行。我觉得不是。谢谢你的帮助 def main(): # print("This employee's gross pay for two weeks is:",calc_gross_pay()) def get_input(): def get_hours_worked(): #get_hou
def main():
#
print("This employee's gross pay for two weeks is:",calc_gross_pay())
def get_input():
def get_hours_worked():
#get_hours_worked
x = float(input("How many hours worked in this two week period? "))
return x
def get_hourly_rate():
#get_hourly_rate()
y = float(input("What is the hourly pay rate for this employee? "))
return y
def calc_gross_pay():
#
gross = get_input(get_hours_worked) * get_input(get_hourly_rate)
return gross
main()
这是代码的重组版本。我们没有定义
get\u hours\u worked
和get\u hourry\u rate
内部get\u input
而是将它们定义为调用get\u input
的单独函数
def get_input(prompt):
return float(input(prompt))
def get_hours_worked():
return get_input("How many hours worked in this two week period? ")
def get_hourly_rate():
return get_input("What is the hourly pay rate for this employee? ")
def calc_gross_pay():
return get_hours_worked() * get_hourly_rate()
def main():
print("This employee's gross pay for two weeks is:", calc_gross_pay())
main()
演示
How many hours worked in this two week period? 50
What is the hourly pay rate for this employee? 20.00
This employee's gross pay for two weeks is: 1000.0
正如所指出的,最好改变层次结构本身。但如果您仍需要相同的,请按以下步骤进行:
def get_input():
def get_hours_worked():
x = float(input("How many hours worked in this two week period? "))
return x
def get_hourly_rate():
y = float(input("What is the hourly pay rate for this employee? "))
return y
return get_hours_worked, get_hourly_rate # IMP
def calc_gross_pay():
call_worked, call_rate = get_input() # get the functions
gross = call_worked() * call_rate() # call them
return gross
def main():
print("This employee's gross pay for two weeks is:",calc_gross_pay())
#How many hours worked in this two week period? 3
#What is the hourly pay rate for this employee? 4
#This employee's gross pay for two weeks is: 12.0
main()
在函数中声明函数有什么具体原因吗?没有,名称
get\u hours\u worked
和get\u hourry\u rate
是get\u input
的本地名称。如果您想访问get\u input
之外的那些函数,您需要返回它们。但是,为什么要在get\u input
中定义这些函数呢?为什么要在调用get\u input(get\u hours\u worked)
时调用get\u hours\u worked()
完成工作?在您的示例中,get\u input
什么都不做。我试图从这个图表中编程,我了解变量是如何在函数中本地的,不能从函数外部访问。从你所说的,函数内部的函数也是如此。我的逻辑是,通过调用get_输入函数,它会要求用户输入。按照层次结构图的制作方式,我假设get_hours_worked是get_input下的一个函数。因此,如果你调用get_input和get_hours_worked,你可以将该值传递给calc_gross_pay。你可以通过让get_input
返回你想要调用的函数,基本上创建一个闭包,然后保存返回的函数以供以后调用,但这是导出函数的一种非常复杂的方法。谢谢。这更有意义。我误解了文本中的层次结构图。哦,哇,这样行吗?所以当你说“打电话上班”时,你的意思是“上班时间”吗?我只是想确定“通话”不是关键词。然后将赋值运算符与get_input()一起使用。这很奇怪。“=”是否仍作为赋值运算符?编辑:现在我仔细看了一下,似乎call_是一个局部变量。因为有两个变量,call_worked和call_rate,它们从get_输入接收返回值。我猜他们会按照返回的顺序接收返回的日期?是的,你的第二个猜测(编辑部分)说到点子上了。get\u input
的返回值是两个函数,分配给两个变量call\u worked
和call\u rate
。我们使用它访问函数。