day6-基础 模块详解


 1.定义:

  1)模块:本质上就是一个python程序,封装成一个"模块",可以调用里面的方法,用来实现一个功能.逻辑上用来组织python代码.

  2)包:本质上是一个目录(必须带有一个"__init__.py"文件),逻辑上组织模块.

 

2.使用方法:

   模块:

 1 #我们有两个程序"A"和"B".
 2 
 3 #A
 4 def login():
 5     print("Welcom login system")
 6 
 7 name = "Daniel" 
 8 #定义了两个变量
 9 
10     #B.我们在B里调用A
11 
12 import A
13 a.login()
14 >>>Welcom login system
15 print(a.name)
16 >>>Daniel
17 
18    #还有一种调用方法
19 from A import *                      #意思就是将模块A里的方法全部导入到当前
20 login()
21 >>>Welcom login system       #就是将"A"里的代码解释到"B",这样可以直接调用
22 
23 #但是呢这样有个问题,如果我在"B"里也定义了一个login呢?
24 
25 def login():
26     print("in the B.py")
27 login()
28 >>>in the B.py                   #覆盖前面的login
29 
30     #既然有问题那么就能解决,但是最好不要这样使用
31 from A import login as lg
32 lg()
33 >>>Welcom login system     #'as'定义一个别名
View Code

  包:

1 #现在假如我们有一个包"A",里面有一个包"B",还有一个a.py,B下的"__init_.py"有一行"print("Hello Programmer")"
2 a.py
3 import B
4 >>>Hello Programmer 
5 
6 #所以说,如果导入一个包,就是在执行包下的"__init__.py"
View Code

以上呢都是在同级目录下操作,我们说点不一样的.

同级目录下可以直接调用,不在一个目录下就无法调用.

其实python是有环境变量的:

 1 import sys
 2 print(sys.path)
 3 >>>['E:\\python\\ATM', 'E:\\python', 'D:\\Anaconda3\\python36.zip', 'D:\\Anaconda3\\DLLs', 'D:\\Anaconda3\\lib',......]
 4 #这就是我的环境变量
 5 
 6 #那么我将这个和调用模块有什么关系吗?并没有。。
 7 
 8 #开个玩笑,为什么我们调用sys啊os什么都可以直接调用,也并没有在我们的同级目录下,就是因为这个环境变量,调用时先看你的同级目录,没有就去环境变量找,一个一个找.
 9 
10 #举个例子,加入我们有包"A",包"A"下有包"B",包"A"有个模块叫"hehe",那么我们如何在B下调用A里的hehe?
11 
12 hehe:
13 a = print("in the hehe")
14 test:
15 import sys,os
16 x = os.path.dirname(os.path.dirname(__file__))   #这里呢就是将A加入了python环境变量,这样就能找到hehe这个模块了
17 print(x)
18 sys.path.append(x)
19 import hehe
20 hehe.a
21 
22 #那这里我想直接'a'调用,怎么办呢?
23 from hehe import a
24 a
25 #这样既可,这样就是解释hehe里的'a'方法到我现在的程序里,就等于在我现在的程序有一个a变量
View Code

 

3.import:

  #导入模块的本质就是在解释这个"**.py"的文件

  #导入包就是在执行下面的"__init__.py文件",所以其实并没有什么卵用

 

4.模块分类

  • 标准库(python自带,例如sys,os,time) 
  • 开源模块(第三方开源模块)
  • 自定义模块(就是自己写的)

 


 

posted @ 2017-11-17 10:26  qwerdf六连  阅读(194)  评论(0编辑  收藏  举报