变量和功能

时间:2010-01-01 12:59:35

标签: python

嘿所有,是否可以调用函数值而不是调用整个函数?因为,如果我调用整个函数,它将不必要地运行,我不想要。 例如:

def main():
    # Inputing the x-value for the first start point of the line
    start_point_x_1()
    # Inputing the x-value for the 2nd end point of the line
    end_point_x_2()
    # The first output point calculated and printed
    first_calculated_point()

def start_point_x_1():
    return raw_input("Enter the x- value for the 1st " +
                        "start point for the line.\n")

def end_point_x_2():
    return raw_input("Enter the x- value for the 2nd " +
                      "end point for the line.\n")

def first_calculated_point():
    x0 = int(start_point_x_1())
    a  = int(end_point_x_2()) - int(start_point_x_1())
    lamda_0 = 0
    x = x0 + (lamda_0)*a

main()

上面的代码有效但当我到达函数first_calculated_point并且我计算x0时,函数start_point_x_1()再次运行。我尝试存储函数,例如'{例如{{1在函数x1 = raw_input("Enter the x- value for the 1st " + "start point for the line.\n")下,但当我在start_point_x_1()调用变量x1时,他们说x0 = x1未定义。有没有办法存储函数的值并调用它而不是调用整个函数?

3 个答案:

答案 0 :(得分:3)

更改

start_point_x_1()

x0 = start_point_x_1()

同样,做

x2 = end_point_x_2()

最后:

first_calculated_point()

变为

first_calculated_point(x0, x2)

函数的定义更改为:

def first_calculated_point(x0, x2):
    a  = int(x2) - int(x0)
    lamda_0 = 0
    x = x0 + (lamda_0)*a

main()
这是你想要的吗?这个想法是你需要保存从用户那里获取的值,然后将它们传递给进行计算的函数。

如果这不是你想要的,你需要更多地解释一下,(好的缩进会有所帮助,特别是因为缩进在Python中很重要!)。

答案 1 :(得分:0)

为什么要从start_point_x_1end_point_x_2拨打mainfirst_calculated_point

您可以更改main

的定义
def main():
  first_calculated_point()

first_calculated_point

def first_calculated_point():
  x0 = int(start_point_x_1())
  a  = int(end_point_x_2()) - x0
  lamda_0 = 0
  x = x0 + (lamda_0)*a

  # did you mean to return x?

请注意,在a的赋值中,我将int(start_point_x_1())替换为在上一行中分配了相同表达式的变量,但只有当表达式不能安全时才能安全地执行此操作有副作用,例如打印到屏幕或读取用户的输入。

答案 2 :(得分:0)

你可以使用'memoization'来缓存基于函数参数的函数的结果,因为你可以编写一个装饰器,这样你就可以装饰你认为需要这种行为的任何函数,但如果你的问题就像你的代码一样简单为什么不给它赋一个变量和用过指定值?

e.g

x0 = int(start_point_x_1())
a  = int(end_point_x_2()) - x0