首页 > 其他分享 >制作模块

制作模块

时间:2022-12-22 01:11:06浏览次数:41  
标签:__ python 制作 testA 模块 print my

一、制作模块

  在python中,每个python文件都可以作为一个模块,模块的名字就是文件的名字。也就是说自定义模块名必须要符合标识符命名规则。

  1.1 定义模块

  新建一个python文件,命名为my_module1,并定义testA函数。

# 需求:一个函数 完成任意两个数字的加法运算
def testA (a, b):
    print(a + b)

  1.2 测事模块

  当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,开发人员在文件中添加一些测试信息。

  列如:

# 需求:一个函数 完成任意两个数字的加法运算
def testA (a, b):
    print(a + b)

# 测试信息
testA(1, 1)  # 这种测试信息如果不注释会在调用此模块的文件中运行。

  此时,无论是当前文件,还是其他已经导入该模块的文件,在运行的时候都会自动执行testA函数的调用。

  解决方法:

# 需求:一个函数 完成任意两个数字的加法运算
def testA (a, b):
    print(a + b)

# 测试信息
# testA(1, 1)  # 这种测试信息如果不注释会在调用此模块的文件中运行。

# print(__name__)  # __main__
# __name__ 是系统变量,是模块的标识符,值是:如果是自身模块值是__main__,否则是当前模块的名字。
# __main__等于是当前文件中才被运行,其他调用此模块的文件中不被运行。
if __name__ == '__main__':
    testA(1, 1)

  后续测试信息要if __name__ == '__main__' 中添加。

  1.4 注意事项

  如果使用from .. import .. 或 from .. import *  导入多个模块的时候,且模块内有同名功能。当调用这个同名功能的时候,调用到的是后面导入的模块的功能。

"""
模块2代码
def my_test(a, b):
    print(a + b)
模块3代码
def my_test(a, b):
    print(a - b)
"""
# 导入模块并调用相同名字的功能
from my_module2 import my_test
from my_module3 import my_test

# my_test调用到的是my_module3的功能
my_test(10, 9)

二、模块定位顺序

  当导入一个模块,python解释器对模块位置的搜索顺序是:

  1. 当前目录

  2. 如果不在当前目录,python则搜索在shell变量PYTHONPATH下的每个目录

  3. 如果找不到,python会查看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/

  模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

  注意:

    1. 自己的文件名不要和已有模块名重复,否则导致模块功能无法使用。

    2. 使用  from  模块名  import  功能  的时候,如果功能名字重复,调用到的是最后定义或者导入的功能。

三、拓展

  名字重复:

# 问题:import 模块名  是否担心 功能名字重复的问题? -- 不需要,每次调用功能都是:  模块名 . 功能名

import time
print(time)  # <module 'time' (built-in)>

time = 1
print(time)  # 1

# 问题: 为什么变量也能覆盖模块? -- 在python语言中,数据是通过 引用 传递的。大概意思后者覆盖前者

 

标签:__,python,制作,testA,模块,print,my
From: https://www.cnblogs.com/yz-b/p/16997509.html

相关文章

  • Node.js(笔记02) - fs文件系统模块
    fs 文件系统模块fs 模块是 Node.js 官方提供的,用来操作文件的模块。提供了一系列的方法和属性,用来满足用户对文件的操作需求;例如:fs.readFile() 方法,用来读取指定文件中......
  • 如何将模块打包发布?
      终于用pyqt5制作出来的图书管理系统完成了,那么在打包模块时该怎么做呢?下面我主要以图书管理系统的模块为案例简述两种打包方式。一、第一种方式在打包前需要用到一......
  • rust模块化
    模块化关键字模块以文件为单位mod最重要的关键字,引用以后即可用use引入的防范可以使用缩写例子同级文件src/main.rspubmoddog;fnmain(){dog::sleep()......
  • 舵机云台的制作分享
    1.运动功能说明   舵机云台下方的舵机可以提供一个左右摆动的动作,同时上方横置的关节模组可以提供一个上下摆动的动作。在这两部分的配合下,云台的执行端端(即:关节模......
  • 8号蜡,玻璃钢船艇模具制作工艺流程
    一、壳模制造一,木工1.做底板。在地上画一条基线。根据基准线,用木板在地面上做一个落地框架,调整到水平。用玻璃钢将框架与地面固定,然后在木框上铺一块细木工板,调整到水平......
  • 品优购项目-头部底端和整个页面底端制作
    品优购项目(二)3).nav制作nav盒子通栏有高度而且有个下边框1号盒子左侧浮动dorpdown下拉导航里面包含dtdd2号盒子右侧浮动navitems导航栏组11.......
  • Linux系统 目录文件制作 ISO 镜像文件
    #下载工具#制作iso镜像文件[root@node01~]#yuminstallgenisoimage-y[root@node01~]#mkisofs-r-ozabbix-5.4.iso/zabbix-5.3/zabbix-5.3/[root@node01~]#llz......
  • Angular 模块封装概念常见的错误理解
    Angular以类似于ES模块的方式引入了模块封装的概念。它基本上意味着可声明的类型——组件、指令和管道——只能由在该模块内声明的组件使用。例如,如果我尝试使用下面的......
  • es6模块化随笔记
    默认导出与默认导入默认导出的语法:exportdefault默认导出的成员每个模块中只允许使用唯一的一次exportdefault默认导入的语法:import接收名称from‘模块标识符’......
  • Qt下MQTT模块的导入(源码直接导入)适用Windows和Linux系统
    Qt下MQTT模块的导入(源码直接导入)适用Windows和Linux系统​​0.环境​​​​1.MQTT源码下载(也可以去官网下载)​​​​2.MQTT源码解压成功复制src/mqtt文件夹到工程中​......