python学习之模块-自定义模块(一)

第五章

5.1 自定义模块

模块概念:

? 把一些常用的函数放在一个py文件中,这个文件就称之为模块。

模块的意义:

? 1.方便管理。让程序的解构更加清晰,实现功能的重复使用;

? 2.提升开发效率。俗话说的拿来主义,避免重复造轮子,使用别人写好的实现了某些功能的模块,可以大大提高开发效率。

模块的分类:

? 第一类:内置模块,也叫做标准库。python自带,200多个,每个模块又包含很多的功能,比如os,sys,time;

? 第二类:第三方模块,第三方库。需通过pip install指令安装的模块,比如Django,BeautfulSoup等,大约6000多种;

? 第三类:自定义模块。我们自己在项目中定义的模块。

5.1.1 import

1.使用

语法:import 模块名

? 模块可以包含可执行语句和函数的定义,这些语句的目的是初始化模块,他们只在模块名第一次遇到import导入语句时才执行。import的优化手段是可以在程序的任何位置使用,并且在第一次加载完成时执行模块里的执行语句,后边再调用时就不会重复执行模块里的语句。

2.第一次导入模块执行的三件事
  • 在内存中创建一个以模块名命名的名称空间
  • 执行这个名称空间里的代码
  • 通过 模块名. 的方式引用该模块里面的内容

ps:重复导入会直接引用内u你中已经加载好的结果

3.被导入模块有独立的名称空间

? 每个模块都是一个独立的名称空间,定义在这个模块中的函数,把在这个模块的名称当作全局名称空间,这样在编写自定义的模块时,就不用担心自定义模块中的全局变量被导入后与使用者的全局变量冲突。

举例(小坑):

#自定义模块aries.py,当作脚本运行时,会看到的调用change函数后name已经被改变了
name = 'aries'

def change():
    global name
    name = 'allen'

change()
print(name)  #输出 allen
#把aries.py当作模块在新的py文件中加载时
import aries     #加载aries模块
name = 'Jack'    #在本py文件下,创建全局变量name与aries模块里的name同名
aries.change()   #调用aries下的change函数
print(name)
#### 输出
allen    #第一次加载aries时,执行模块里的语句
Jack     #chang函数并没有改变本地py文件中name的值
4.为模块起别名

语法:import 模块名 as 别名

优点:将很长的模块名简化,方便使用;有利于代码的扩展和优化

#mysql.py
def sqlparse():
    print('from mysql sqlparse')
#oracle.py
def sqlparse():
    print('from oracle sqlparse')

#test.py
db_type=input('>>: ')
if db_type == 'mysql':
    import mysql as db
elif db_type == 'oracle':
    import oracle as db

db.sqlparse()
5.导入多个模块
# 可以但是不推荐
import os,sys,json   

#推荐写法
# 易于阅读 易于编辑 易于搜索 易于维护
import os
import sys
import json

5.1.2 from...import...

1.from...import...使用

? 语法:form 模块名 import 函数名1,函数名2...

也可以使用as起别名

2.from...import...与import的区别

? 使用from...import...则是将模块中的名字直接导入到当前的名称空间中,所以在当前名称空间中,直接使用名字就可以了、无需加前缀

from...import...的方式有好处也有坏处

? 好处:使用起来方便了

? 坏处:容易与当前执行文件中的名字冲突。

3. from ... import *

把模块里的所有的函数加载到本py文件中,不建议使用

在模块中可以使用__all__来控制哪些函数可以被调用

#在aries模块中,使用all可以把能被调用的函数写进去
__all__=['change','a_count']

5.1.3 py文件的两种功能

编写好的一个py文件有两种用途:

  • 脚本,一个文件就是整个程序,用来被执行
  • 模块,文件中存放着一堆功能,用来被导入使用

python内置了全局变量__name__:

  • 当文件被当做脚本执行时:name 等于__main__
  • 当文件被当做模块导入时:__name__等于模块名

可以在在模块中使用一下条件来限制条用函数

if __name__ == '__main__':
   # 在模块文件中测试chang函数
   # 此模块被导入时 __name__ == aries 所以不执行
   change()

5.1.4 模块的搜索路径

查找顺序:

内存中已经加载的模块->内置模块->sys.path路径中包含的模块

【特别注意:】我们自定义的模块名不应该与系统内置模块重名

导入sys.path:
#首先制作归档文件:zip module.zip foo.py bar.py
import sys
sys.path.append('module.zip')
import foo,bar

#也可以使用zip中目录结构的具体位置
sys.path.append('module.zip/lib/python')

#windows下的路径不加r开头,会语法错误
sys.path.insert(0,r'C:\Users\Administrator\PycharmProjects\a')

原文地址:https://www.cnblogs.com/jjzz1234/p/11091353.html

时间: 2024-10-14 07:55:06

python学习之模块-自定义模块(一)的相关文章

Python学习笔记-安装MySQLdb模块

模块下载地址: MySQL-python 1.2.3 for Windows and Python 2.7, 32bit and 64bit versions http://www.codegood.com/archives/129 直接点击安装exe即可,如果缺少dll文件,可以百度下载相关dll文件. Python学习笔记-安装MySQLdb模块

python 学习_第四模块 并发编程(多线程)

python 学习_第四模块 并发编程(多线程) 1  开启线程方式 from threading import Thread import time def say(name): time.sleep(2) print("%s hello"%name) if __name__ =="__main__": t = Thread(target=say,args=("alex",)) t.start() print("主线程")

python学习笔记day5——常用模块学习

一.主要内容 模块介绍 time &datetime模块 random os sys shutil json & picle shelve xml处理 yaml处理 configparser hashlib subprocess logging模块 re正则表达式 二.具体内容 1.模块 a.定义:本质就是.py结尾的python文件,逻辑上组织python代码,实现某种功能.例:文件名test.py-->模块名test. b.导入方法:imort moduname from mdn

Python学习(六)模块

Python 模块 模块定义 随着程序越来越庞大,需要分隔成几个文件:也需要能在不同文件中复用函数.类和变量,而不是拷贝代码.为了满足这些需要,Python提供了模块. 简单地说,模块就是一个保存了Python代码的文件.模块能定义函数,类和变量.模块里也能包含可执行的代码. 模块是包括Python定义和声明的文件.文件名就是模块名加上  .py 后缀.(目前使用Notepad++ 学习而保存的 .py 文件即为模块) 模块的模块名(作为一个字符串)可以由全局变量 __name __ 得到. 例

Python学习之路12?模块与包

一 模块 1.1 什么是模块? 一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 1.2 为何要使用模块? 如果你退出python解释器然后重新进入,那么你之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script. 随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理.这时我们不仅仅可以把

python学习笔记(六):常用模块

一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py文件,包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果你想导入其他目录下的模块,那么这个目录必须是一个包才可以导入. 导入模块 1 2 3 4 5 import module #导入模块 from modul

Python学习-基础篇4 模块与包与常用模块

一 模块介绍 1.什么是模块?#常见的场景:一个模块就是一个包含了一组功能的python文件,比如spam.py,模块名为spam,可以通过import spam使用. #在python中,模块的使用方式都是一样的,但其实细说的话,模块可以分为四个通用类别: 1 使用python编写的.py文件 2 已被编译为共享库或DLL的C或C++扩展 3 把一系列模块组织到一起的文件夹(注:文件夹下有一个__init__.py文件,该文件夹称之为包) 4 使用C编写并链接到python解释器的内置模块2.

Python学习笔记五(模块与包)

一.模块 1.模块介绍 一个模块就是包含了一组功能的python文件,可以通过import导入模块使用. python中模块分为四个类别: a) 使用python编写的.py文件 b) 已被编译为共享库或DLL的C或C++扩展 c) 把一系列模块组织到一起的文件夹,文件夹内有__init__.py文件,称该文件夹为包 d) 使用C编写并链接到python解释器的内置模块 定义my_module.py模块,模块名为my_module print("from my_module.py")

Python学习笔记十_模块、第三方模块安装、模块导入

一.模块.包 1.模块 模块实质上就是一个python文件.它是用来组织代码的,意思就是把python代码写到里面,文件名就是模块的名称,test.py test就是模块的名称 2.包 包,package本质就是一个文件夹,和文件夹不一样的是它有一个__init__.py文件.包是从逻辑上来组织模块的,也就是说它是用来存放模块的,如果想到如其他目录下的模块,那么这个目录必须是一个包才可以导入. 二.模块分类 1.标准模块.标准包 python自带的这些模块,直接import就能用的 import