问题描述
我习惯于使用raw_input(...)
进行某些调试。
但是,在python3中,它已更改为input(...)
。
有没有一种方法可以在我的项目顶部定义别名,例如:
# __init__.py
raw_input = input
我尝试了上面的方法,但是它只能在我添加到的文件中使用,而不能在该目录中的任何其他文件中使用。 我希望这基本上可以在python信息库中的每个文件中工作。
1楼
您可以在单独的文件中定义所有别名(例如aliases.py
),然后在需要时导入该文件(即import aliases
)。
这种方法的aliases.alias
除非您使导入更加严格(例如, from aliases import raw_input
),或者如果您不关心避免通配符导入(例如, from aliases import *
),则将通过aliases.alias
引用别名。
此外,如果您不介意别名文件中的其他导入,则可以使用内建名称空间:
import builtins
builtins.raw_input = input
您仍然必须定义所有别名单独的文件(例如aliases.py
),然后在需要的地方导入该文件(即import aliases
),但是使用内建命名空间的优点是可以完全按照给定的方式使用该导入。
2楼
您可以通过创建用于创建重命名功能的模块,然后将其导入到您想要的每个文件中来做到这一点:
首先在alias.py中声明模块功能
def raw_input(a):
return input(a)
其次,导入到另一个文件:
from alias import raw_input
x = raw_input("hello world")
print(x)
不幸的是,您将必须将模块导入到要使用重命名功能的每个文件中。
希望这对你有用!
3楼
将其放在顶部,您将得到您想要的。
import builtins
builtins.raw_input = builtins.input
它可以保证正常工作,但通常被认为是不好的做法(每个人都会将raw_input定义在何处感到困惑)