gpt4 book ai didi

python - 在 Python 中重命名命名参数以避免与 import 语句发生命名冲突

转载 作者:太空狗 更新时间:2023-10-29 21:41:22 30 4
gpt4 key购买 nike

假设我在一个大型 Python 项目中有一个函数 foo,它有一个命名参数 bar:

def foo(bar=42):
do_something_with_bar(bar)

此函数在代码库中被多次调用,在使用或省略命名的 bar 参数的调用中。

现在说我正在更改此函数,因为它有一个错误,并且想开始使用某个包中的函数,巧合的是也称为 bar。当我像这样导入它时,我无法使用 bar 函数:

from package import bar

def foo(bar=42):
# how can I use the package.bar function here?
do_something_with_bar(bar)

我可以使用类似的东西:

from package import bar as package_bar

但是这个文件还包含很多 bar 的调用,所以这是不行的。

我能看到这个工作的唯一方法是重命名 package 中的 bar 方法:

from package import bar
package_bar = bar

def foo(bar=42):
do_something_with_bar(package_bar(bar))

或者多次导入(未测试):

from package import bar, bar as package_bar

def foo(bar=42):
do_something_with_bar(package_bar(bar))

有什么方法可以重命名 foo 函数中的 bar 参数,而不会在整个过程中中断对 foo 函数的所有调用代码库?

最佳答案

这是一个常见问题。在这种情况下,为 package 添加一个额外的 import 语句会有所帮助,因此您可以通过 安全地引用 packagebar >package 命名空间而不会遇到命名冲突。

import package
from package import bar

def foo(bar=42):
do_something_with_bar(package.bar(bar))

您最终还是导入了一次模块,但是您现在有两种引用 bar 的方法。

关于python - 在 Python 中重命名命名参数以避免与 import 语句发生命名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53837042/

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