python's twenty eithth day for me 模块和包
2024-09-04 01:39:11
模块:
什么是模块:
常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀,但其实import加载的模块分为四个通用类别:
1,使用python编写的代码(.py文件)
2,以被编译为共享库或DLL的C或C++扩展。
3,包好一组模块的包。
4,使用C编写并链接到python解释器的内置模块。
import:
import 模块名:
1,导入一个模块。
2,相当于这个模块从上到下一次被执行了。
3,同一个模块不会被多次导入。
import my_module
# 使用模块中的属性或方法时:模块名.方法名() 模块名.属性名
print(my_module.money) # 100 # 使用模块中的属性名或方法名。
my_module.func() #
1,import my_module 模块,首先创建一个属于my_module的内存空间
2,加载my_module模块中的所有代码
3,将my_module模块中的名字方法放在my_module的命名空间中
import...as...:将...模块导入命名为...
import my_module as m
print(m.money) #
m.func() #
inp = input('json or pickle >>>')
if inp == 'json':
import json as m
elif inp == 'pickle':
import pickle as m
dic = {'k':'v'}
print(m.dumps(dic))
print(m.loads(m.dumps(dic)))
import 可一次导入多个模块:不推荐使用。
import hashlib,json,pickl
python PEP8规范:
1,每一行 import 应该导入一个模块。
2,如果不是必要的需求,所有的模块都应该在文件的顶端导入。
3,关于导入模块的顺序,先导入内置的,再导入扩展,最后导入自定义。
导入模块是将模块放入到 sys.modules 中,使用变量的时候看的是全局命名空间globals().
import sys
import my_module
print(globals())
print(sys.modules)
from 模块名 import 方法名或者属性名:
1,导入的名字直接属于全局,但是指向模块的名字所在的内存空间
2,导入的名字如果是是函数或者方法,引用了全局的变量,仍然使用模块中的变量
3,导入的名字和全局的名字是一样的,谁最后抢占到就是谁的
from my_module import money,func
# 这种导入就不能使用模块名.属性名或方法名了,否则会报错。
# 这样导入的属性或者方法名就属于全局变量,可直接调用。
print(money) # 100 此时是模块局部中的money
money = 999
print(money) # 999 先加载模块中的money,然后加载本全局变量中的money会将模块中的覆盖
fu nc() # 100 # 用到的变量仍然是局部的变量。
from 模块 import * : 默认会把模块中所有名字都导入到全局:
from my_module import *
print(money)
func()
* 和 __all__配合使用:在被导入模块中如果有__all__ = [‘属性名’,‘方法名’],则只能调用__all__列表中拥有的名字。其他的都不可调用。
最新文章
- H5是什么,CSS3又是什么?
- JMS中的消息通信模型
- 几篇关于VisualStudio的调试工具文章
- form和validate示例
- 正确的SVN导入代码命令
- UVa 10106 Product
- 应用越来越广泛的css伪类
- powershell创建并加载配置文件
- c# 左连接写法
- (转) Python in NetBeans IDE 8.0
- 依据道路的shape获得high_cross和low_cross
- apache2部署django以及静态文件
- keepalived的主从备份服务器
- <;玩转Django2.0>;读书笔记:模板和模型
- hdu 1518 BFS
- 解决plink报错:.bim file has a split chromosome. Use --make-bed by itself to remedy this.
- com.mysql.jdbc.Connection.isValid(I)Z
- javascript进阶笔记(3)
- C数据结构 : 线性表 与 链表
- HTML 设置字体