目录
- 模块的四种定义
- import 和 from import
- 模块的搜索路径
- python文件的两种用途
- pip install pyinstaller
- 循环导入的解决方法
模块的四种定义
模块基础 --> 怎么导入模块
python常用模块 --> numpy / pandas / matplotlib --> 数据分析必精通 -->
模块
import time
python你看成手机--> pip 看成应用管家 --> 模块就是应用软件
- 系统自带应用软件 --> 不需要安装
- 需要下载的软件
自定义的软件
- 内置模块:python解释器启动自带的模块, time/random/os/sys...
- pip安装的模块: pip install jieba / pycharm安装
- 自定义模块 --> 自定义代码
包(模块) -> 未来详细讲
什么是模块?
模块 -> 实现功能 --> 代码 --> 更方便
import 和 from import
import time
- 开辟内存空间,内存空间命名为time
- 把time.py中的所有代码读入名称空间,然后运行
- 通过time.方法名使用time模块中的方法
time.sleep(0.01)
from 模块名 import 方法名
from time import sleep
- 开辟内存空间,内存空间命名为time
- 把time.py中的所有代码读入名称空间,然后运行
- 把sleep()读入import和from...import.py中,因此可以直接使用方法名
sleep(0.01)
如果你想使用多个方法:
from time import sleep, time # 特定导入一些功能
如果你想导入非常多的方法
from time import * # 导入了所有的功能
localtime()
gmtime()
import和from...import...的优缺点
import
优点: 永不冲突
缺点: 每次导入多输入几个字符,非常麻烦
from...import...
优点: 少输入几个字符
缺点: 容易发生冲突
补充 --> 自定制模块 -->
import testt
print(testt.abc)
testt.f1()
x = 20
y = 30
from testt import * # 不要使用
print(abc)
f1()
print(x)
自定制模块的用途: 分文件存储代码 --> 函数与函数之间分开 --> 让代码更加清晰 --> 不同的模块干不同的事
模块的搜索路径
从当前 局部 -> 全局 -> 内置
- 内存
- 内置
- 自定义
import time
import testt
print(testt.abc)
time.sleep(10) # 顺带删掉testt.py
print(testt.abc)
内存 --> 自定义
内置 --> 自定义
import time
import requests
print(requests.get('http://www.baidu.com'))
time.sleep(15)
print(requests)
内存 --> 内置 --> 自定义
import this # python之禅
环境变量
import os # python之禅
import sys
print(sys.path)
sys.path.remove('D:\python36\lib')
import requests
print(requests)
'''
import
from ... import
'''
python文件的两种用途
执行文件: 当前运行的文件
模块文件
一个文件既可以是执行文件,也可以是模块文件
from testt import shopping
name == 'main'不成立, name != 'main'
当testt为模块文件时,__name__等于文件名
__name__是每个文件独有的,当该文件作为执行文件运行时,__name__等于'main';当该文件作为模块文件导入时,__name__等于文件名
pip install pyinstaller
使用这个模块压根不需要导入
http://www.bitbug.net/?tdsourcetag=s_pcqq_aiomsg
pyinstaller –i rose.ico(图片文件,百度转一个) –F rose.py(python文件)
pyinstaller –i rose.ico –F rose.py
把.py文件转成.exe
循环导入的解决方法
第一种解决方法:
'''
from m2 import y
print('m1:', x, y)
# 模块永远只会开辟一次
'''
# # 第二种: 定义函数阶段只检测语法,不执行代码
#
#
# def f1():
# from m2 import y
#
# print('m1:', x, y)
#
#
# x = 10[
# f1()
# 补充
x = 10
from m2 import y
print('m1:', x, y)
'''
m1: 10 20
m2: 10 20
m1: 10 20
模块永远只会开辟一次 ; from m1 import 必须得执行m1.py中所有代码
1. 在m1中运行m2模块
2. 在m2中运行m1模块
print(m1....)
print(m2....)
print(m1...)
'''