测试驱动开发(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
comments powered by Disqus