【问题标题】:Display a list of user defined functions in the Python IDLE session在 Python IDLE 会话中显示用户定义的函数列表
【发布时间】:2011-09-13 00:23:57
【问题描述】:

是否可以在 IDLE 会话中显示所有用户功能的列表?

我可以看到它们在自动完成中弹出,所以也许还有其他方法可以只显示为会话定义的用户函数。当您忘记函数的名称时,它很有用。当您想确保在会话关闭时不会丢失函数的源代码时。

【问题讨论】:

    标签: python function autocomplete


    【解决方案1】:

    您可以列出所有用户定义的函数,而无需任何导入

    print([f.__name__ for f in globals().values() if type(f) == type(lambda *args: None)])
    

    请注意 lambda *args: None 代表什么都不做的函数,可以被任意函数替换。

    【讨论】:

      【解决方案2】:

      这应该会给你一个全局范围内所有函数的列表:

      import types
      print([f for f in globals().values() if type(f) == types.FunctionType])
      

      【讨论】:

      • 我尝试了 callable(f) ,它完成了我想要的。不过,它可能会返回比您想要的更多的对象。
      • 例如,类是可调用的。
      • 这适用于版本 2,7,但在尝试使用 3,5 时我不断收到语法错误。如何修改它以使用 3,5?
      【解决方案3】:

      这应该可行:

      print([f for f in dir() if f[0] is not '_'])
      

      在版本 3.5.2 上测试。

      dir() 本质上会为您提供当前范围内的可调用 对象列表。

      【讨论】:

        【解决方案4】:

        如果我理解这个问题...试试dir()

        import my_module
        dir(my_module)
        

        只需编辑 lunixbochs 写的内容

        def fun(): pass
        print([f.__name__ for f in globals().values() if type(f) == type(fun)])
        

        【讨论】:

        • 我对用户定义的当前 Python 会话中不属于模块的函数感兴趣。
        猜你喜欢
        • 2018-03-20
        • 1970-01-01
        • 2016-05-19
        • 1970-01-01
        • 2018-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多