我用Python完成了我的第一个正确的项目,现在我的任务是为它编写测试.
由于这是我第一次做项目,这是我第一次为它编写测试.
问题是,我该如何开始?我完全不知道.任何人都可以指向我一些文档/教程/链接/书籍,我可以用它来开始编写测试(我猜特别是单元测试)
任何建议都会受到欢迎.
在阅读文档时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()它不能像我期望的那样工作?或者我对浅层和深层复制的理解是有缺陷的?
我有一个清单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在列表理解这样吗?
当我的脚本执行可能需要一些时间的任务时,如何使用进度条?
例如,一个需要一些时间才能完成并True在完成时返回的函数.如何在执行功能期间显示进度条?
请注意,我需要实时,所以我无法弄清楚该怎么做.我需要thread这个吗?我不知道.
现在我正在执行函数时不打印任何内容,但是进度条会很好.此外,我更感兴趣的是从代码的角度来看如何做到这一点.
我用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中创建新空列表的最佳方法是什么?
l = []
Run Code Online (Sandbox Code Playgroud)
要么
l = list()
Run Code Online (Sandbox Code Playgroud)
我问这个是因为两个原因:
我有两个词典,但为了简化,我将采用这两个:
>>> 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中包装长行?
例如:
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陈述而导致缩进不均匀会很糟糕.
如何在不牺牲代码可读性的情况下有效地缩进这样的行?
我试图理解上的差异之间__getattr__和__getattribute__,但是,我在它失败.
Stack Overflow问题的答案vs 之间的差异__getattr____getattribute__说:
__getattribute__在查看对象的实际属性之前调用,因此正确实现可能很棘手.您最终可以轻松地进行无限递归.
我完全不知道这意味着什么.
然后继续说:
你几乎肯定想要
__getattr__.
为什么?
我读到如果__getattribute__失败,__getattr__就会被调用.那么为什么有两种不同的方法做同样的事情呢?如果我的代码实现了新的样式类,我应该使用什么?
我正在寻找一些代码示例来清除这个问题.我已经用Google搜索了我的能力,但我找到的答案并没有彻底讨论这个问题.
如果有任何文档,我准备阅读.
我可以使用Python为Android编程吗?我在搜索时似乎偶然发现了许多链接......但它们都不是具体的.
有什么建议?我想为Android编写应用程序,但实际上并不想进入Java.
PS:我的问题是我是否可以为Android编写适当的,完整的应用程序.
python ×10
list ×2
android ×1
coding-style ×1
comparison ×1
dictionary ×1
getattr ×1
getattribute ×1
if-statement ×1
oop ×1
performance ×1
string ×1
subprocess ×1
testing ×1
timeit ×1
unit-testing ×1