Python 模块

模块

要使整个人生都过得舒适、愉快,这是不可能的,因为人类必须具备一种能应付逆境的态度。——卢梭

代码复用性

  • 模块允许你合理组织代码来实现最优共享

  • 发布工具允许你向全世界共享你的模块

模块(外置模块)

Python 大部分的模块(类库) 都放到了 pypi 上面 需要什么直接搜索.网址https://pypi.org/

函数转换为模块

  • 模块解释一个包含 Python 代码的文本文件,对模块的主要需求就是文件名必须以.py 结尾,他要你把函数转换一个模块,需要把代码保存到一个适当命名的文件中

  • 拿上单元的递归函数举例子,我们可以把这个函数单独放到一个 py 文件里,取名 util.py


'''
 作者:雾烟云
 时间:2020年
 功能:打印出数组里面每一个数组,要是没有就打印出第一个值
'''

def printresult(arr2):
    count = 0
    for index, item in enumerate(arr2, 0):
        if type(item) is list:
            print(item)
            printresult(item)
        else:
            count += 1
            if count == len(arr2):
                print(arr2[0])
                print("一切都结束了")

注释

  • 单行注释

# 这就是单行注释
  • 多行注释就是 ‘’’
'''
这就是多行注释
'''

发布

建立模块

  • 为这个模块创建一个文件夹,起名字 nester 文件夹(名字可以随便设置),然后把模块文件(刚才写好的)放到文件夹下

def printresult(arr2):
    count = 0
    for index, item in enumerate(arr2, 0):
        if type(item) is list:
            print(item)
            printresult(item)
        else:
            count += 1
            if count == len(arr2):
                print(arr2[0])
                print("一切都结束了")
  • 在新文件夹中创建一个 setup.py 的文件,增加如下代码

from distutils.core import setup

setup(

    name='CheckOutArr',  # 名称
    version='1.0.0',  # 版本号
    py_modules=['nester'],  # 那个模块python文件的名称
    author='YJ',  # 作者姓名
    author_email='2993222085@qq.com',  # 作者邮箱
    url='https://jsopy.gitee.io/',  # 作者网址
    description='这就是利用递归找出元素'  # 描述

)
  • 然后在这个文件夹下 打开终端端口,键入一个命令

python setup.py sdist

这样 执行完毕以后 他会在文件夹下面看到 dist 文件夹,setup.py,模块文件.py,还有一个 manifest

安装类库

  • 我们进入这个文件夹 执行 python setup.py install 命令安装

python setup.py install

这样在本地安装好了。

总结

安装前

nester 文件夹下面只有两个文件,一个是 nester.py 另外那个是 setup.py

安装后

nester 文件夹下面有两个文件夹

  • build 下面有个文件夹 lib 里面就是模块文件的源代码

  • dist 里面有文件 就是发布包

  • 模块文件源代码

  • xxx.pyc(可能有)编译版本的代码

  • setup.py (配置文件)

  • MANIFST 发布的文件列表

导入模块并使用

  • 导入模块使用,利用 import 语句

import 包名称(要是包的名称和模块起始文件不对应,那就写模块起始文件文件名)

或者直接写引入方法可以


from 包名称 import 包的方法名
  • 使用

# 调用模块封装好的方法

import index2

# 也可以 from index2 import printresult

# 调用的时候就是 printresult(arr2)

arr2 = ['这个杀手不太冷', 1978, '唐人街探案', 1983, [
    '囧妈', ['杀死比尔', '蓝色生死恋', ["终结者", '复仇者联盟']]]]

index2.printresult(arr2)

# 结果

'''

['囧妈', ['杀死比尔', '蓝色生死恋', ['终结者', '复仇者联盟']]]
['杀死比尔', '蓝色生死恋', ['终结者', '复仇者联盟']]
['终结者', '复仇者联盟']
终结者
一切都结束了

'''

发布到 PYPI 网站

  • 去 pypi 上面注册账号

  • 上传代码

  1. 还是在刚才那个包文件目录下 打开终端输入命令:

python setup.py register
  1. 依据提示输入

1
Username: xxxx
Password: xxxxxxx
  1. 上传

setup.py  sdist upload

不同路径怎么引入模块

  • 模块引入不是同级别的目录

比如要引入的文件位置在 son 文件夹那必须要在 son 文件夹下面新建一个文件,

  • 名字叫 __init__.py,空文件即可

  • 主模块就是 PyBasic2 里面有个方法叫 daoru


import son.PyBasic2
son.PyBasic2.daoru(["第一个", "第二个", "第三个"])

# 结果
# 第一个
# 第二个
# 第三个

Python 提供的内置模块

Python 提供了很多内置模块比如 os sys random ,math 等等

  • 这里拿 random 举例子

import random

random.randint(1,10) # 产生一个1到10的整数型随机数
random.random() # 产生一个0到1之间的随机数
random.uniform(1.1,5.4) # 产生一个1.1到5,4之间的随机浮点数
random.choice('tommrow') # 从序列中随机选取一个元素
random.randrange(1,10,2) # 产生一个1到10 间隔为2的随机整数

import random

items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]

random.shuffle(items) # 将items的顺序随机顺序打乱

print(items)

文章作者: 雾烟云
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 雾烟云 !
  目录