码迷,mamicode.com
首页 > 编程语言 > 详细

从模块到python文件的两种用法

时间:2019-09-26 17:20:51      阅读:88      评论:0      收藏:0      [点我收藏+]

标签:__init__   输入   解释器   local   执行文件   内存   模块名   逻辑   运行   

01模块的四种形式

模块

就是从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名是test.py的话,它的对应模块名就是test)

用来从逻辑上组件模块,本质就是一个目录(必须带有一个__init__.py文件)

导入模块

本质就是把python文件解释一遍

导入包

本质就是执行该报下的__init__.py文件;如果要导入包下面的模块:需要先导入包,然后从包下的__init__.py文件中再导入该包下的模块

python可以看成是手机??--》pip看成应用管家--》模块就是应用软件

1.系统自带软件--》不需要安装

2.需要下载的软件

3.自定义软件

1.python内置模块:python解释器启动自带的time/random/os/sys
2.pip安装的模块,pip install jieba
3.自定义模块--》自定义代码
4.包(模块)-》未来详细讲

2.import与from..import..

import

以time为例:
import time

1.开辟内存空间,内存空间命名为time
2.把time.py中所有代码读入空间,然后运行
3.通过time.方法名使用time模块中的方法

#test.py

import time

import time as t  #变量名t指向time模块的名称空间

from time import sleep
from time import sleep,localtime

优点:永不冲突
缺点:每次导入多输入几个字符,非常麻烦

from...import...

以time里的sleep为例

from time import sleep

1.开辟内存空间,内存空间命名为time
2.把time.py中所有代码读入空间,然后运行
3.把sleep()方法读入import和from import,因此可以直接使用方法名

# *__all__=['']
#test.py

__all__ = ['f1','f2']

def f1():
    print(1)
def f2():
    print(2)
def f3():
    print(3)

from test import *
    test.f3()    #无法运行

import test
    test.f3()   # 3

优点:少打几个字符
缺点:容易冲突

3.循环导入

#m1.py
from m2 import y
x = 10
print('m1:',x,y)

#m2.py
from m1 import x
y = 20
print('m2:',x,y)

过程:m1.py --> m2.py --> m1.py ...

结果:x/y在这个过程中一直没有生成

解决方案一

#m1.py
x = 10
from m2 import y
print('m1:',x,y)

#m2.py
y = 20
from m1 import x
print('m2:',x,y)

过程:m1.py -->10 20 --> m2.py -->10 20--> m1.py --> x = 10 20

结果:m2: 10 20
m1: 10 20
m2: 10 20

解决方案二

#m1.py
def f1():
    from m2 import y
    print(y)
x = 10

#m2.py
def f1():
    from m1 import x
y = 20 

过程:f1() --> m2.py --> y = 20

结果:y = 20

4.模块的搜索路径

  1. 先从内存中寻找

    from m2 import y
    print(y)
    import time
    time.sleep(10)  # 10s内删除了m2
    
    
    from m2 import y
    print(y)
  2. 再从内置中寻找

    from time import time
    print(time)
  3. 然后从自定制寻找

    x = 10
  4. 最后从环境变量中寻找

    import sys
    print(sys.path)  # 环境变量,模块就是在某个路径中,需要添加路径,在这里找
    sys.path.append(r'D:\badboy\第十二期正式开课\day15')
    
    # del sys.path[1]
    print(sys.path)
    
    import testt
    testt.f1()

(这段干货是我从别人博客那边偷的)

5.Python文件的两种用途

作为模块文件,模块可以有多个

作为执行文件,执行文件只有一个

# m1.py
x = 10
if __name__ == '__main__':
print(x)
# m2.py
import m1

if __name__ == ‘__main__‘:这段代码在pycharm里面只需要打一个main然后tab即可打出来,不需要一个字一个字打

当运行m1时__name__ == ‘__main__‘所以会输出x

运行m2时__name__ != ‘__main__‘(if条件不成立)会报错

从模块到python文件的两种用法

标签:__init__   输入   解释器   local   执行文件   内存   模块名   逻辑   运行   

原文地址:https://www.cnblogs.com/jimGraymane/p/11593062.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!