day15总结

模块的四种定义

模块基础 --> 怎么导入模块

python常用模块 --> numpy / pandas / matplotlib --> 数据分析必精通 --> <利用python进行数据分析>

模块

import time

python你看成手机--> pip 看成应用管家 --> 模块就是应用软件

  1. 系统自带应用软件 --> 不需要安装

  2. 需要下载的软件

  3. 自定义的软件

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

  5. pip安装的模块: pip install jieba / pycharm安装

  6. 自定义模块 --> 自定义代码

  7. 包(模块) -> 未来详细讲

什么是模块?

模块 -> 实现功能 --> 代码 --> 更方便

import 和 from import

import time

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

time.sleep(0.01)

from 模块名 import 方法名
from time import sleep

  1. 开辟内存空间,内存空间命名为time
  2. 把time.py中的所有代码读入名称空间,然后运行
  3. 把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)

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

模块的搜索路径

从当前 局部 -> 全局 -> 内置

  1. 内存
  2. 内置
  3. 自定义

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...)
'''
posted @ 2019-09-26 16:25  lucky_陈  阅读(100)  评论(0编辑  收藏  举报