模块四种形式 、import和from...import..、模块的搜索路径、python文件的两种用途

一、模块的四种形式

1.内置模块:pyrhon解释器启动自带的模块,time/random/os/sys....

2.第三方模块:pip install jieba   ...已被编译的共享库

3.自定义模块:如果你自己写一个py文件,在文件内写入一堆函数,则它被称为自定义模块,即使用python编写的.py文件

4. :把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包)

二、import.....和from.....import......

import time  优点:永不冲突

1.开辟内存空间,内存空间命名为time

2.把time.py中所有代码读入名称空间,然后运行

3.通过time.方法名 使用time模块中的方法  time.sleep(1)

from time import sleep,time #特定导入一些功能  缺点:容易与当前执行文件中名称空间中的名字冲突

from time import *     #导入所有的功能    不要使用

1.开辟内存空间,内存空间命名为time

2.把time.py中所有代码读入名称空间,然后运行

3.把sleep()读入import 和 from...import.py中,因此可以直接使用方法名   如:sleep(1)

自定制模块的用途:分文件存储代码 --> 函数与函数之间分开 --> 让代码更加清晰 --> 不同的模块干不同的事

如果导入的模块文件变量名与当前文件里面的变量名重复。在导入的文件开头加入__all__ = [abc,fi] #只允许导入列表内的变量,只对from...import*的限制

三、循环导入:

#m1.py
pirnt('from1.py')
from m2 import x
y = 'm1'

1.创建m2的名称空间

2.执行m2.py,将执行产生的名字丢到m2.py

3.在当前执行文件中拿到m2.x

#m2.py
print('form m2.py')
from mi import y
 x = 'm2'

1.创建m1的名称空间

2.执行m1.py,将执行产生的名字丢到m1.py

3.在当前执行文件中拿到m1.y

如果运行m1.py,则会报错ImportError: cannot import name 'x'

如果运行m2.py,则会报错ImportError: cannot import name 'y'

解决方案:

1.把两个文件的变量x,y都放到import 上面一行

2.定义函数,在函数中导入   #  定义函数阶段只检测语法,不执行代码

# m1.py
print('from m1.py')


def func1():
    from m2 import x
    print(x)
y
= 'm1'
# m2.py
print('from m2.py')

def func1():
    from m1 import y
    print(y)

x = 'm2'

补充:

#m1.py
x = 10
from m2 import y

print('m1:', x, y)
y = 20
from m1 import x

print('m2:', x, y)

运行m1.py打印结果为:

m1: 10 20
m2: 10 20
m1: 10 20
 
模块永远只会开辟一次 ; from m1 import 必须得执行m1.py中所有代码

四、 模块的搜索路径

内存----》内置-----》自定义

打印环境变量:

import sys

print(sys.path)

五、python文件的两种用途

1.脚本,一个文件就是整个程序,用来被执行

2.模块,文件中存放着一堆功能,用来被导入使用

__name__ == '__main__'
__name__是每个文件独有的,当该文件作为执行文件运行时,__name__等于'__main__';当该文件作为模块文件导入时,__name__等于文件名
 
 
补充:pyinstaller模块  把文件编辑成exe格式
cmd  pip install pyinstaller
安装完成后,在pychom里面import pyinstaller
运行代码:再进入需要转的文件路径下面 运行
pyinstaller –i rose.ico(图片文件,百度转一个) –F rose.py(python文件)
pyinstaller –i rose.ico –F rose.py

 转ico图片:找一张图片,再在网站上找生成图标ico的网址,把图片转成ico

原文地址:https://www.cnblogs.com/fjn839199790/p/11590747.html