模块代码编写基础

模块的创建

定义模块,只要把一些python代码输入至文本文件,然后以.py为后缀名保存,任何此类文件都会自动被认为是python模块。在模块顶层指定的所有变量名都会变成其属性,并且可以导出供客户端使用。

对于会执行到不会被导入的顶层文件而言,.py从技术上来讲是可有可无的,但是每次都加上去,可以确保文件类型更醒目,并允许以后可以导入任何文件。

 

模块的使用

import module:

因为import使一个变量名引用整个模块对象,我们必须通过模块名称来得到该模块的属性(如,module.printer)

from module import printer:

因为from会把变量名复制到另一个作用域,所以它就可以让我们直接在脚本中使用复制后的变量名,而不需要通过模块(如,printer)

from module import *:

当我们使用*时,会取得模块顶层所有赋值了的变量名的copy。从根本上来说,这就是把一个模块的命名空间融入另一个模块中。

它有破坏命名空间的潜质,导入变量和本地作用域中变量同名,变量会被悄悄覆盖掉

 

以from复制的变量名会变成共享对象的引用,修改一个已取出的可变对象,会影响被导入的模块的对象。

 

模块命名空间:

模块最好理解为变量名的封装。模块技术命名空间(变量名建立所在的场所),而存在于模块之内的变量名就是模块对象的属性。

文件生成命名空间;

模块语句会在首次导入时执行。Python会建立空的模块对象,并逐一执行该模块文件内的语句。

顶层赋值语句会创建模块属性。

模块的命名空间能通过__dict__或dir(M)获取

模块是独立的作用域

Learning Python, Fourth Edition, by Mark Lutz.

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值