Python
嵌套的包
Phone 是最顶层的包,Voicedta 等是它的子包。
第一种
import Phone.Mobile.Analog
Phone.Mobile.Analog.dial()
from 顶层包.子包.模块名
顶层包.子包.模块名.函数( )
第二种
from Phone import Mobile
Mobile.Analog.dial('555-1212')
from 顶层包 import 子包
子包.模块名.函数名( )
第三种
from Phone.Mobile import Analog
Analog.dial('555-1212')
from 顶层包.子包 import 模块名
模块名.函数名( )
第四种
from Phone.Mobile.Analog import dial
dial('555-1212')
from 顶层包.子包.模块名 import 函数名
函数名( )
尽量在import后写模块名或者函数
导入中出现的问题
1.动态插入搜索路径:
sys.path.insert(下标,路径)
2.动态载入
模块更新了,想使用最新
from imp import *
reload(要更新模块名)
3.循环导入:
A模块中导入了B模块中的具体的函数
B模块中也导入了A模块中的具体的函数
from a import func1
报错: ImportError ----->原因: 主要就是在模块导入的时候有循环导入的问题所以报错
from a import *
报错: NameError ------>原因: 导入的时候需要指定的函数,但是导入不成功,需要的函数
就不会加载到内存,内存中如果没有所以报错
打包
1. 创建setup.py文件
2. 构建内容: python3 setup.py build
3. 打包: python3 setup.py sdist
产生文件: setup(name="xxxx",version="1.1")--> xxxx-1.1.tar.gz
4. 安装:
解压缩: tar -zxvf xxxx-1.1.tar.gz
进入压缩后文件夹: sudo python3 setup.py install
把msg下的所有内容放到默认的路径: /usr/loacl/lib/python3.5/dist-packages
from distutils.core import setup
setup(name="atguigu_msg", version="1.0", description="atguigu system", author="atguigu", py_modules=['msg.sendmsg', 'msg.recvmsg', 'msg.money.msgmoney'])
列表推导式
格式
[变量 for 变量 in 范围]
if格式
[变量 for 变量 in 范围 if 条件]
生成器
在Python中,这种一边循环一边计算的机制,称为生成器:generator
1.next(生成器对象)
每调用一下产生一个元素
如果调用到头,报错 stopIterator
2. 使用函数形式完成
如果函数中yield关键字,则函数就是一个生成器
步骤
1. def 函数([参数]):
使用yield
2. 调用函数
f=函数名([参数])
此时的f就是一个生成器对象
3.使用next(f) --->产生对应元素
3. 生成器的常用函数:
f.send([参数]|None) ----> temp =yield b temp就是用来接收参数的值的
f.__next__() ---->类似next(f) 到头也会报错的
重点
模块的概念
模块的导入: 3种
import [包名.]模块名
from [包名.]模块名 import 模块|函数|类|全局变量
from [包名.]模块名 import * ---->__all__
包的概念
文件夹+ __init__.py
了解
sys.path
搜索路径
sys.modules
系统模块
sys.argv
命令行参数
标准库
os sys builtins shutils hashlib random time re
扩展库
是需要下载
打包 解压 安装
嵌套的包
Phone 是最顶层的包,Voicedta 等是它的子包。
第一种
import Phone.Mobile.Analog
Phone.Mobile.Analog.dial()
from 顶层包.子包.模块名
顶层包.子包.模块名.函数( )
第二种
from Phone import Mobile
Mobile.Analog.dial('555-1212')
from 顶层包 import 子包
子包.模块名.函数名( )
第三种
from Phone.Mobile import Analog
Analog.dial('555-1212')
from 顶层包.子包 import 模块名
模块名.函数名( )
第四种
from Phone.Mobile.Analog import dial
dial('555-1212')
from 顶层包.子包.模块名 import 函数名
函数名( )
尽量在import后写模块名或者函数
导入中出现的问题
1.动态插入搜索路径:
sys.path.insert(下标,路径)
2.动态载入
模块更新了,想使用最新
from imp import *
reload(要更新模块名)
3.循环导入:
A模块中导入了B模块中的具体的函数
B模块中也导入了A模块中的具体的函数
from a import func1
报错: ImportError ----->原因: 主要就是在模块导入的时候有循环导入的问题所以报错
from a import *
报错: NameError ------>原因: 导入的时候需要指定的函数,但是导入不成功,需要的函数
就不会加载到内存,内存中如果没有所以报错
打包
1. 创建setup.py文件
2. 构建内容: python3 setup.py build
3. 打包: python3 setup.py sdist
产生文件: setup(name="xxxx",version="1.1")--> xxxx-1.1.tar.gz
4. 安装:
解压缩: tar -zxvf xxxx-1.1.tar.gz
进入压缩后文件夹: sudo python3 setup.py install
把msg下的所有内容放到默认的路径: /usr/loacl/lib/python3.5/dist-packages
from distutils.core import setup
setup(name="atguigu_msg", version="1.0", description="atguigu system", author="atguigu", py_modules=['msg.sendmsg', 'msg.recvmsg', 'msg.money.msgmoney'])
列表推导式
格式
[变量 for 变量 in 范围]
if格式
[变量 for 变量 in 范围 if 条件]
生成器
在Python中,这种一边循环一边计算的机制,称为生成器:generator
1.next(生成器对象)
每调用一下产生一个元素
如果调用到头,报错 stopIterator
2. 使用函数形式完成
如果函数中yield关键字,则函数就是一个生成器
步骤
1. def 函数([参数]):
使用yield
2. 调用函数
f=函数名([参数])
此时的f就是一个生成器对象
3.使用next(f) --->产生对应元素
3. 生成器的常用函数:
f.send([参数]|None) ----> temp =yield b temp就是用来接收参数的值的
f.__next__() ---->类似next(f) 到头也会报错的
重点
模块的概念
模块的导入: 3种
import [包名.]模块名
from [包名.]模块名 import 模块|函数|类|全局变量
from [包名.]模块名 import * ---->__all__
包的概念
文件夹+ __init__.py
了解
sys.path
搜索路径
sys.modules
系统模块
sys.argv
命令行参数
标准库
os sys builtins shutils hashlib random time re
扩展库
是需要下载
打包 解压 安装