Python Day 18 常用模块(模块和包)

Python Day 18 常用模块 (模块和包)

模块

#什么是模块?
#如何使用?
#import py文件 就是执行这个py文件
#如何在当前文件中执行导入模块中的函数或变量
# 导入的模块名.函数名
# 导入的模块名.变量
#模块是否可以被多次导入吗?
#不可以,只有一次生效
# 发生了什么?
#import mymodules
#检测模块名字是否存在,如果有就不继续导入

 


#print(sys.modules.get('mymodules'))
#如果没有,创建一个属于这个模块的命名空间。
#执行这个模块中的代码,将模块中的名字存储在这个模块的命名空间中

import sys
print(sys.modules.get('mytemp'))
import mytemp
import mytemp
import mytemp
print(sys.modules)
print(sys.modules.get('mytemp'))

#为什么pycharm报错的代码还能执行
#对于自定义模块,pycharm只认项目根目录中的,会报错
#如何处理?
# 可以设置当前目录为项目根目录。
#python解释器会从当前目录,和lib根目录进行查找
#pycharm会将项目目录加入环境变量中
#print(sys.path) #查看环境变量

import sys
print(sys.path)
path = 'D:\Learn\Python全栈开发\Day17'
sys.path.append(path)
#修改环境变量列表,控制哪些路径下的模块可以被顺利导入
print(sys.path)


#项目开发规范#

  导入模块的方法

  

  import xx

  import xx as 别名

  from xxx import xxx as xxxx

  from xxx import xxx as xx,xxxxxx as xx

  import time,os,sys #可以一行导入多个,不推荐使用

  from xxx import *

     此方法可以直接用,但是发送命名冲突,几率低,主要会降低可读性引起歧义
  对应导入文件中设置 __ALL__ = ['变量','函数名'],此方法只约束*,可以直接导入其他的


要执行整个要导入的文件,导入了全局

 


会不会和全局的变量发生冲突?
  from import导入的变量会发生冲突
如果导入的是price ,my_moudel是否能用?
  不能用
func1是否还能用?
  不能用
导入调用price 的func1 price能否直接用?
  func1可以调用price,不能直接用。


导入模块的顺序
  一次性将需要的都写入开头
  先写内置模块,扩展模块,自定义模块

模块的查找顺序是:内存中已经加载的模块->内置模块->sys.path路径中包含的模块

import os
import time
import django
import mymoudles

模块直接不能循环引用,一般会发生找不到模块报错

 

 

 

 



编译文件pyc文件问题

import time
#在导入一个模块的时候会产生一个模块的字节码pyc文件
#如果首次导入模块,会自动生成,会认为是一个通用的功能,
#将通用的功能进行编译,节省启动时间
#pyc文件会加快程序的启动效率,不会影响执行效率。
#如果py文件更改了,pyc文件会感知吗?
#可以,会重新编译
posted @ 2018-05-23 18:51  eailoo  阅读(165)  评论(0编辑  收藏  举报