python random模块导入_Python学习笔记(二十)—模块的导入
一、模块介绍
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学习笔记(二十)—模块的导入相关推荐
- python常用开放工具_python学习笔记16-各种模块和开放工具收集整理
一.调试,性能,日志 Debugger: pdb Logger: logging Profilers: profile, hotshot, cProfile 调试模块 pdb 允许你设置(条件)断点, ...
- python定义变量字符串_Python学习笔记二(变量和字符串)
2017年年终确定的从2018年开始学习一门新的语言.随着机器学习人工智能的日渐深入,是时候有必要掌握以下Python了.博客今天更新第二篇学习记录,关于Python的变量和变量中字符串的使用,所有学 ...
- python的os模块使用_Python学习笔记之os模块使用总结
#!/usr/bin/env python ##-*- coding: utf-8 -*- import os print "n欢迎大家跟我一起学Python"; system=o ...
- python 操作excel 教程_Python学习笔记(十六)—Python操作Excel
Python中对Excel文件的操作包括:读.写.修改.如果要对其进行如上的操作需要导入Python的第三方模块:xlrd.xlwd.xlutils,其分别对应Python的读.写.修改的操作 一.安 ...
- python动态粒子素材_python学习笔记之十:文件和素材
这里将介绍函数和对象--文件和流,让你在程序调用期间存储数据,并且可以处理来自其他程序的数据. 一. 打开文件 1.1 open函数 open函数用来打开文件,语法如下:open(name,[.mod ...
- Mr.J-- jQuery学习笔记(二十八)--DOM操作方法(添加方法总结)
Table of Contents appendTo appendTo(source, target) 源代码 append prependTo prependTo源码 prepend ...
- 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言
嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...
- uniapp 学习笔记二十二 购物车页面结构搭建
uniapp 学习笔记二十二 购物车页面结构搭建 cart.vue <template><view><view class="flex padding" ...
- Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用
Polyworks脚本开发学习笔记(二十)-补充几个常见操作指令的使用 大概要写到结尾了,最后几篇就将手册的各常用命令再看一遍,组合一下,并列举出常见的一些有用的操作. DATA_COLOR_MAP数 ...
最新文章
- 基于easyui开发Web版Activiti流程定制器详解(四)——页面结构(下)
- 最小生成树与最短路径的区别以及实现方法
- boost::fusion::push_back用法的测试程序
- .ajax get 写法,原生Ajax写法(GET)
- Confluent官博:Kafka最牛队列,性能15倍于RabbitMQ!
- 橱柜高度与身高对照表_厨房台面高度是多少 厨房台面如何选购
- 基于校园图书管理系统需求分析
- 电容的耐压值选择---陶瓷电容、钽电容、电解电容
- web eTerm是什么
- 集成百度做敏感词鉴定
- MATLAB超限邻域滤波
- 终面(HR面)_职业竞争力和职业规划
- 前端切图仔,常用的21个字符串方法
- 修改ubuntu桌面分辨率方法
- 智慧电网运维-覆冰在线监测装置
- 该怎么回答面试官问“你有什么优缺点?”
- OpenGL导入3DS专题
- lisp语言与python_Lisp 语言优点那么多,为什么国内很少运用?
- 空间尺寸对迭代次数的影响
- 牛客竞赛小白试炼(20201205 怕npy的牛牛)
热门文章
- Map.Entry如何使用?
- 服务器即将维护完成,新一轮大服务器即将开启:3月26日维护8小时
- ios笔试题算法_iOS 算法面试题(一)
- 接二手java项目需要什么资料_师妹问双非本科如何进BAT,我告诉她Java后端路线...
- mysql pxc 报错_登录mysqlpxc报错找不到库文件libreadline.so.7
- c语言学习-编写递归函数用于计算n!
- 用unity制作能量护盾(2)
- android 下载视频文件怎么打开,安卓手机支付宝文件夹下的视频文件是什么
- oracle如何判断奇数偶数_堆垒素数论之旅(1):奇数哥德巴赫猜想
- OpenShift 4.10 不可变新特性 - 利用 MachineConfig 发现节点配置漂移