创建函数,名称未定义并通过引用传递

时间:2016-11-28 07:53:09

标签: python python-2.7

我已经自学了python并且已经完成了关于Udacity的Python入门课程,目前我在这个网站上练习python问题Praticepython.org

我目前正处于Exercise 10,并已决定开始将事情纳入一项功能,以使事情变得更整洁,并希望更容易理解。

但是,我遇到了一个问题。

def getlistlen():
    list1len, list2len = raw_input("Please input the lengths of the 2 lists, seperated by a space: ").split()
    list1len = int(list1len)
    list2len = int(list2len)
    print(list1len)
    print(list2len)
    generatelist()


def generatelist():
    print(list1len)
    print(list2len)
    list1 = []
    list2 = []
    for i in range(1, list1len+1):
        list1.append(random.randint(1,100))

    for i in range(1, list2len+1):
        list2.append(random.randint(1,100))
    print(list1)
    print(list2)

我尝试过定义变量

  • list1len
  • list2len
  • list1的
  • list2中

除了所有内容之外,如果我这样做,那么在执行函数后值不会发生变化。

我还尝试在getlistlen()下声明list1len和list2len,但函数generatelist()无法检索list1len和list2len的值。

我该如何解决这个问题?

根据我的理解,函数外部的变量只会在函数内部发生变化时发生变化,但是,如果在函数内部重新声明它们,它们就不会改变。

使用Python 2.7.12,IDLE IDE。

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要将已定义的变量传递给函数 generatelist()才能使用它们。 试试这段代码:

def generatelist(list1len,list2len):
    print(list1len)
    print(list2len)
    list1 = []
    list2 = []
    for i in range(list1len):
        list1.append(random.randint(1,100))

    for i in range(list2len):
        list2.append(random.randint(1,100))
    print(list1)
    print(list2)


def getlistlen():
    list1len, list2len = raw_input("Please input the lengths of the 2 lists, seperated by a space: ").split()
    list1len = int(list1len)
    list2len = int(list2len)
    print(list1len)
    print(list2len)
    generatelist(list1len,list2len)

首先定义 generatelist(),然后将其用于另一个函数以计算列表。