模块~

0.模块简单来说就是一段程序。每一个.py文件都是独立的模块

1.导入模块的三种方法:

A. import 模块名  B.from 模块名 import 函数名 C. import 模块名 as t  推荐使用第三种方法,可以防止出现命名冲突

2.模块中不行被导入的属性名称,可以使用__属性名  的方式进行属性私有化,但是如果显式地使用import xx.__属性名,就藏不住了

3.写一个常量模块

class Const:

    def __setattr__(self,name,value):
        if name in self.__dict__:
            raise TypeError('常量无法改变!')

        if not value.isupper():
            raise TypeError('常量名必须由大写字母组成!')

        self.__dict__[name] = value



import sys

sys.modules[__name__] = Const()

4.两个模块相互导入的时候如何防止ImportError

#文件a
import b

def x():
    print('x')

if __name__ == '__main__':
    b.y()
#文件b
import a 

def y():

    print('y')

if __name__ == '__main__':
    a.x()
执行b的过程:import a->跳转到a.py->import b->继续执行b中下面的代码块    此时如果没有 if __name__ = '__main__'判断,将会执行a.x(),而a.py下面的并没有执行,所以就会找不到a.x(),出行AttributeError: module 'a' has no attribute 'x'


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值