如何使用或访问函数内的列表到另一个函数?

时间:2015-06-08 08:46:35

标签: python django

假设我有这两个功能:

lst = []
def function1(request):
    lst = ['12','10']
    return HttpResponse(...)

def function2(request):
    qry = SampleModel.objects.filter(id__in=lst)
    return HttpResponse(...)

2 个答案:

答案 0 :(得分:0)

使用global。这是一个样本:

lst = [2,3]
def function1():
    global lst  # Guide lst to the global list that is already available
    print('lst = {}'.format(lst))
    lst = ['12','10']

print('lst = {}'.format(lst))
function1()
print('lst = {}'.format(lst))

您将看到以下输出:

lst = [2, 3]
lst = [2, 3]
lst = ['12', '10']

答案 1 :(得分:-1)

检查第一个示例。

global lst
lst=[]
def function1():

    lst.append(6)
    print(lst)

def function2():
    lst.append(7)
    print(lst)

function1()
function2()

<强>输出: -

C:\Python34\python.exe "C:/Users/akthakur/PycharmProjects/Learning python/testing.py"
[6]
[6, 7]

这里lst被声明为全局,在函数1中使用,当在函数2中使用时,使用了相同的lst,因此输出。

第二个例子

global lst
lst=[]
def function1():
    lst=[7,8]
    lst.append(6)
    print(lst)

def function2():
    lst.append(7)
    print(lst)

function1()
function2()

<强>输出

C:\Python34\python.exe "C:/Users/akthakur/PycharmProjects/Learning python/testing.py"
[7, 8, 6]
[7]

现在你在function1中定义了 lst = [7,8] 所以这会创建一个新的本地列表lst并且在function1中使用了相同的(本地版本),当你再次调用lst时,在function2中,它的全球版本被称为。[这就是你正在做的事。]

然后将新的本地列表声明为 lst = ['12','10'] ,将您的值附加到函数外部定义的现有列表中,并声明为全局列表。