当前位置: 首页 > 面试题库 >

Python:在函数之间传递变量

丘华翰
2023-03-14
问题内容

我花了过去的几个小时在这里和其他地方进行阅读和实验,但是我并没有真正理解我确信这是一个非常基本的概念:在不同的函数之间传递值(作为变量)。

例如,我将一堆值分配给一个函数中的列表,然后想稍后在另一个函数中使用该列表:

list = []

def defineAList():
    list = ['1','2','3']
    print "For checking purposes: in defineAList, list is",list
    return list

def useTheList(list):
    print "For checking purposes: in useTheList, list is",list

def main():
    defineAList()
    useTheList(list)

main()

基于对函数参数的作用的理解,我希望这样做如下:

  1. 将“列表”初始化为空列表;打电话给main(至少,我知道我没事…)
  2. 在defineAList()中,将某些值分配给列表;然后将新列表传递回main()
  3. 在main()中,调用useTheList(list)
  4. 由于“ list”包含在useTheList函数的参数中,因此我希望useTheList现在将使用defineAList()定义的列表,而不是调用main之前定义的空列表。

但是,这显然是错误的理解。我的输出是:

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []

那么,既然“返回”显然没有按照我的想法去做,或者至少没有按照我认为的那样去做……实际上它在做什么?您能否使用本示例向我展示如何将列表从defineAList()中取出并在useTheList()中使用?当我看到事情发生时,我往往会更好地理解它们,但是我看到的许多正确传递参数的示例也都使用了我不熟悉的代码,并且在弄清楚发生了什么事情的过程中,我我并没有真正了解这个概念。我正在使用2.7。

过去,ETA提出了类似的问题,有人建议我使用全局变量而不是局部变量。如果在这里也很重要-就我所上课的目的而言,我们不允许使用全局变量。

谢谢!


问题答案:

这是实际发生的情况:

global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()

    # passed_list inside useTheList is set to global_list
    useTheList(global_list)

main()

这就是你想要的:

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()

    # passed_list inside useTheList is set to what is returned from defineAList
    useTheList(returned_list)

main()

您甚至可以跳过临时returned_list变量,并将返回值直接传递给useTheList

def main():
    # passed_list inside useTheList is set to what is returned from defineAList
    useTheList(defineAList())


 类似资料:
  • 问题内容: 我敢肯定这很简单,但是我一直无法使其正常工作。我需要让我的主要python脚本调用另一个python脚本,并将变量从原始脚本传递到我已调用的脚本 举一个简单的例子,我的第一个脚本是 我的第二个脚本是 我希望它可以打印x但我得到 我不确定导入是否是实现此目标的正确方法,但是如果有人可以通过简单的方式对此有所了解,那就太好了! 谢谢, 编辑 阅读评论后,我想我会扩展我的问题。Aswin M

  • 问题内容: 抱歉,如果我的问题是菜鸟。我正在使用pgsql 8.4运行Django 1.2,并且需要在从用户处获得输入后运行Java程序,进行一些计算并将结果返回给用户。 我是否可以知道在Java和Python Django之间传递数据的最佳方法是什么,以便解决上述情况?我听说过Jython,但是根据Django文档,它需要扩展名jython- Django,但目前不支持django1.2.x。我

  • 问题内容: 假设我有以下情况; 在重新标记的页面中,有一个链接将页面/ a定向到/ b。我尝试将变量a传递给页面/ b以重用它。我该怎么做这个Flask应用程序?我需要使用会话还是有其他解决方案? 问题答案: 如果要传递一些不需要用户查看或控制的python值,则可以使用会话: 会话的行为就像字典,并序列化为JSON。因此,你可以将可序列化JSON的任何内容放入会话中。但是,请注意,大多数浏览器不

  • 问题内容: 我在jenkins有两个工作,这两个工作都需要相同的参数。 如何使用参数运行第一个作业,以便在触发第二个作业时使用相同的参数? 问题答案: 您可以使用参数化触发器插件,该插件可让您将参数从一个任务传递到另一任务。 您还需要在上游添加从上游传递的此参数。

  • 问题内容: 我想在一个页面中获取用户输入,将其存储在一个php变量中,并在另一个php页面中使用它。我已经尝试过使用“会话”,但是它似乎没有用。还有另一种安全的选择吗?此信息可能是用户名和密码。 问题答案: 尝试更改会话代码,因为这是执行此操作的最佳方法。 例如: index.php nextpage.php 但是,我可能会在会话中存储更安全的内容(例如用户ID),而不是用户的登录凭据。

  • 我得到了这个错误: “变量'a'已赋值,但其值永远不可用”