Python 模块的使用

本篇主要为python 模板介绍和使用,包含如何创建和使用自定义模块,引入模块的方式及包内容介绍。

概述

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

优点

提高代码的可维护性

提高了代码的复用性,同一个模块,可以被多个功能引用。

引用其他的模块(内置模块、三方模块和自定义模块)避免函数名和变量名的冲突

自定义模块

创建自定义模块

在当前目录下创建teacher.py,并创建了一个方法,打印一些字符串用于显示。

示例如下:

# 一个.py文件就是一个模块

name = 'teacher'

def say_common_in():
    print('进来,准备上课!')


def say_lecture():
    print('开始上课,这节课我们来讲一讲...')


def say_end():
    print('下课了,同学们再见!')

引入自定义模块

在同级目录中创建一个新的.py文件,用于引入模块和调用。

引入自定义模块,不用加.py后缀,下面以import引入方式为例。

示例如下:

import teacher

注意:一个模块只会被引入一次,不论添加了多少个import。

这是为了防止模块被多次引入。

使用模块中的内容

使用模块中的方法

格式:模块名.函数名()

示例如下:

teacher.say_common_in()
teacher.say_lecture()
teacher.say_end()

# 执行结果
# 进来,准备上课!
# 开始上课,这节课我们来讲一讲...
# 下课了,同学们再见!

使用模块中的变量

格式:模块名.变量名

示例如下:

print(teacher.name)

# 执行结果
# teacher

引入模块方式

import语句

格式:import module[, module2 [, module3[,......,modulen]]]

示例如下:

import teacher
import os, time, datetime

from...import语句

作用:从模块中导入一个指定的部分到当前命名空间

格式:from module import name[, name2[....,namen]]

示例如下:

from teacher import say_common_in

say_common_in()

# 执行结果
# 进来,准备上课!

注意
调用未引入的函数

没有引入say_end函数

示例如下:

say_end()
执行结果
Traceback (most recent call last):
  File "E:\lianxipy\day5\使用from...import.py", line 14, in 
    say_end()
NameError: name 'say_end' is not defined

设置同名函数

若在当前文件中定义函数与引入模块中函数同名则会覆盖掉。

示例如下:

from teacher import say_common_in


def say_common_in():
    print('这是一个新方法!')

say_common_in()

# 执行结果
# 这是一个新方法!

from...import *语句

from...import * 语句把一个模块中所有的内容全部导入当前的命名空间

示例如下:

from teacher import *

say_common_in()
say_lecture()
say_end()

# 执行结果
# 进来,准备上课!
# 开始上课,这节课我们来讲一讲...
# 下课了,同学们再见!

注意:最好不要过多使用。

__name__属性

模块就是一个可执行的.py文件,一个模块被另外一个程序引入。

如果不想模块中的某些代码执行,可以用__name__属性来使程序仅调用模块的一部分。

修改teacher

每个模块都有一个__name__属性,当其值等于“__main__”时,表名该模块自身在执行。

示例如下:

# 一个.py文件就是一个模块

name = 'teacher'


def say_common_in():
    print('进来,准备上课!')


def say_lecture():
    print('开始上课,这节课我们来讲一讲...')


def say_end():
    print('下课了,同学们再见!')


# 每个模块都有一个__name__属性,当其值等于“__main__”时,表名该模块自身在执行。
if __name__ == '__main__':
    print('自己执行')

执行teacher.py

执行结果

自己执行

在其他文件中调用是不会执行此打印。

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

特点

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

创建包

选中当前目录后【右击】选择new中的【Python Package】选项,创建包。

如下图:

Python 模块的使用_第1张图片

 创建后出现__init__.py文件

Python 模块的使用_第2张图片

引入包中模块

包中的teacher.py是之前创建的,分别复制后放入a、b包中。然后引用包中的teacher模块。

示例如下:

import a.teacher
import b.teacher

使用模块方法

分别调用a、b包中的teacher的say_common_in()方法,也不会产生冲突。

因为它们现在分别属于不同的命名空间中,是相互独立,互不干涉的。

示例如下:

# 调用a包中teacher模块的函数
a.teacher.say_common_in()

# 调用b包中teacher模块中的函数
b.teacher.say_common_in()

# 执行结果
# 进来,准备上课!
# 进来,准备上课!

注意

目录只有包含一个“__init__.py”的文件才会被认作是一个包,

主要是为了避免一些滥竽充数的名字,

暂时这个文件中不需要写东西。

总结

本篇主要为python 模板介绍和使用,包含如何创建和使用自定义模块,引入模块的方式及包内容介绍。

你可能感兴趣的:(Python,python,开发语言,后端)