python学习笔记18(模块)

模块

概述:
随着代码量越来越多,代码就越来越难以维护。为了解决难以维护的问题,我们把很多相似功能的函数分组,分别放到不同的文件中取。这样每个文件所包含的内容相对较少,而且对于每一个文件的大致功能可用用文件名来体现。很多编程语言都是这么来组织代码结构。一个.py文件就是一个模块

优点:
1、提高代码的可维护性
2、提高了代码的复用度,当一个模块完毕,可以被多个地方引用
3、引用其他的模块(内置模块和三方模块和自定义模块)
4、避免函数名和变量名的冲突

模块的创建:
示例:

#一个.py文件就是一个模块
def sayGood():
    print("sunck is a very good man!")

def sayNice():
    print("sunck is a nice man!")

def sayHandsome():
    print("sunck is a handsome man!")
    
TT = 100

if __name__ == "__main__":
    sayGood()
    sayNice()
    sayHandsome()
    print(TT)
    

将上述代码保存成sunck.py文件,就创建了一个模块!
直接运行sunck.py输出如下结果:

sunck is a very good man!
sunck is a nice man!
sunck is a handsome man!
100

__name__语句功能:
每一个模块都有一个__name__属性,当其值等于"main"时,表明该模块自身在执行。否则被引入其他文件。即当前文件如果为程序的入口文件,则__name__属性的值为__main__
__name__语句作用:
在后面调用sunck模块时,不会输出“ sunck is a very good man!……”内容。
编写模块的典型格式:

def main():
    pass

if __name__ == "__main__":
    main()

引入模块:
1、import语句
格式 : import module1[, module2[, module3[……,moudeln]]]

import time, random, os

引入自定义模块,不用加.py后缀

import sunck

注意:一个模块只会被引入一次,不管你执行了多少次import。防止模块被多次引入

使用模块中的内容
格式:模块名.函数名/变量名

sunck.sayGood()
print(sunck.TT)

2、from……import语句
作用: 从模块中导入一个指定的部分到当前命名空间
格式: from module import name1[, name2[, ……namen]]

from sunck import sayGood, sayNice

使用模块中的内容
格式:函数名/变量名

from sunck import sayGood
sayGood()
#输出:sunck is a very good man!

注意: 程序内容的函数可以将模块中的同名函数覆盖

from sunck import sayGood, sayNice
def sayGood():
    print("********")
sayGood()    #输出:********
sayNice()     #输出:sunck is a nice man!
sayHandsome()    #没有引入handsome函数,报错

3、from……import * 语句

作用: 把 一个模块中所有的内容全部导入当前命名空间
格式: from module import *
注意:最好不要过多的使用,且程序内的函数可以将模块中的同名函数覆盖

from sunck import *
def sayGood():
    print("********")
    
sayGood()    #输出:********

应用: 利用sys模块传递系统参数(在cmd命令行中执行并输入对应的name, age, hoby)

#引入模块
import sys
print(sys.argv)

#获取命令行参数的列表
for i in sys.argv:
    print(i)

name = sys.argv[1]
age = sys.argv[2]
hoby = sys.argv[3]
print(name, age, hoby)

#自动查找所需模块的路径的列表
print(sys.path)


如果不同的人编写的模块同名怎么办?

为了解决模块命名的冲突,引入了按目录来组织模块的方法,称为包

特点: 引入了包以后,只要顶层的包不与其他人发生冲突,那么模块都不会与别人的发生冲突

注意: 目录只有包含一个叫做"init.py"的文件才被认作是一个包,基本上这个文件中可以什么也不写
创建格式:

目录1
	模块a
	模块b
	__init__.py
目录2
……

目录的层数不限
引用格式:

import 目录1.模块a
#同一目录下的多个模块不能同时引入
import 目录1.模块b

#使用
目录1.模块a()
目录1.模块b()

猜你喜欢

转载自blog.csdn.net/weixin_42216171/article/details/85852425