Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,如何将某个变量的前一个值存储在另一个变量中?_Python_Python 3.x_Python 2.7 - Fatal编程技术网

在python中,如何将某个变量的前一个值存储在另一个变量中?

在python中,如何将某个变量的前一个值存储在另一个变量中?,python,python-3.x,python-2.7,Python,Python 3.x,Python 2.7,我想通过将其存储在另一个变量中,来访问other函数中先前的num1。 我尝试了很多方法,但都没有成功;你们能帮帮我吗 import random num2 = 3 def token(): global num2 print (num2) #It should print previous value of num1 (it is not giving previous value but giving me the same value with num1 eve

我想通过将其存储在另一个变量中,来访问other函数中先前的
num1
。 我尝试了很多方法,但都没有成功;你们能帮帮我吗

import random
num2 = 3
    
def token():
    global num2 
    print (num2) #It should print previous value of num1 (it is not giving previous value but giving me the same value with num1 every time )
    num1 = random.randint(40,90)
    print(num1) 
    num2= num1 

def vcode():
    print(num2) #want to access here the previous value of num1 

print(token(),vcode()) 

在更改
num1
的值之前,需要将
num1
复制到
num2
。以下代码将打印该值和上一个值几次。请注意,我从函数中删除了
print
stations,并添加了
return
值;您试图在主程序中使用返回值,但实际上没有返回任何内容

随机导入
num1=3
def令牌():
"""
生成并返回num1的新值,以及
将上一个值保存为num2
"""
全球num1,num2
num2=num1
num1=random.randint(40,90)
返回num1
def vcode():
"""
返回num2的现有值(哪个标记()
保存为num1的上一个值)
"""
返回num2
打印(令牌(),vcode())
打印(令牌(),vcode())
打印(令牌(),vcode())
这使得:

46 3
63 46
51 63
顺便说一句,实现这一点更方便的方法可能是使用一个类,像这样,而不是使用全局变量。类实例包含当前值和上一个值

import random


class Token():

    def __init__(self, starting_value):
        self.num1 = starting_value
        self.num2 = None

    def get_value(self):
        self.num2 = self.num1
        self.num1 = random.randint(40,90)
        return self.num1

    def get_previous_value(self):
        return self.num2

t = Token(3)

for _ in range(3):
    print(t.get_value(), t.get_previous_value())
同样,这给出了类似的结果:

72 3
69 72
80 69

您可以访问其他函数的值。一种方法(如下所示)是,您应该从一个函数返回值,然后通过调用此函数在另一个函数中访问该值:

import random
num2 = 3
    
def token():
    global num2 
    print (num2) 
    num1 = random.randint(40,90)
    print(num1) 
    num2= num1 
    return num2

def vcode():
    num2=token() 
    print(num2)

print(token(),vcode()) 

当我复制并粘贴此代码并反复调用
token()
时,它的行为似乎与我预期的一样。它打印3,然后是一个随机数;然后,它打印来自上一次调用的随机数和一个新的随机数;等等看起来num2实际上在维护“上次调用
token()
时num1是什么”。它应该做什么不同的事情呢?我的django项目也有类似的问题。我今天问了一个问题,但我没有得到任何人的回答。检查一下这个问题,也许你们可以回答。谢谢,也许吧。这个问题的链接是什么?顺便问一下,你能告诉我如何从一个类函数访问另一个类函数的变量吗?如果你的变量被保存为实例变量(在本例中是
self.num1
self.num2
),那么它们可以在不同的函数之间访问。但是,如果一个变量是某个函数的局部变量,则无法在另一个函数中访问它,即使这两个函数都是同一类的方法。