测试驱动开发(Test Driven Development)
编码时遇到下面的问题应该怎样做?#
获取数组长度,下面哪种写法是正确的?
gc.get_objects(0).count()
...
len(gc.get_objects(0))
删除 None 会报错吗?
del None
避免猜测,先去求证#
在 Python Console 中进行测试:
>>> gc.get_objects(0).count()
Traceback (most recent call last):
File "/Applications/PyCharm.app/Contents/plugins/python/helpers/pydev/pydevconsole.py", line 364, in runcode
coro = func()
File "<input>", line 1, in <module>
TypeError: list.count() takes exactly one argument (0 given)
>>> len(gc.get_objects(0))
467
>>> del None
Traceback (most recent call last):
File "/Users/zja/.pyenv/versions/3.10.11/lib/python3.10/code.py", line 63, in runsource
code = self.compile(source, filename, symbol)
File "/Users/zja/.pyenv/versions/3.10.11/lib/python3.10/codeop.py", line 153, in __call__
return _maybe_compile(self.compiler, source, filename, symbol)
File "/Users/zja/.pyenv/versions/3.10.11/lib/python3.10/codeop.py", line 73, in _maybe_compile
return compiler(source, filename, symbol)
File "/Users/zja/.pyenv/versions/3.10.11/lib/python3.10/codeop.py", line 118, in __call__
codeob = compile(source, filename, symbol, self.flags, True)
File "<input>", line 1
del None
^^^^
SyntaxError: cannot delete None
函数的逻辑是否正确?#
def check_gen2(*_args, **_kwargs):
global gen2_objs
gc.collect()
new_gen2_objs = WeakSet(gc.get_objects(2))
if gen2_objs is not None:
new_objs = new_gen2_objs - gen2_objs
print(new_objs)
del gen2_objs
gen2_objs = new_gen2_objs