相关疑难解决方法(0)

3119
推荐指数
17
解决办法
284万
查看次数

为什么append在此代码中没有返回?

list = [1, 2, 3]
print list.append(4)   ## WRONG, print does not work, append() returns None

## RIGHT:
list.append(4)
print list  ## [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我正在学习Python,我不确定这个问题是否特定于语言以及如何在Python中实现append.

python list append nonetype

49
推荐指数
3
解决办法
5万
查看次数

Python扩展了一个空列表错误?

为什么python 2.5.2具有以下行为

>>>[2].extend([]) == [2]
False

>>> [2].extend([]) == None
True

$ python --version
Python 2.5.2
Run Code Online (Sandbox Code Playgroud)

我假设我在这里不理解某些东西,但直觉上我认为[2] .extend([])应该产生[2]

python list extend

27
推荐指数
2
解决办法
2万
查看次数

Python传递列表作为参数

如果我要运行此代码:

def function(y):
    y.append('yes')
    return y

example = list()
function(example)
print(example)
Run Code Online (Sandbox Code Playgroud)

为什么它会返回['yes'],即使我没有直接更改变量'example',我怎么能修改代码以便'example'不受函数的影响?

python arguments function list

23
推荐指数
3
解决办法
8万
查看次数

在for循环中列出append()

在Python中,尝试使用循环对列表执行最基本的追加功能:不确定我在这里缺少的内容:

a=[]
for i in range(5):    
    a=a.append(i)
a
Run Code Online (Sandbox Code Playgroud)

收益: 'NoneType' object has no attribute 'append'

python for-loop append

23
推荐指数
3
解决办法
16万
查看次数

使用Python中的列表扩展的意外行为

我试图理解扩展如何在Python中工作,它并没有完全按照我的期望.例如:

>>> a = [1, 2, 3]
>>> b = [4, 5, 6].extend(a)
>>> b
>>> 
Run Code Online (Sandbox Code Playgroud)

但我原以为:

[4, 5, 6, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

为什么返回None而不是扩展列表?

python arrays list immutability

18
推荐指数
3
解决办法
8616
查看次数

Python - 为什么extend()和append()返回None(void)?

可能重复:
为什么python的list.append评估为false?

在我看来,我觉得list1.extend(list2)list1.append(num)应该返回突变列表,而不是None(无效).除了具有破坏性地改变原始列表的副作用.

python arrays immutability

8
推荐指数
1
解决办法
9161
查看次数

从__init__中删除工作以帮助进行单元测试

这个问题的关键是帮助单元测试.如果我有一个繁忙的__init__(即__init__复杂的初始化),我不能简单地实例化一个类的对象,但我需要模拟/存根调用在依赖关系中的所有方法__init__.

为了说明这个问题,这里是一个例子:

class SomeClass(object):
    def __init__(self, dep1, dep2, some_string):
        self._dep1 = dep1
        self._dep2 = dep2
        self._some_string = some_string

        # I would need to mock everything here (imagine some even more
        # complicated example)
        for dep2element in self._dep2:
            dep2element.set_dep(dep1)
        self._dep1.set_some_string(some_string)

    def fun1(self):
        ...
    def fun2(self):
        ...
    def fun3(self):
        ...
Run Code Online (Sandbox Code Playgroud)

要测试这些fun*功能,每个测试都必须执行复杂的构造.

class TestSomeClass(TestCase):
    def create_SomeClass(self, some_string):
        dep1 = Mock()
        # mock everything required by SomeClass' constructor

        dep2 = Mock()
        # mock everything required by …
Run Code Online (Sandbox Code Playgroud)

python object-initializers

7
推荐指数
2
解决办法
2487
查看次数

Python列表+列表与list.append()

今天我花了大约20分钟试图弄清楚为什么它按预期工作:

users_stories_dict[a] = s + [b] 
Run Code Online (Sandbox Code Playgroud)

但这会有一个None价值:

users_stories_dict[a] = s.append(b)
Run Code Online (Sandbox Code Playgroud)

任何人都知道为什么append函数不返回新列表?我正在寻找做出这个决定的某种合理理由; 它现在看起来像是一个Python新手.

python list

6
推荐指数
2
解决办法
1万
查看次数

为什么列表操作不返回结果列表?

我对导致这种情况的思维过程感兴趣.对我来说,一个相对新手,似乎阻碍了,因为它阻止了列表处理的"链接"(例如mylist.reverse().append('a string')[:someLimit]).我想可能是"那些人的力量"决定列表理解是一个更好的范例(一个有效的观点),所以不想鼓励其他方法 - 但是这似乎有悖常理,以防止一种直观的方法,即使更好存在替代品.

请注意,我不是在抱怨(我敢肯定有一个合理的理由,我在它是什么只是感兴趣!),也不是寻找一个解决方案(意见在这里非常具有启发性) -只是寻找一些情况下,并深入理解语言的设计过程.

python

5
推荐指数
2
解决办法
320
查看次数