__name__是python的一个内置类属性,它天生就存在于一个 python 程序中,代表对应程序名称。
在test1.py中,并运行该文件:
在test2.py中导入test1.py文件中some_fun函数,并运行some_fun函数:
因此通过判断__name__的值,就可以区分py文件是直接被运行,还是被引入其他程序中。
from bb import *
此方式只能导入公有的属性、方法、类;无法导入以单下划线开头(protected)或以双下划线开头(private)的属性、方法、类。
由于bb.py中使用了__all__=('A','func'),所以在别的模块导入该模块时, 只能 导入__all__中的变量、方法、类;
__all__=('func','__func','_A')
放入__all__中所有属性均可导入,即使是以下划线开头。虽然_func()、__func()属于protected ,private权限的,但是如果使用__all__是可以直接导入访问的 。也就是说可以通过这种方式导入public,protected,private。
定义个函数,查看带括号和不带括号的type.def func1():
pass
print(type(func1))
#执行结果:<class 'function'>
print(type(func1()))
#执行结果:<class 'NoneType'>
由此可见:
使用return func 时返回的是func 这个函数;
使用return func() 时返回的是func() 执行后的返回值,如果func()函数没有返回值则返回值为None,
func函数如果有其他打印语句也会一起执行。