为什么某些方法的文档字符串显示在Spyder中,而其他方法则不显示?

Why some method's doc string shows up in Spyder but not others?

提问人:user2153235 提问时间:10/19/2023 最后编辑:user2153235 更新时间:10/25/2023 访问量:23

问:

我加载了模块:pyspark.sql.functions

>>> sys.modules['pyspark.sql.functions']
<module 'pyspark.sql.functions' from 'C:\\Users\\User.Name\\anaconda3\\envs\\py39\\lib\\site-packages\\pyspark\\sql\\functions.py'>

我可以调出(比如)方法的文档字符串,但不能:avggrouping

>>> sys.modules['pyspark.sql.functions'].avg?
Signature: avg(col: 'ColumnOrName') -> pyspark.sql.column.Column
Docstring:
Aggregate function: returns the average of the values in a group.
<...snip...>

>>> sys.modules['pyspark.sql.functions'].grouping?
Object `grouping` not found.

我看到两者都在 .为什么 的文档字符串是可找到的,但找不到 ?functions.pyavggrouping

附言即使没有关于原因的答案,对这种观察到的行为进行证实也是有帮助的。谢谢。我的 Spark 版本是 3.4.1,Python 版本是 3.9。我的包是使用 Anaconda 的包管理器设置的。

2023-10-24 后记:我不得不重新启动我的Spyder会话,然后 最终探索而不是:grouping()avg()

# Did this
from pyspark.sql.functions import grouping

# Didn't do this
# from pyspark.sql.functions import avg

以上与我在发布问题时所做的相反。 因此,我遇到了相反的问题,即拉出一个文档字符串 在Spyder中,但发现 无。sys.modules["pyspark.sql.functions"].grouping?sys.modules["pyspark.sql.functions"].avg?

这告诉我,即使所有都是 执行时,并非所有创建的对象都绑定到对应的 命名空间中的名称。只有命令中指定的特定对象是。pyspark/sql/functions.pypyspark.sql.functionsimport

我对此感到困惑。我首先在上面理解 仅将方法绑定到 当前 (REPL) 命名空间,但为什么它也不会绑定另一个 对象添加到命名空间中的相应名称?后者应该是 整个模块。importgroupinggroupingpyspark.sql.functions

如果设计的行为实际上是为了约束对方 对象在模块中到它们的名字中,那么有什么意义呢 维护后一个命名空间?functionssys.modules["pyspark.sql.functions"]

pyspark 命名空间 spyder python-module python-packaging

评论


答: 暂无答案