【问题标题】:With ipython, renamed function can become double named. The module got both the old and new name使用 ipython,重命名的函数可以变成双重命名。该模块同时获得了旧名称和新名称
【发布时间】:2012-08-09 14:42:05
【问题描述】:

无论reloaddelimport还是autoreload,函数都可以被两个引用名称,旧名称与新名称相同。

明确地说,这是我的代码:

#my_module.py
#...
#def waitting_user():  #This is the old name
#...
def waiting_user():  #this is new
#... see, I change the function name.

然后我可以在 ipython 控制台中同时使用my_moudle.waitting_user()my_moudle.waiting_user,它们的作用相同。旧名称变成了鬼名,它会留在运行的 ipy 中。口译员。有什么办法在它发生时删除它?

【问题讨论】:

  • 您说waitting_user 是对waiting_user 中的错字的更正。但是waiting 有一个“t”不是更正确的拼写吗?
  • 感谢您指出这一点。
  • 感谢您指出这一点。所以,它是waiting, or waitting,两者都指向同一个函数。一个人是另一个人的鬼魂,除非del手工。

标签: python refactoring ipython


【解决方案1】:

当它发生时有什么方法可以删除它?

del你不想要的名字。即del my_module.waiting_user

【讨论】:

    【解决方案2】:

    您不会更改任何东西的名称。您只是在创建两个不同命名的函数。如果你有一个定义了一个坏名字的函数,你可以给它一个新名字,然后del上面提到的旧名字。

    >>> def crap_name():
    ...     print 1
    >>> good_name = crap_name
    >>> del crap_name
    >>> good_name()
    1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-13
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      • 2019-06-24
      • 2020-08-16
      相关资源
      最近更新 更多