一、模块介绍

Python 提供了强大的模块支持,主要体现在Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块。通过这些强大的模块可以极大地提高开发者的开发效率。

那么,模块到底指的是什么呢?模块,英文为 Modules,用一句话总结:模块就是 Python 程序。换句话说,任何 Python 程序都可以作为模块。

模块可以比作一盒积木,通过它可以拼出多种主题的玩具,这与前面介绍的函数不同,一个函数仅相当于一块积木,而一个模块(.py 文件)中可以包含多个函数,也就是很多积木。所以模块和函数的关系如图 1 所示。

使用模块的好处:体现在提高代码的可重用性,当编写好一个模块后,只要编程过程中需要用到该模块中的某个功能(由变量、函数、类实现),无需做重复性的编写工作,直接在程序中导入该模块即可使用该功能。模块,可以理解为是对代码更高级的封装,即把能够实现某一特定功能的代码编写在同一个 .py 文件中,并将其作为一个独立的模块,这样既可以方便其它程序或脚本导入并使用,同时还能有效避免函数名和变量名发生冲突。

二、导入模块的实质

导入模块的语法格式:

1、import 模块名1 [as 别名1], 模块名2 [as 别名2],…:使用这种语法格式的 import 语句,会导入指定模块中的所有成员(包括变量、函数、类等)。不仅如此,当需要使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错。

2、from 模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],…: 使用这种语法格式的 import 语句,只会导入模块中指定的成员,而不是全部成员。同时,当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。

导入模块的实质:就是把导入的Python文件从头到尾执行一次。

举个例子:在同一目录下创建Model1.py和model2.py两个文件,内容如下:

model.py:

name = 'model1'

deff1():print('我是model1文件里面的f1')print('我是model1文件里面的print')#创建一个文件,并写入内容

f = open('test.txt','w')

f.write('我是model1模块文件里面写入的内容')

f.close()print('脚本执行完毕!')

model2.py

importmodel1 as m1

m1.f1()#调用model.py文件中的f1方法

print(m1.name) #调用model.py文件中的name变量

执行结果:

我是model1文件里面的print

脚本执行完毕!

我是model1文件里面的f1

model1

注意:模块命名时尽量不要使用系统已经定义的函数名称。否则在导入模块的时候系统会报错。比如在当前目录下创建random.py文件,然后在model2.py中import random模块并应用,这个时候会报如下错误:

importrandomprint(random.randint(1,9))

运行结果:

AttributeError: module 'random' has no attribute 'randint'

运行出现了错误。原因是在于Python在导入模块后,使用时寻找模块的顺序出现问题导致。那么究竟是怎么回事呢?下面就来说说导入模块后寻找模块的顺序

三、导入模块后寻找的顺序

1、先从当前目录下寻找是否有这个模块。

2、如果当前路径下没有,则去环境变量中查找这个模块。(这里的环境变量不是系统的环境变量,而是Python自己的环境变量)

到此可能有人会提出疑问,在同一路径下不是有random模块吗?为什么还会报错呢?这是因为在本目录下虽然定义了random模块,但是在掉用模块中的方法的时候去当前目录查找,没有randinit方法,所以就出现了如上错误。

四、环境变量的查看及添加

1、查看Python自己的环境变量,首先需要导入sys模块;具体如下:

importsysprint(sys.path) #打印python的环境变量目录

这样就能看到Python的环境变量值。

2、将模块加入到环境变量中

2.1 方法一:将需要导入的模块收到加入到环境变量中。

1、首先通过sys.path查找Python的环境变量值

2、然后将*.py模块放入对应Python环境变量,路径中的任何一个路劲下放即可

2.2 方法二:将导入模块路径,临时加入到Python编辑中

1、导入sys模块

2、执行sys.path.append(r'c:\xxx\xxx') #将路径加入到Python环境变量中去

注意:临时生效,将路径加入都Python环境变量的末尾,一旦重新打开工具或者Python端即失效

importsysprint(sys.path) #打印python的环境变量目录

sys.path.append(r'G:\xxx\Project\text') #临时生效,将路径加入都Python环境变量的末尾

print(sys.path) #打印python的环境变量目录

2.3 方法三:将导入模块路径,永久加入环境变量

1、导入sys模块

2、执行sys.path.insert(0,r'c:\xxx\xxx') #将变量加入环境变量;里面第一个参数是加入到环境变量中的那个位置(下标值),第二个参数是要加入的模块路径

importsysprint(sys.path) #打印python的环境变量目录

sys.path.insert(0,r'G:\code\Project\text') #将变量加入环境变量的开头,避免查询所有 的环境变量

2.4 方法四:使用pycharm工具来加环境变量

1、选择要加入模块的文件,右击>选择Mark Direc as>Sources Root 即可将文件加入Python的环境变量中

2、 如果取消的话,同样选择文件右击>选择Mark Direc as>unmark as Sources root

注意:如果A模块和B模块在同一目录下,那么A模块导入B模块直接:import B即可。如果A模块和B模块在不同路径下放,那么在导入的时候需要先将B模块加入到Python的环境变量中去,这样导入才不会出错。

python random模块导入_Python学习笔记(二十)—模块的导入相关推荐

  1. python常用开放工具_python学习笔记16-各种模块和开放工具收集整理

    一.调试,性能,日志 Debugger: pdb Logger: logging Profilers: profile, hotshot, cProfile 调试模块 pdb 允许你设置(条件)断点, ...

  2. python定义变量字符串_Python学习笔记二(变量和字符串)

    2017年年终确定的从2018年开始学习一门新的语言.随着机器学习人工智能的日渐深入,是时候有必要掌握以下Python了.博客今天更新第二篇学习记录,关于Python的变量和变量中字符串的使用,所有学 ...

  3. python的os模块使用_Python学习笔记之os模块使用总结

    #!/usr/bin/env python ##-*- coding: utf-8 -*- import os print "n欢迎大家跟我一起学Python"; system=o ...

  4. python 操作excel 教程_Python学习笔记(十六)—Python操作Excel

    Python中对Excel文件的操作包括:读.写.修改.如果要对其进行如上的操作需要导入Python的第三方模块:xlrd.xlwd.xlutils,其分别对应Python的读.写.修改的操作 一.安 ...

  5. python动态粒子素材_python学习笔记之十:文件和素材

    这里将介绍函数和对象--文件和流,让你在程序调用期间存储数据,并且可以处理来自其他程序的数据. 一. 打开文件 1.1 open函数 open函数用来打开文件,语法如下:open(name,[.mod ...

  6. Mr.J-- jQuery学习笔记(二十八)--DOM操作方法(添加方法总结)

    Table of Contents appendTo appendTo(source, target) 源代码 append prependTo ​ ​ ​ ​ prependTo源码 prepend ...

  7. 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言

    嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...

  8. uniapp 学习笔记二十二 购物车页面结构搭建

    uniapp 学习笔记二十二 购物车页面结构搭建 cart.vue <template><view><view class="flex padding" ...

  9. Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用

    Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用 大概要写到结尾了,最后几篇就将手册的各常用命令再看一遍,组合一下,并列举出常见的一些有用的操作. DATA_COLOR_MAP数 ...

最新文章

  1. 基于easyui开发Web版Activiti流程定制器详解(四)——页面结构(下)
  2. 最小生成树与最短路径的区别以及实现方法
  3. boost::fusion::push_back用法的测试程序
  4. .ajax get 写法,原生Ajax写法(GET)
  5. Confluent官博:Kafka最牛队列,性能15倍于RabbitMQ!
  6. 橱柜高度与身高对照表_厨房台面高度是多少 厨房台面如何选购
  7. 基于校园图书管理系统需求分析
  8. 电容的耐压值选择---陶瓷电容、钽电容、电解电容
  9. web eTerm是什么
  10. 集成百度做敏感词鉴定
  11. MATLAB超限邻域滤波
  12. 终面(HR面)_职业竞争力和职业规划
  13. 前端切图仔,常用的21个字符串方法
  14. 修改ubuntu桌面分辨率方法
  15. 智慧电网运维-覆冰在线监测装置
  16. 该怎么回答面试官问“你有什么优缺点?”
  17. OpenGL导入3DS专题
  18. lisp语言与python_Lisp 语言优点那么多,为什么国内很少运用?
  19. 空间尺寸对迭代次数的影响
  20. 牛客竞赛小白试炼(20201205 怕npy的牛牛)

热门文章

  1. Map.Entry如何使用?
  2. 服务器即将维护完成,新一轮大服务器即将开启:3月26日维护8小时
  3. ios笔试题算法_iOS 算法面试题(一)
  4. 接二手java项目需要什么资料_师妹问双非本科如何进BAT,我告诉她Java后端路线...
  5. mysql pxc 报错_登录mysqlpxc报错找不到库文件libreadline.so.7
  6. c语言学习-编写递归函数用于计算n!
  7. 用unity制作能量护盾(2)
  8. android 下载视频文件怎么打开,安卓手机支付宝文件夹下的视频文件是什么
  9. oracle如何判断奇数偶数_堆垒素数论之旅(1):奇数哥德巴赫猜想
  10. OpenShift 4.10 不可变新特性 - 利用 MachineConfig 发现节点配置漂移