有人可以解释在Python中对象名称之前有前导下划线的确切含义吗?另外,解释单个和双重前导下划线之间的区别.此外,无论所讨论的对象是变量,函数,方法等,这个含义是否保持不变?
Python模块和Python包之间有什么区别?
另请参阅:"package"和"module"之间的区别(对于其他语言)
我在我的系统上安装了一个python模块,我希望能够看到它中有哪些函数/类/方法.
我想在每一个上调用doc函数.在ruby中,我可以执行类似ClassName.methods的操作,以获取该类上可用的所有方法的列表.python中有类似的东西吗?
例如.就像是:
from somemodule import foo
print foo.methods # or whatever is the correct method to call
Run Code Online (Sandbox Code Playgroud) 根据http://www.faqs.org/docs/diveintopython/fileinfo_private.html:
像大多数语言一样,Python具有私有元素的概念:
- 私有函数,无法从模块外部调用
但是,如果我定义了两个文件:
#a.py
__num=1
Run Code Online (Sandbox Code Playgroud)
和:
#b.py
import a
print a.__num
Run Code Online (Sandbox Code Playgroud)
当我运行b.py它打印出来,1没有任何例外.diveintopython错了,还是我误解了什么?而且是有一些方法可以不定义模块的功能为私有?
在实例化和检索元素时,元组和列表之间是否存在性能差异?
建议不要import *在Python中使用.
任何人都可以分享原因,以便我下次可以避免它吗?
我正在使用python flake8库在python中进行PEP8检查.我__init__.py在我的一个子模块中的文件中有一个import语句,如下所示:
from .my_class import MyClass
Run Code Online (Sandbox Code Playgroud)
我在init文件中有这一行的原因是我可以从子模块导入MyClass from somemodule import MyClass而不必编写from somemodule.my_class import MyClass.
我想知道是否可以在纠正PEP8违规时保持此功能?
我在python/Lib源代码中看到了很多,但我不知道它是什么.
我以为它被用来限制模块的可访问成员.因此,只有__all__将要出现的元素才会显示出来dir(module).
我做了一个小例子,看到它没有像我预期的那样工作.
那么...... python __all__模块级变量是什么?
我有以下文件,
file1.py
file2.py
file3.py
Run Code Online (Sandbox Code Playgroud)
让我们说这三个都用了
lib7.py
lib8.py
lib9.py
Run Code Online (Sandbox Code Playgroud)
目前,这三个文件中的每一个都有这些行
import lib7
import lib8
import lib9
Run Code Online (Sandbox Code Playgroud)
如何设置我的目录/代码,使libs只导入一次,然后在三个文件之间共享?
当包变得很大时,可能很难记住东西在哪里,并且我们想要的对象的点路径可能很麻烦。作者似乎解决这个问题的一种方法是将“最好的”对象的引用带到顶部,尽管这些代码实际上可以存在于下面的几个包级别中。
这让人可以说:
from pandas import wide_to_long
Run Code Online (Sandbox Code Playgroud)
代替
from pandas.core.reshape.melt import wide_to_long
Run Code Online (Sandbox Code Playgroud)
但是这样做的来龙去脉以及该方法的最佳实践是什么?不加载__init__.py带有许多导入的顶部(为了使它们在顶层可用)是否意味着包的单个对象的任何导入突然会占用比所需更多的内存 - 因为 中提到的所有内容都会自动__init__.py加载?
然而,包却可以做到这一点。例如,看看可以从顶层numpy或底层导入什么(可以在这个要点pandas中找到运行您自己的诊断的代码)。
$ python print_top_level_diagnosis.py numpy
--------- numpy ---------
599 objects can be imported from top level numpy:
19 modules
300 functions
104 types
depth count
0 162
1 406
2 2
3 29
4 1
$ python print_top_level_diagnosis.py pandas
--------- pandas ---------
115 objects can be imported from top level pandas:
12 modules
55 functions
40 …Run Code Online (Sandbox Code Playgroud) python ×10
module ×3
flake8 ×1
function ×1
inspect ×1
list ×1
namespaces ×1
package ×1
pep8 ×1
performance ×1
private ×1
python-3.x ×1
reflection ×1
tuples ×1