[Python] 某函数处理列表,不修改参数时的更优雅的方式?

我写了一个函数用于处理列表(比如url列表),每处理完一个,就修改一下列表
很多文章教导我们函数不应该修改参数,我想到一个丑陋的实现方法:

  1. 老列表作为这个函数的参数
  2. deepcopy老列表到新列表
  3. 基于新列表进行操作(pop/append)
  4. 函数完成/出错后return新列表
  5. 把这个最新列表赋值给老列表

感觉这个做很不优雅,求教大家是否有更好的办法?
谢谢

阅读 3.1k
4 个回答
def foo(urls):
    for url in urls:
        yield 'http://www.xxx.com' + url

处理完一个就返回一个

通常情况下有这种需求可能是因为别的线程可能也在使用该列表。所以要么加锁,要么放到Queue中,queue是线程安全的。

用global variable?

更优雅的方案就是,弄清楚,这个函数的结果究竟应该是返回什么东西以及之后被如何使用?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题