python3中的全局变量

2024-04-28 21:14:04 发布

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

我读了一些全局变量的东西,但是我的代码就是不起作用。 代码如下:

global ta
global tb
global tc
global td

ta = 1
tb = 1.25
tc = 1.5
td = 2

def rating_system(t1, t2):
    global ta
    global tb
    global tc
    global td

    if t1 < t2 and t2/t1 <= 4:
        rating = (t2/t1) * 0.25 
        t1 += rating
        t2 -= rating
    else:
        rating = (t2/t1) * 0.4
        t1 += rating
        t2 -= rating
    print(str(t1) + " and " + str(t2))

 rating_system(ta, td)

我给变量所有的global定义,但是当我运行rating_system()时,它只会为变量打印正确的数字,但是如果我在函数外部打印变量,它会给我默认的数字。在


Tags: and代码def数字systemglobaltbtd
2条回答

在这个程序中,您的八条global行实际上没有做任何事情。这还不清楚,但我猜你要做的是把两个数字传入函数,然后用函数的结果替换它们。在这种情况下,您只需return结果并在调用函数时重新分配它们:

def rating_system(t1, t2):
    if t1 < t2 and t2/t1 <= 4:
        rating = (t2/t1) * 0.25 
        t1 += rating
        t2 -= rating
    else:
        rating = (t2/t1) * 0.4
        t1 += rating
        t2 -= rating
    return (t1, t2)

(ta, td) = rating_system(ta, td)

只需演示全局变量是如何工作的。您可以看到,全局变量的值是在函数本身内设置的,并且其更改了

global ta
global tb
global tc
global td

ta = 1
tb = 1.25
tc = 1.5
td = 2

def rating_system(t1, t2):
    global ta
    global tb
    global tc
    global td

    if t1 < t2 and t2/t1 <= 4:
        rating = (t2/t1) * 0.25 
        t1 += rating
        t2 -= rating

    else:
        rating = (t2/t1) * 0.4
        t1 += rating
        t2 -= rating
    print "From Function"   
    print(str(t1) + " and " + str(t2))
    ta =t1
    tb =t2
print "Before"
print ta,tb,tc,td    
rating_system(ta, td)
print "After"
print ta,tb,tc,td

输出

^{pr2}$

相关问题 更多 >