Python之模块初识-自定义模块

1. 模块的定义与分类

什么是模块?一个模块就是一个py文件。

模拟博客园系统作业,100000行代码. 不可能全部存在一个文件.

  1. 不易维护.
  2. 效率低.

分文件: 10个文件.每个文件有50个函数,有一写相同功能或者相似功能的函数.代码冗余,重复性.我们应该将这10个函数提取出来,放在一个文件中,随用随拿.

  1. 节省代码.
  2. 容易维护,组织结构更清晰.

一个模块就是一个py文件,这个模块存储很多相似的功能,相似的函数的集合体.

模块的分类:

  • 内置模块,标准库.python解释器自带的,time,os,sys,等等.200多种.
  • 第三方库(模块),各种大神写的一些模块,通过pip install....安装.6000种.
  • 自己写的模块.自定义模块.
  1. import

    # import tbjx
    # # 当我引用tbjx模块的时候,实际上将tbjx.py执行一遍,加载到内存.
    # import tbjx
    # import tbjx
    # import tbjx
    # import tbjx
    # import tbjx# 只是第一次引用时,将此模块加载到内存.
    1. 执行文件:02 模块import
    2. 被引用文件(模块): tbjx.py
  2. 第一次导入模块发生的三件事

    import tbjx
    n = 1
    # 引用模块发生三件事.
    '''1. 将tbjx.py文件加载到内存.2. 在内存中创建一个以tbjx命名的名称空间.3. 通过tbjx名称空间的名字.等方式引用此模块的名字(变量,函数名,类名等等).
    '''# print(tbjx.name)
    # tbjx.read1()
    # tbjx.read2()
  3. 被导入模块有独立的名称空间

    # 坑:通过tbjx.的方式引用此模块的名字时,一定一定是从此模块中寻找.
    # 通过import 引用模块 他有自己的独立名称空间,与当前执行文件没有关系.
    name = '李业'
    print(tbjx.name)def read1():print('in 02 模块import')tbjx.read1()
    
  4. 为模块起别名

    将一个比较长的模块名简化成简单的

    import contextlib as cb

    作用

    1 书写方便.
    import tbjx as tb
    print(tb.name)
    tb.read1()
    2 简化代码.content = input('>>>').strip()if content == 'mysql':import mysql_mysql_.sqlprase()
    elif content == 'oracle':import oracle_oracle_.sqlprase()content = input('>>>').strip()
    if content == 'mysql':import mysql_ as db
    elif content == 'oracle':import oracle_ as db
    db.sqlprase()  # 统一化接口
  5. 导入多个模块

    引入多个模块
    import time,os,sys  # 不推荐.import time
    import os
    import sys# 易于阅读 易于编辑 易于搜索 易于维护。
  6. from... import...

    # from tbjx import name
    # from tbjx import read1
    # print(globals())
    # 相当于从tbjx模块的全局空间中将name,read1变量与值的对应关系
    # 复制到当前执行文件的全局名称空间中.
    # print(name)
    # read1()# 优点:使用起来方便了.
    # 缺点:容易与当前执行文件产生覆盖效果.# 示例1:
    # from tbjx import name
    # from tbjx import read1
    # name = '李业'
    # print(name)# 示例2:
    # name = '怼怼哥'
    # from tbjx import name
    # from tbjx import read1
    # def read1():
    #     print('在执行文件中')
    # # print(name)
    # read1()# 特殊情况:极值情况,工作中不会出现.(了解)
    # 因为如果你要是引用一些模块的变量,那么执行文件中就不应该出现同名变量.
    # 示例3:
    # from tbjx import name
    # from tbjx import change
    #
    # change()
    # print(name)# 示例4:
    # from tbjx import change
    #
    # change()
    # from tbjx import name
    # print(name)# 也可以起别名
    # from tbjx import name as n
    #
    # print(n)# 导入多个名字
    # from tbjx import name
    # from tbjx import read1# from ... import *  尽量别单独用
    # from tbjx import *
    # print(name)
    # read1()
    # read2()
    # 1,全部将tbjx的所有名字复制过来,无用功.
    # 2,容易覆盖.# from ... import * 与__all__配合使用(写在模块文件中)# from tbjx import *
    #
    # # read1()
    # # read2()
    # change()
  7. py文件的两种功能

    1. py文件的第一个功能:执行文件(承载代码) 脚本.

      直接打印__name__返回__main__

    2. py文件的第二个功能: 模块(被执行文件).

      直接打印__name__返回tbjx 模块名

    作用:用来控制.py文件在不同的应用场景下执行不同的逻辑(或者是在模块文件中测试代码)

  8. 模块的搜索路径

    # 寻找模块的路径: 内存 ----> 内置模块  ---> sys.path中找
    # 只要这三个地方:内存 内置模块 sys.path可以找到这个引用的模块的路径,这个模块就可以直接引用到.
    # import sys
    # # print(sys.path)
    # # import tbjx
    # print(sys.modules)# 如何引用到tbjx1.py
    import sys
    # print(sys.path)
    sys.path.append(r'D:\s23\day15')
    # import tbjx
    import tbjx1
    tbjx1.read1()

转载于:https://www.cnblogs.com/Jacob-yang/p/11107667.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php统计用户留存脚本,SQL 统计用户留存

问题描述有一个用来记录每日客户消耗数据的表 t,它的表结构如下:字段类型描述created_dayDate消耗日期customer_idInteger客户IDamountInteger消耗金额要求:统计出头部客户、腰部客户、尾部客户在上个月(2020-06-01 ~ 2020-06-30)的留存情况。…

python socket udp_python网络-Socket之udp编程(24)

一、udp简介udp --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。udp不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。udp在传输数据报前不用在客户和服务器之间建立一个连接&…

selenium--单选下拉列表

下拉选择 from selenium import webdriver from time import sleepdriver webdriver.Chrome() driver.get("https://www.xxxxx.com/") sleep(2) driver.find_elements_by_tag_name(option)[2].click() # 通过标签名定位到 option 标签,选择第三个&#x…

matlab实现字符识别,字符识别 - MATLAB Simulink Example - MathWorks 中国

定义问题脚本 prprob 定义了一个包含 26 列的矩阵 X,每列对应一个字母。每列有 35 个值,值可能是 1,也可能是 0。每列(包含 35 个值)定义一个字母的 57 位图。矩阵 T 是一个 2626 的单位矩阵,它将 26 个输入向量映射到 26 个类。[…

python建立ip代理池_Python搭建代理IP池实现存储IP的方法

上一文写了如何从代理服务网站提取 IP,本文就讲解如何存储 IP,毕竟代理池还是要有一定量的 IP 数量才行。存储的方式有很多,直接一点的可以放在一个文本文件中,但操作起来不太灵活,而我选择的是 MySQL 数据库&#xff…

低秩矩阵分解 matlab,低秩分解的matlab代码看不懂,分解的两个矩阵在哪呀??...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼有四个文件:demo.mfunction [] demo()%This routine demonstrates an example of using LRR to do subspace segmentation. We cosntruct 5 independent subspaces, each of which has a rank of 10,%sample 200 point…

python深度神经网络算法_02.深度神经网络算法之Python基础与数据分析

资源内容:02.深度神经网络算法之Python基础与数据分析|____2016最新python基础篇视频教程22课|____Python学习手册(第4版).pdf|____Python程序入门与进阶|____基础篇01-福利课python先入为主上篇|____基础篇02-福利课python先入为主下篇|____基础篇03-虚拟机安装xub…

我们为什么要用MVC?ASP.NET MVC模式的优点?

1.关注点分离:每个功能最少会被切分为M-V-C三个部分,让开发者一次只需要关注一个部分,进而降低复杂难度,提高开发效率2.分层负责:明确切割,M-V-C三个部分并行开发3.自由操控HTML:在ASP.Net MVC中…

python 英语词频统计软件_Python实现统计英文文章词频的方法分析

本文实例讲述了Python实现统计英文文章词频的方法。分享给大家供大家参考,具体如下:应用介绍:统计英文文章词频是很常见的需求,本文利用python实现。思路分析:1、把英文文章的每个单词放到列表里,并统计列表…

mysql磁盘无法挂载,linux – 无法挂载磁盘(VFS:找不到ext4文件系统)

试图挂载磁盘(硬件raid)但失败了.#mount -t ext4 /dev/sda /datamount: wrong fs type,bad option,bad superblock on /dev/sda,missing codepage or helper program,or other errorIn some cases useful info is found in syslog - trydmesg | tail or so#dmesg | tail -1EXT4…

程序中的内存分配

栈由操作系统自动分配释放 ,用于存放函数的参数值、局部变量等,其操作方式类似于数据结构中的栈 1. 函数中定义的局部变量按照先后定义的顺序依次压入栈中,也就是说相邻变量的地址之间不会存在其它变量。 2. 栈的内存地址生长方向与堆相反,由…

python传中文参数_解决Python传递中文参数的问题

今天有个需要需要传递中文参数给URL但是在GBK环境下的脚本传递GBK的参数老是给我报UNICODE的解码错误。烦的很。所以我们果断选择用urlencode来处理中文,由于国内外网站编码不同,国内是GBK的,国外是UTF8的。>>> import sys>>&…

数据结构php语言,PHP语言做网页开发,会用到什么数据结构,算法?

回复讨论(解决方案)这个要根据项目而定的,PHP做开发,首先得会html javascript不是 会用到什么数据结构,算法而是你将 什么数据结构,算法 用到网页开发中去这个要根据项目而定的,PHP做开发,首先得会html jav…

pythonpptx 楷体_python-pptx 实践 4:添加形状、文本

1、添加流程箭头#加载库importosfrom pptx importPresentationfrom pptx.util importInches, Ptfrom pptx.enum.text importPP_ALIGNfrom pptx.enum.shapes importMSO_SHAPEfrom pptx.dml.color importRGBColor#设置路径work_path rE:\pyspace\tmp\pptxos.chdir(work_path)#实…

C# DevExpress XtraMessageBox自定义字体,字体大小,自定义按钮大小,自定义Icon

1.使用XtraMessageBoxForm,自定义Icon 2.重写XtraMessageBoxForm,自定义消息字体,标题字体 3.注册XtraMessageBoxForm的Showing事件,自定义按钮字体及按钮大小 具体代码如下,只写了简单两种方法,可自己扩展…

php维护页面,php – Symfony2中的“维护网站”页面

我跟着这个tutorial.这非常简单直接.这是我所需要的.您只需更改参数然后清除prod缓存,您仍然可以在dev或测试环境中访问该应用程序.在你的parameters.yml中添加:parameters:maintenance: false #turn it to true to enable maintenanceunderMaintenanceUntil: tomor…

批处理结束某个进程_进程调度

当计算机系统是多道程序设计系统时,常常会出现多个进程或线程竞争CPU的情况。如果有大于处理器数的进程(线程)处于就绪态时,就必须要选择下一个要执行的进程(线程)。在操作系统,用于选择接下来要执行的进程的程序称之为调度程序(Scheduler)&a…

[RN] 可播放视频的播放器版本

可播放视频的播放器版本 "react": "16.6.3", "react-native": "0.57.8", "react-native-orientation": "^3.1.0", "react-native-vector-icons": "^4.3.0", "react-native-video":…

有限元python编程流行吗_Python进行有限元分析

本博客主要是来讲述采用Python语言,利用直接刚度法,来编写求解《有限元方法基础教程》(第五版) 的例题2.1。(也许有的人认为商业软件已经和普及了,没有 必要再自己进行编程了,但是龙猪在这里建议大家还是去了解一下有限元的原理&a…

java用中根后根序列构造二叉树,106. 从中序与后序遍历序列构造二叉树

题目描述根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。示例:例如,给出中序遍历 inorder [9,3,15,20,7]后序遍历 postorder [9,15,7,20,3]返回如下的二叉树:3/ \9 20/ \15 7思路1.思路与105. 从前序与中序…