python autocad 块属性_Python的包、模块、属性

关于Python的包、模块、属性的小介绍。模块:python中的模块(module)就是同名的py文件。

属性:module的属性(attribute)可以是函数、类、变量等。

包:python中的包(package)就是同名目录,且需要在该目录下有__init__.py表示该目录是一个package(其内容可以为空)。

package的拓扑结构相当于目录的结构,即对应于package1.package2(package2是package1的子package),目录package1有子目录package2。而在__init__.py中可以import其他的package/module/attribute,从用户角度来看,这类似于文件系统中的link或快捷方式。

package也是module,其内容是package对应目录中的__init__.py文件(你可以通过打印module.__file__来确认这点)。如果其中import了下属module的attribute,则相当于该package对应的module也有了这个attribute(就像快捷方式)。

模块文件(xxx.py或者__init__.py)中的__all__属性(是一个list类型的变量)用于显式定义from module import *时暴露出来的接口。如果没有__all__,则:对于module来说,其中所有非下划线开头的成员都会被暴露出来

对于package来说,其所有非下划线开头的成员,和下级模块都会被暴露出来

from package.module import *受__all__的约束,只会导入被__all__暴露出来的attribute和子module,但是在直接from package.module import xxx时,xxx不受__all__约束。

import和from import:from A.B import C:A必须是package,B可以是package/module,C可以是package/module/attribute/*,用时直接用C

import A.B.C:A、B必须是package,C可以是package/module,用时需要写全A.B.C(这个操作实际上相当于import A,导入之后A.D也可以直接使用)

导入package:import package :导入package(作为module),之后可以直接用package

import package1.package2:导入package1.package2进入命名空间,之后可以通过package1.package2使用package2。该操作实际是导入整个package1进入命名空间,也可以通过http://package1.xxx来使用package1的其他成员。

from package1 import package2 :直接导入package2进入命名空间,之后可直接使用package2

导入module:import package.module:导入package.module进入命名空间(其实是导入整个package进入命名空间),之后可以通过package.module使用module

from package import module:直接导入module进入命名空间,之后可直接使用module

导入attribute:from package.module import attribute:导入attribute,之后可以直接用

from package import attribute:同上,因为在package的__init__.py中导入module,因此此处的module可以忽略

导入所有成员:from package1.package2 import *:导入package2下所有的module和attribute,通过package2下__init__.py文件中的__all__变量指定,如果没有则导入所有非下划线开头的成员

from package.module import *:导入module下所有的attribute

错误格式:import package.attribute:错误,import a.b.c中c只能是module/package

import package.module.attribute :错误,只有package之后才能跟“.”

from package import module.attribute:错误,import之后不能有“.”

总结一下就是:可以import package/module

可以from package/module import package/module/attribute

“.”只能在package之后

from xxx import yyy中,import之后不能有“.”

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值