小编use*_*312的帖子

用Python编写单元测试:我该如何开始?

我用Python完成了我的第一个正确的项目,现在我的任务是为它编写测试.

由于这是我第一次做项目,这是我第一次为它编写测试.

问题是,我该如何开始?我完全不知道.任何人都可以指向我一些文档/教程/链接/书籍,我可以用它来开始编写测试(我猜特别是单元测试)

任何建议都会受到欢迎.

python testing unit-testing

523
推荐指数
6
解决办法
25万
查看次数

了解dict.copy() - 浅或深?

在阅读文档时dict.copy(),它说它是字典的浅层副本.我所遵循的书(Beazley的Python参考书)也是如此,它说:

m.copy()方法生成映射对象中包含的项的浅表副本,并将它们放在新的映射对象中.

考虑一下:

>>> original = dict(a=1, b=2)
>>> new = original.copy()
>>> new.update({'c': 3})
>>> original
{'a': 1, 'b': 2}
>>> new
{'a': 1, 'c': 3, 'b': 2}
Run Code Online (Sandbox Code Playgroud)

所以我假设这会更新original(并添加'c':3)的值,因为我正在做一个浅拷贝.就像你为列表做的那样:

>>> original = [1, 2, 3]
>>> new = original
>>> new.append(4)
>>> new, original
([1, 2, 3, 4], [1, 2, 3, 4])
Run Code Online (Sandbox Code Playgroud)

这按预期工作.

由于两者都是浅拷贝,为什么dict.copy()它不能像我期望的那样工作?或者我对浅层和深层复制的理解是有缺陷的?

python

402
推荐指数
5
解决办法
22万
查看次数

如果列表中的其他理解

我有一个清单l:

l = [22, 13, 45, 50, 98, 69, 43, 44, 1]
Run Code Online (Sandbox Code Playgroud)

对于45以上的数字,我想加1; 对于小于它的数字,5.

我试过了

[x+1 for x in l if x >= 45 else x+5]
Run Code Online (Sandbox Code Playgroud)

但它给了我一个语法错误.我怎样才能实现if- else在列表理解这样吗?

python if-statement list-comprehension list

398
推荐指数
8
解决办法
46万
查看次数

Python进度条

当我的脚本执行可能需要一些时间的任务时,如何使用进度条?

例如,一个需要一些时间才能完成并True在完成时返回的函数.如何在执行功能期间显示进度条?

请注意,我需要实时,所以我无法弄清楚该怎么做.我需要thread这个吗?我不知道.

现在我正在执行函数时不打印任何内容,但是进度条会很好.此外,我更感兴趣的是从代码的角度来看如何做到这一点.

python

257
推荐指数
17
解决办法
35万
查看次数

子进程中'shell = True'的实际含义

我用subprocess模块调用不同的进程.但是,我有一个问题.

在以下代码中:

callProcess = subprocess.Popen(['ls', '-l'], shell=True)
Run Code Online (Sandbox Code Playgroud)

callProcess = subprocess.Popen(['ls', '-l']) # without shell
Run Code Online (Sandbox Code Playgroud)

两者都有效.阅读文档后,我开始知道这shell=True意味着通过shell执行代码.这意味着在缺席的情况下,该过程将直接启动.

那么我应该更喜欢我的情况 - 我需要运行一个进程并获得其输出.从shell内部或外部调用它有什么好处.

python subprocess

236
推荐指数
5
解决办法
14万
查看次数

在Python中创建一个空列表

在Python中创建新空列表的最佳方法是什么?

l = [] 
Run Code Online (Sandbox Code Playgroud)

要么

l = list()
Run Code Online (Sandbox Code Playgroud)

我问这个是因为两个原因:

  1. 技术原因,哪个更快.(创建一个类导致开销?)
  2. 代码可读性 - 哪一个是标准惯例.

python performance coding-style list timeit

229
推荐指数
3
解决办法
64万
查看次数

比较Python中的两个词典

我有两个词典,但为了简化,我将采用这两个:

>>> x = dict(a=1, b=2)
>>> y = dict(a=2, b=2)
Run Code Online (Sandbox Code Playgroud)

现在,我想比较每key, value对中是否x具有相同的对应值y.所以我写了这个:

>>> for x_values, y_values in zip(x.iteritems(), y.iteritems()):
        if x_values == y_values:
            print 'Ok', x_values, y_values
        else:
            print 'Not', x_values, y_values
Run Code Online (Sandbox Code Playgroud)

它是有效的,因为tuple返回然后比较相等.

我的问题:

它是否正确?有更好的方法吗?更好的不是速度,我说的是代码优雅.

更新:我忘了提到我必须检查有多少key, value对是相等的.

python comparison dictionary

222
推荐指数
16
解决办法
39万
查看次数

用Python包裹长行

如何在不牺牲缩进的情况下在Python中包装长行?

例如:

def fun():
    print '{0} Here is a really long sentence with {1}'.format(3, 5)
Run Code Online (Sandbox Code Playgroud)

假设这超过了79个字符的建议限制.我读它的方式,这里是如何缩进它:

def fun():
    print '{0} Here is a really long \
sentence with {1}'.format(3, 5)
Run Code Online (Sandbox Code Playgroud)

但是,使用这种方法,连续行的缩进与缩进相匹配fun().这看起来有点难看.如果有人要查看我的代码,那么由于这个print陈述而导致缩进不均匀会很糟糕.

如何在不牺牲代码可读性的情况下有效地缩进这样的行?

python string

192
推荐指数
6
解决办法
22万
查看次数

理解__getattr__和__getattribute__之间的区别

我试图理解上的差异之间__getattr____getattribute__,但是,我在它失败.

Stack Overflow问题的答案vs 之间的差异__getattr____getattribute__说:

__getattribute__在查看对象的实际属性之前调用,因此正确实现可能很棘手.您最终可以轻松地进行无限递归.

我完全不知道这意味着什么.

然后继续说:

你几乎肯定想要__getattr__.

为什么?

我读到如果__getattribute__失败,__getattr__就会被调用.那么为什么有两种不同的方法做同样的事情呢?如果我的代码实现了新的样式类,我应该使用什么?

我正在寻找一些代码示例来清除这个问题.我已经用Google搜索了我的能力,但我找到的答案并没有彻底讨论这个问题.

如果有任何文档,我准备阅读.

python oop encapsulation getattr getattribute

192
推荐指数
4
解决办法
7万
查看次数

Android Python编程

我可以使用Python为Android编程吗?我在搜索时似乎偶然发现了许多链接......但它们都不是具体的.

有什么建议?我想为Android编写应用程序,但实际上并不想进入Java.

PS:我的问题是我是否可以为Android编写适当的,完整的应用程序.

python android

111
推荐指数
4
解决办法
8万
查看次数