根据http://www.faqs.org/docs/diveintopython/fileinfo_private.html:
像大多数语言一样,Python具有
私有元素的概念:
私人
函数,这些函数不能被调用
在模块外
然而,如果我定义两个文件:
#a.py
__num=1
and:
#b.py
import a
print a.__num
当我运行b.py时,它输出1而不给出任何异常。是diveintopython错了,还是我误解了什么?是否有方法将模块的函数定义为私有?
抱歉我回答晚了,但是在一个模块中,你可以像这样定义包来“导出”:
mymodule
__init__.py
library.py
main.py
我的模块/库.py
# 'private' function
def _hello(name):
return f"Hello {name}!"
# 'public' function which is supposed to be used instead of _hello
def hello():
name = input('name: ')
print(_hello(name))
mymodule里/ __init__ . py
# only imports certain functions from library
from .library import hello
main.py
import mymodule
mymodule.hello()
尽管如此,函数仍然可以被访问,
from mymodule.library import _hello
print(_hello('world'))
但这种方法使其不那么明显