>> remove('an', 'banana') -6ren">
gpt4 book ai didi

python - 依赖性。关于加载在函数或类中使用的模块,指导我吗?

转载 作者:行者123 更新时间:2023-12-01 06:09:45 25 4
gpt4 key购买 nike

我正在研究一些示例,并提出了这个可行的答案 - 文档测试中设置的挑战:

def remove(sub, s):
"""
>>> remove('an', 'banana')
'bana'
>>> remove('cyc', 'bicycle')
'bile'
>>> remove('iss', 'Mississippi')
'Missippi'
>>> remove('egg', 'bicycle')
'bicycle'
"""
if sub not in s: return s # 1
from string import replace # 2
return replace( s, sub, '', 1) # 3

作为一名 PyNoob,我想问几个问题,以了解我对所有这些东西的看法,以及我从 PHP 带来的包袱。

在我的线路上:

  1. 这是引入模块的正确位置吗?是否有一种可接受的方法来检查模块是否已加载并处理它?<​​/li>

2.这是加载我想要的方法的最有效方法吗?

3.总的来说,这是您解决这个特定问题的方式吗?

我想我也在寻找一只与你的“现实世界”经验相比较的阉牛。字符串模块是否如此常见以至于您很可能会加载它?

如果是这种情况,如何检查模块是否已加载?

使用异常来处理无法找到的字符串模块是否毫无意义,因为默认情况下字符串始终可用?

(ps取自Learning With Python ftw)

编辑

好吧,对于那些想知道的人,正如已经指出的那样 - 我的问题被误导了,因为我无法理解 Python 中的字符串 obj 已经包含了 Replace() 方法。

这是因为我没有执行以下操作造成的:

>>> dir("a string")

这将显示所有方法,包括“替换”:

那么我可以通过输入以下内容来跟进:

>>> "a string".replace.__doc__

会喷出:

'S.replace(old, new[, count]) -> string Return a copy of string S with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced.'

现在我当然知道这个replace()方法必须存在于某个地方,但我还不知道如何自己寻找和发现——坦率地说,Python文档对我来说太“松散耦合”了。感谢您的回答 - 但我发布此编辑以防万一其他类似无知和困惑但愿意的 Python 拥护者偶然发现。

最佳答案

按照惯例,导入被放置在模块/脚本的顶部。它使您和其他阅读您代码的人更容易找到它们。有时有充分的理由将导入放在其他地方,例如开销很大的条件导入。

另一个约定是不“检查”模块是否已加载,而是依赖 Python 解释器在要取消引用的对象不可用时引发 NameError 异常。另请注意,同一模块的多次导入是安全的,因为导入机制会检查该模块是否已导入。

您可能想阅读http://docs.python.org/tutorial/modules.htmlhttp://diveintopython.net/object_oriented_framework/importing_modules.html

在这种特殊情况下,您不需要导入任何内容,因为 .replace() 是字符串对象的方法。 string 模块很大程度上是多余的(不完全是,但根据我的经验,它很少被导入)。

s.replace(sub, '')

关于python - 依赖性。关于加载在函数或类中使用的模块,指导我吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6519414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com