python包和模块下载_Python中的模块和包

1.Python中的模块和包

模块:Module,把所有的代码划分到不同的文件中,每个文件称为一个“模块”——便于分工协作;同时模块内数据只能在当前模块中使用,从而防止全局污染

CommonJS/Node.js中模块:

导出:module.exports = ...

导入:const  x = require('./x')

ES6中的模块:

导出:export class Emp{ }

导入:import {Emp} from'./x'

导出:export defaultclass Emp{ }

导入:import Emp from './x'

Python中的模块:

导出:不需要,默认情况下所有成员都可以被其它模块导入

导入形式1:import  m1    #m1就代表./m1.py文件模块

导入形式2:from  m1  import  age   #age就是m1模块中的内部全局变量

注意:

①第一次导入某个模块会自动在内存中创建该模块对应的对象,会在内存中留下这份拷贝,后续如果还有针对同一个模块文件的导入,则不再执行该文件,直接从内存中取出之前的缓存对象——即每个模块对象都是“单例的(Singleton)”

②模块不需要导出内部成员——内部的全局变量就是模块的成员属性,全局函数就是模块的成员方法

③Python内部约定:启动模块的名称(__name__)为'__main__';非启动模块的名称就是文件名称(去掉.py)。利用此特性,可以执行特定的单元测试代码:

if(__name__ == '__main__'):

#此处放置单元测试代码

④如果项目中的模块太多了,可以把多个模块文件放置在同一个目录下,这样的目录称为“package——包”;例如:“用户包”、“商品包”、“购物车包”...

假设有: user/login.py,则启动文件可以如下导入

导入包下的模块:import  user.login  as  ul

导入包下的模块中的成员:  from  user.login  import  uname

⑤如果想在包中执行一些初始化代码,可以放在 __init__.py 的文件中——只要该包中任何模块被导入,都会执行且仅执行一次该初始化文件

CommonJS中有package的概念 —— 用于盛放多个模块文件

Python中也有package的概念;

ES6中没有package概念!!

2.Python官方提供的函数和对象

提示:官方提供的函数和对象都放置在特定的包或模块中;

①datetime模块

该模块提供了三个class:date/time/datetime

from  datatime  import  date, time, datetime

获取当前系统日期时间:

dt = datetime.now()

把日期时间格式化为特殊的字符串:

s1 = dt.strftime( '%Y-%m-%d %H:%M:%S' )

------------------------------------------------

y = dt.year

m = dt.month

d = dt.day   #不是date

h = dt.hour

mi = dt.minute

s = dt.second

把日期时间转换为长整数(0表示1970-1-10:0:0)——称为时间戳:

num = dt.timestamp( )

把长整数转换为日期时间对象:

dt = datetime.fromtimestamp( num )

②math模块

import  math

获取PI的值:

math.pi

上下取整:

math.ceil( ) / math.floor( )

三角函数:

math.sin( deg )

注意:JS中还有Math.max()/min()/round()/abs()几个函数Python中是全局函数;JS中的Math.random()函数Python是一个独立的模块

③random模块

import  random

生成0~1间的随机小数:

n = random.random( )

生成min~max间的随机整数:

n = random.randrange(min, max, step)

从字符串数组中随机取出一个元素:

e = random.choice( myList )

随机打乱一个数组:

random.shuffle( myList )  #直接修改原始列表

④os.path模块

提示:Python中没有类似Node.js中的__dirname

获取当前路径对应的绝对路径名:

import  os.path

p = os.path.abspath( './' )

⑤json模块

import  json

把dict对象转换为JSON格式的字符串——称为“序列化”:

//JS:str = JSON.stringify( obj )

str = json.dumps( obj )

把JSON格式的字符串解析为dict对象——称为“反序列化”:

//JS:  obj = JSON.parse( str )

obj = json.loads( str )

⑥http.client模块

模拟浏览器向指定的URL发起HTTP请求(GET/POST/...)

作用:爬虫程序、服务器端代理

import  http.client

conn = http.client.HTTPConnection('www.codeboy.com')  #创建连接

conn.request('GET', '/index.html')  #发起请求

res = conn.getresponse( )  #得到响应消息

body = res.read( )  #读取响应主体

面试题:跨域的解决方案?各自的利弊?

①JSONP: 只能发起GET请求,且服务器端修改代码

②CORS: 修改服务器端代码,生成特别响应消息头部

③服务器端请求代理方案:让前端服务器代替客户端浏览器向后端服务器发请求

⑦http.server模块

创建HTTP服务器的方法:

1)Node.js原生方案http              2)Node.js第三方框架:Express

3)Python原生方案http.server        4)Python第三方框架:Django

3.Pip工具的使用——Python第三方包/模块下载工具

Node.js官方提供了很多模块,业界还有更多的第三方模块,默认托管在npmjs.com上,可以使用NPM(Node Package Manager)工具下载和维护第三方模块;

类似的,Python官方提供了很多模块,业界还有更多的第三方模块,默认托管在pypi.org上,可以使用PIP(Package Installer for Python)工具下载和维护第三方模块。

PIP常用的命令:

pip  list     #列出已经安装的所有模块

pip  show  模块名 #显示指定模块的详情

pip  install  模块名     #下载并安装指定模块

pip  install  --upgrade  模块名 #升级指定的模块

pip  uninstall  模块名     #卸载指定模块

提示:PIP默认安装的模块全部安装在 c:\users\web\appdata\local\programs\python\python38-32\lib\site-packages

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值