首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python代码调试

Python代码调试
EN

Stack Overflow用户
提问于 2015-04-17 21:27:39
回答 2查看 76关注 0票数 0

我想知道这段代码有什么问题:

代码语言:javascript
复制
list_=[]

def inicialize_list_(list_):
    list_=[]
    return list_

def create_list_(list_):

   list_=inicialize_list_(list_)

   i=0

   for num in range(8):
       list_.append(num)
       i=i+1

   return list_

create_list_(list_)

print list_

create_list_(list_)

print list_

这是我得到的输出:

代码语言:javascript
复制
[]
[]

但这是预期的产出:

代码语言:javascript
复制
[0, 1, 2, 3, 4, 5, 6, 7]
[0, 1, 2, 3, 4, 5, 6, 7]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-17 21:30:11

您没有将create_list_的返回值分配给list_

如果你写:

代码语言:javascript
复制
list_ = create_list_(list_)

会管用的。

票数 1
EN

Stack Overflow用户

发布于 2015-04-17 22:17:02

我的印象是,函数、参数和变量是如何工作的(如果我错了,请原谅)。

我试着解释:

首先,定义一个全局变量"list_“并将其初始化为空列表。到目前为止。但这是一个与函数中使用的变量完全不同的变量。

基本上,如果使用如下参数列表定义一个函数

代码语言:javascript
复制
def f(arg):
    ...

传递给函数的任何值都可以使用名称arg在f中引用。

参数arg是调用函数时传递给它的任何值的占位符,方法如下

代码语言:javascript
复制
some_var = f("whatever")

在f中,局部变量arg将拥有仅用于此调用的值“任何”。F的另一个非聚焦可能是f( 42 ),其中arg的值为42。

因此,arg只能在f中本地(且有效)访问(这就是为什么它被称为局部变量)。对arg的任何更改也只是局部的;arg甚至不存在于f之外。

更糟糕的是,如果您有一个具有相同名称的全局变量(在f外部定义)(这就是您使用list_时所做的),那么局部变量“阴影”了同名的全局变量(这是错误的做法)。

因此,函数定义中的参数列表没有列出函数内部访问的变量,而只是一些占位符。

要将本地值输出到外部世界,函数必须返回值。这也被称为函数结果。Python (如C/C++,.)关键字“返回”用于此:

代码语言:javascript
复制
def square(x):
    return x * x

这将取任何数值,并返回其平方:

代码语言:javascript
复制
>>> square(2)
4
>>> square(8)
64
...

尝试这种方法的一个好方法是使用Python交互控制台。您可以定义函数并在其中键入任何类型的代码,就好像您只是将其键入en编辑器并通过解释器运行该文件一样。

希望这给了你正确的方向。实际上,这并不是Python特有的,而是非常基本的编程技术,对于所有编程任务来说,这些技术都必须被很好地理解。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29709642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档