将函数的输出保存为变量并在另一个函数中使用它

时间:2016-06-11 19:50:37

标签: python function parameter-passing

我是编程新手,所以这个问题可能很愚蠢。

我需要将Tr1的值引入Bzero1函数。当我运行模块时,我得到以下结果:

this result

该程序未运行Bzero1功能,我不知道为什么。是因为我没有正确地引入Tr1值或其他什么?我希望Bzero1执行操作0.083-(0.422/Tr1**1.6),并从Tr1的结果中获取T/Tc1

我非常感谢你的帮助。

T = float(input("Introduce system temperature in Kelvin: ")) 
print("System temperature is: ", T)

Tc1 = float(input("Introduce critical temperature of component 1: ")) 
print("Critical temperature of component 1 is: ", Tc1)

def Tr1(T, Tc1):
  print("Relative temperature 1: ", T/Tc1)

Tr1 = Tr1(T, Tc1)

def Bzero1(Tr1):
  print("Bzero 1: ", 0.083-(0.422/Tr1**1.6))

2 个答案:

答案 0 :(得分:0)

  1. 请勿替换Tr1函数值,以避免此类替换:

    Tr1_value = Tr1(T, Tc1)
    
  2. 使用代码

    调用Bzero1函数
    Bzero1(Tr1_value)
    
  3. 修改Tr1以返回值:

    def Tr1(T, Tc1):
        result = T/Tc1
        print("Relative temperature 1: ", result)
        return result
    
  4. 另外,我建议你看一下python official tutorial - 在那里你可以学到很多关于python ...

    祝你好运!

答案 1 :(得分:0)

def只定义一个函数,而不是调用它。 E.g。

def foo(a):
    print a * 2

表示现在有一个函数foo接受参数aa中的foo(a)内部函数的名称。

所以在你的情况下

def Bzero1(Tr1):
  print("Bzero 1: ", 0.083-(0.422/Tr1**1.6))

将函数Bzero1定义为参数Tr1,但不调用它。您需要调用该函数,就像您调用Tr1

一样
Bzero1(Tr1)

你可以看到这种方式很快就会混淆,因为它是函数之外的变量,它是函数内部的变量。因此,最好在外部程序v.s.中为变量使用不同的名称。内部功能。

以下是一些您可能会觉得有用的最佳做法:

  • 通常最好首先定义所有函数,然后执行程序的主代码,而不是混合函数定义和主程序。

  • 另一个最佳实践是使函数仅计算输入的输出,并在其他地方处理输出。这样,您可以在程序的其他部分重用功能,同时始终控制输出到用户的时间和内容。

  • 最后,您通常不应重新分配名称,例如Tr1 = Tr1(...)表示Tr1现在不再是函数的名称,而是Tr1返回的结果的名称。简而言之,为不同的事物使用不同的名称。

应用这些提示,您的代码可能如下所示:

# function definitions first
def Tr1(vt, vtc1):
  return vt/vtc1

def Bzero1(vtr1):
  return 0.083-(0.422 / vtr1 ** 1.6)

# get user input
T = float(input("Introduce system temperature in Kelvin: ")) 
print("System temperature is: ", T)

vTc1 = float(input("Introduce critical temperature of component 1: ")) 
print("Critical temperature of component 1 is: ", vTc1)

# run calculations
vTr1 = Tr1(T, vTc1)
vBz1 = Bzero1(vTr1)

# print output
print("Relative temperature 1: ", vTr1)
print("Bzero 1: ", vBz1)

注意

由于我不知道变量的语义含义,我刚才使用小写字母v作为前缀 - 通常最好使用有意义的名称,如temperature或{{1} }和temp1等。程序不是数学论文。