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 <module>
    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】选项,创建包。

如下图:

 创建后出现__init__.py文件

引入包中模块

包中的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 模板介绍和使用,包含如何创建和使用自定义模块,引入模块的方式及包内容介绍。

相关推荐

  1. Python 模块使用方法

    2023-12-14 19:48:03       65 阅读
  2. python logging模块使用总结

    2023-12-14 19:48:03       51 阅读
  3. Python中常用模块使用

    2023-12-14 19:48:03       58 阅读
  4. Python(re模块具体使用

    2023-12-14 19:48:03       25 阅读
  5. python中os模块和sys模块使用

    2023-12-14 19:48:03       36 阅读
  6. Python--Python模块导出与__name__使用

    2023-12-14 19:48:03       27 阅读
  7. python-time模块使用

    2023-12-14 19:48:03       56 阅读
  8. python期末:常见模块使用及计算生态

    2023-12-14 19:48:03       52 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-14 19:48:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-14 19:48:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-14 19:48:03       87 阅读
  4. Python语言-面向对象

    2023-12-14 19:48:03       96 阅读

热门阅读

  1. android : 省市区Json

    2023-12-14 19:48:03       64 阅读
  2. FB使用汇编模拟GoSub(子函数)功能

    2023-12-14 19:48:03       56 阅读
  3. ENSP-VRP

    ENSP-VRP

    2023-12-14 19:48:03      68 阅读
  4. 稳定匹配算法及其栈优化

    2023-12-14 19:48:03       49 阅读
  5. 软件开发经常出现的bug原因有哪些

    2023-12-14 19:48:03       64 阅读
  6. CDN加速:社会服务的必备利器

    2023-12-14 19:48:03       58 阅读
  7. LeetCode 2697. 字典序最小回文串

    2023-12-14 19:48:03       70 阅读
  8. leetcode 最大和的连续子数组 C语言

    2023-12-14 19:48:03       53 阅读