【白话python连载(7.2)】python的模块介绍

16 篇文章 0 订阅
16 篇文章 0 订阅

欢迎大家关注公众号 【哈希大数据】
python的模块介绍----动手打包共享
一、模块的定义与生成

python模块是一个包含定义的变量、函数和类的文件,其后缀名是.py。

特点:模块可以被其他程序导入,以使用该模块中定义的类,函数是模块中对应类的方法,而变量则是类的属性。

为了防止不同模块中变量名的重复和冲突,python中通常采用“包”形式即文件目录结构来管理不同的模块。只要顶层的目录文件名不同,就可以防止模块或模块中变量或函数名定义相同而冲突的问题。两个module1在使用中依次为:module_manage,module2.module1;module_manage.module1

image

如module_manage这个python包,与常规的文件夹所不同的是,需要额外添加一个init.py的模块(文件中可以不添加任何内容)来表明这个文件是python的包。如果使用pycharm编辑器,在新建包时将会自动完成init.py的模块的添加。而且在一个python包中,也可以嵌套其他的python包,方便模块功能的实现与复用。

二、模块的安装和应用

对于python自带的模块可以直接导入使用,而对于第三方模块的使用,需要在python环境中提前安装好要使用的模块。常规的安装方法直接使用python的pip模块(在初始化安装python编辑器的过程中,勾选后已经自动安装),安装方式:pip install module_name。卸载方式:pip uninstall module_name。

如pillow这个模块,是之前已经成功安装过的,所以再次安装时则会提示对应的模块已经存在。因为电脑中有两个版本的python,因此为了对应管理不同版本中的模块可以重命名pip,进行不同版本中的模块安装。

image

因此这里先将其卸载再尝试安装一下。卸载方式:

image

使用‘模块名’==‘版本号’的方式在安装过程中指定模块的版本号。

image

安装好的模块,使用 import module/from module import name1,name2 可以导入完整模块或者是模块的部分属性,同时为了更方便的使用模块也可以在导入模块中另外给模块进行命名,如在python对数据的处理中经常使用的两个模块import numpy as np和import pandas as pd。在python中重复导入同一个模块,将只会以最后一次导入为主,这样可以减少查找重复模块的次数。

image

import的工作机制

使用import是在环境变量中依次查找是否有对应的python模块,使用自带的sys.path功能可以查看模块所存在的位置。

image

使用import将会在这些地方查找需要的模块,如果没有找到则会报错。找到的话则会将其编译成字节码也就是.pyc文件。然后会执行模块中的代码,并创建其中所需要的对象。

image

三、模块的打包和发布

如果要将完成的模块进行打包和发布的话,需要进行前期准备工作:以一个dist_module.py模块为例--该模块实现的功能是输出当前时间和指定天数前后的时间,具体代码为:

#!/usr/bin/python# 
-*- coding: utf-8 -*-
from datetime import *
def time_manage(n): 
today = datetime.now() 
print("当前日期是:" ,today) 
n = int(n) 
memory = today + timedelta(days=n) 
print(n,"天后的日期是:" , memory)
if __name__ == '__main__':
 n = input("请输入你要查询的天数:")
 time_manage(n)

在完成模块下添加一个平行的setup.py的模块的,使用distutils来发布模块,在setup.py文件中,添加如下内容:

from distutils.core import setup
setup( name='dist_module', version='1.0.0',
 py_modules = ['dist_module'], author='ziyi', author_email='635516607@qq.com', url='1', 
description='计算n天左右的时间',)

然后将对应完成的dist_module.py和setup.py模块放入同一个文件中,该文件夹命名与dist_module.py模块的名称一致,即dist_module。目录结构如下:

image

前期准备工作完成后,就可以进行模块的打包和发布了:

在dist_module.py文件下打开命令窗口:否则的话给定setup.py文件的具体位置。然后执行python setup.py sdist。完成模块的打包工作,为对应的模块创建一个源码包。

image

模块打包结束后对应的文件目录变为如下:

image

然后再将该模块添加到本地的python包管理空间中,使用python setup.py install。

image

之后即可在其他文件中导入该模块进行复用。

#!/usr/bin/python
# -*- coding: utf-8 -*-
import dist_module
print(dist_module.time_manage(6))

输出结果D:/vernacular/module_mana/module_manage/module1.py当前日期是: 2018-02-08 17:17:58.2744286 天后的日期是: 2018-02-14 17:17:58.274428Process finished with exit code 0

此外在windows系统下,在命令窗口中执行python setup.py bdist_wininst 生成.exe的可执行文件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器学习中最常用的数学工具是线性代数、微积分和概率论。下面是一些基本的数学概念和 Python 代码示例: 1. 向量和矩阵 向量是一列数字,矩阵是一个二维数组。在 Python 中,可以使用 NumPy 库来创建和操作向量和矩阵。 ```python import numpy as np # 创建向量 v = np.array([1, 2, 3]) # 创建矩阵 m = np.array([[1, 2], [3, 4], [5, 6]]) # 矩阵乘法 result = np.dot(m, v) print(result) ``` 2. 梯度下降 梯度下降是一种优化算法,用于最小化损失函数。在 Python 中,可以使用 NumPy 和 SciPy 库来实现梯度下降算法。 ```python import numpy as np from scipy.optimize import minimize # 定义损失函数 def loss_function(w, X, y): y_hat = np.dot(X, w) return np.mean((y_hat - y) ** 2) # 定义梯度函数 def gradient(w, X, y): y_hat = np.dot(X, w) return np.dot(X.T, y_hat - y) / len(y) # 使用梯度下降算法求解 X = np.array([[1, 2], [3, 4], [5, 6]]) y = np.array([1, 2, 3]) w0 = np.zeros(X.shape[1]) res = minimize(loss_function, w0, args=(X, y), jac=gradient) print(res.x) ``` 3. 偏导数和梯度 偏导数是多元函数中某个变量的导数,梯度是多元函数的导数向量。在 Python 中,可以使用 SymPy 库来计算偏导数和梯度。 ```python from sympy import symbols, diff # 定义符号变量和函数 x, y = symbols('x y') f = x ** 2 + y ** 3 # 计算偏导数 df_dx = diff(f, x) df_dy = diff(f, y) print(df_dx, df_dy) # 计算梯度 grad = [diff(f, var) for var in [x, y]] print(grad) ``` 4. 概率分布和随机变量 概率分布是随机变量可能取值的概率分布。在 Python 中,可以使用 SciPy 库来计算概率分布和随机变量。 ```python from scipy.stats import norm # 定义正态分布 mu, sigma = 0, 1 dist = norm(mu, sigma) # 计算概率密度函数和累积分布函数 x = np.linspace(-3, 3, 1000) pdf = dist.pdf(x) cdf = dist.cdf(x) # 生成随机变量 samples = dist.rvs(1000) ``` 以上是一些基本的数学概念和 Python 代码示例。在机器学习中,还会涉及到更高级的数学工具,如矩阵分解、优化理论、贝叶斯统计等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值