使变量全局化使其成为tup

2024-09-24 08:28:58 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的程序中,函数中有几个变量需要在其他函数中调用。为此,我将需要的变量设为全局变量(例如:)

def Vcmi1(Vcm, VcmU, Vi1, Vi1U, Pi1, Pi1U, Pi2, Pi2U, m1, m1U, m2, m2U):
global Vcmi1
global Vcmi1U
Vcmi1 = Vi1-Vcm
Vcmi1U = (Vi1U+(((Pi1U+Pi2U)/(Pi1+Pi2))+((m1U+m2U)/(m1+m2))))*Vcmi1
return Vcmi1, Vcmi1U

但是,当我在后面的函数中使用它们时,这些变量是元组而不是浮点,它们不能与其他浮点相乘(例如:)

^{pr2}$

我对python比较陌生,所以我不能百分之百地确定全局命令是如何工作的(为此,我昨晚发现了它)。我怎样才能使这个元组变成一个float,并且仍然能够在它的函数之外使用它呢?在


Tags: 函数globalm1m2pi2pi1upi2upi1
1条回答
网友
1楼 · 发布于 2024-09-24 08:28:58

当您执行return v1, u1操作时,它将返回两个值。如果你像这样调用这个函数

 result = Vcmi1(...)

这两个值被打包成一个tuple和result = (v1, u1)。另一种方法是像这样直接打开它们

^{pr2}$

然后你可以把它们传递给下一行的下一个函数。总之,如果您的执行发生在main中,它应该是这样的(我已经重命名了您的第一个函数,以便更容易理解)

def main():
    for caseNumber in xrange(4):
        Vcm = raw_input("Enter vcm for case#{}:".format(caseNumber))
        #Calculate the two velocities and store them in 2 variables
        Vcmi1, Vcmi1U = calculate_velocities(Vcm, VcmU, Vi1, Vi1U, Pi1, Pi1U, Pi2, Pi2U, m1, m1U, m2, m2U)

        #Now simply pass these two variables onto the next function
        p1, p2 = initial_momentum_cm_1(m1, m1U, Vcmi1, Vcmi1U, Vcm, VcmU, Vf2, Vf2U, Pi1, Pi1U, Pi2, Pi2U, m2, m2U)

在这种情况下不需要global。变量的名称空间在main(或调用函数的任何一个)结束之前都是有效的

使用global的唯一原因是不想传递这么多参数。在

相关问题 更多 >