习惯了VS写C#、Eclipse写JAVA,写Python代码时,Ipython的自动联想功能也爽,几乎不会有啥意外。用IDE如PyDev和Pycharm写代码时,自动联想功能傻了……
如用Pwntools包和Tensorflow包,import时__init__.py经常由于Name Confusion导致自动联想失效。
折腾了一个晚上,终于找到解决问题方法了。通常包都会引入名字到全局命名空间,如import tensorflow as tf,from pwn import * ,避开名称空间的方法是把tensorflow或者pwn加入到bullins,eclipse中操作windows>Preferences>Pydev>Interpreters>Python Interpreter>Forced Builtins。
builtin 通俗理解为Python内置对象。如abs()、sum()等。
Python2 的__builtins__与__builtin__区别:
1.如果在main module,__builtins__ = __builtin__
2.如果其它module,__builtins__ = __builtins__.__dict__
__builtins__ 是Python解释器用来加载__builtin__空间对象的,并设置名称引用至后者。
Python3 __builtin__改名为builtins。
Python可动态修改的东西太多了,用来藏病毒,可以藏很深。这玩意比Java classpath还复杂,Java classpath通过双亲委托查找路径很清淅,话说java动态修改classpath最牛B的项目就是sqoop1。
网友评论