python模块笔记,python模块和包知识讲解_第1页
python模块笔记,python模块和包知识讲解_第2页
python模块笔记,python模块和包知识讲解_第3页
python模块笔记,python模块和包知识讲解_第4页
python模块笔记,python模块和包知识讲解_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Python中的模块在Python中有一个概念叫做模块(module)。说的通俗点:模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块比如我们经常使用工具 random,就是一个模块。使用 import random 导入工具之后,就可以使用 random 的函数。导入模块 导入模块有五种方式import 模块名from 模块名 import 功能名from 模块名 import *import 模块名 as 别名from 模块名 import 功能名 as 别名下面来挨个的看一下。import在Python中用关键字import来引入某个模块,比如要引入系统模块

2、 math,就可以在文件最开始的地方用import math来引入。语法:import 模块1,模块2,. # 导入方式模块名.函数名() # 使用模块里的函数想一想:为什么必须加上模块名调用呢?答:因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须加上模块名示例:import math#这样才能正确输出结果print math.sqrt(2)#这样会报错print(sqrt(2)fromimport有时候我们只需要用到模块中的某个函数,只需要引入该函数即可,此时可以用下面方法

3、实现:from 模块名 import 函数名1,函数名2.不仅可以引入函数,还可以引入一些全局变量、类等注意:通过这种方式引入的时候,调用函数时只能给出函数名,不能给出模块名,但是当两个模块中含有相同名称函数的时候,后面一次引入会覆盖前一次引入。也就是说假如模块A中有函数function( ),在模块B中也有函数function( ),如果引入A中的function在先、B中的function在后,那么当调用function函数的时候,是去执行模块B中的function函数。例如,要导入模块fib的fibonacci函数,使用如下语句:from fib import fibonacci注意不会

4、把整个fib模块导入到当前的命名空间中,它只会将fib里的fibonacci单个函数引入from import *把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:from modname import *注意这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。 as 别名In 1: import time as tt # 导入模块时设置别名为 ttIn 2: time.sleep(1)-NameError Traceback (most recent call last) in ()- 1 time.sleep(1)NameError: n

5、ame time is not definedIn 3: In 3: tt.sleep(1) # 使用别名才能调用方法In 4: In 4: from time import sleep as sp # 导入方法时设置别名In 5: sleep(1)-NameError Traceback (most recent call last) in ()- 1 sleep(1)NameError: name sleep is not definedIn 6: In 6: sp(1) # 使用别名才能调用方法In 7:常见系统模块为了方便程序员开发代码,Python提供了很多内置的模块给程序员用来提高

6、编码效率。常见的内置模块有: HYPERLINK file:/C:/Users/Administrator/Desktop/%E7%94%B5%E5%8E%8B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E5%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%

7、94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-%E6%A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/chapter02.html l math#os os模块 HYPERLINK file:/C:/Users/Administrator/Desktop/%E7%94%B5%E5%8E%8B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E

8、9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E5%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-%E6%A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/chapter02.html l

9、math#sys sys模块 HYPERLINK file:/C:/Users/Administrator/Desktop/%E7%94%B5%E5%8E%8B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E5%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%

10、94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-%E6%A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/chapter02.html l math#math math模块 HYPERLINK file:/C:/Users/Administrator/Desktop/%E7%94%B5%E5%8E%8B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%

11、83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E5%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-%E6%A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/chapter02.htm

12、l l math#random random模块 HYPERLINK datetime模块 HYPERLINK file:/C:/Users/Administrator/Desktop/%E7%94%B5%E5%8E%8B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E5%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96

13、%B0%E7%89%88%EF%BC%89%20%E7%AC%94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-%E6%A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/chapter02.html l math#time time模块 HYPERLINK calendar模块 HYPERLINK hashlib模块 HYPERLINK file:/C:/Users/Administrator/Desktop/%E7%94%B5%E5%

14、8E%8B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E5%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-

15、%E6%A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/chapter02.html l math#hmac hmac模块 HYPERLINK file:/C:/Users/Administrator/Desktop/%E7%94%B5%E5%8E%8B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%

16、85%A8%E5%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-%E6%A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/chapter02.html l math#copy 模块 HYPERLINK file:/C:/Users/Administrator/Desktop/%E7%94%B5%E

17、5%8E%8B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E5%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day1

18、0-%E6%A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/chapter02.html l math#uuid uuid模块OS模块OS全称OperationSystem,即操作系统模块,这个模块可以用来操作系统的功能,并且实现跨平台操作import osos.getcwd() # 获取当前的工作目录,即当前python脚本工作的目录os.chdir(test) # 改变当前脚本工作目录,相当于shell下的cd命令os.rename(毕业论文.txt,毕业论文-最终版.txt) # 文件重命名os.remove(毕业论文.txt

19、) # 删除文件os.rmdir(demo) # 删除空文件夹os.removedirs(demo) # 删除空文件夹os.mkdir(demo) # 创建一个文件夹os.chdir(C:) # 切换工作目录os.listdir(C:) # 列出指定目录里的所有文件和文件夹 # nt-widonws posix-Linux/Unix或者MacOSos.environ # 获取到环境配置os.environ.get(PATH) # 获取指定的环境配置os.path.abspath(path) # 获取Path规范会的绝对路径os.path.exists(path) # 如果Path存在,则返回T

20、rueos.path.isdir(path) # 如果path是一个存在的目录,返回True。否则返回Falseos.path.isfile(path) # 如果path是一个存在的文件,返回True。否则返回Falseos.path.splitext(path) # 用来将指定路径进行分隔,可以获取到文件的后缀名sys模块该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数import syssys.path # 模块的查找路径sys.argv # 传递给Python脚本的命令行参数列表sys.exit(code) # 让程序以指定的退出码结束sys.stdin # 标准

21、输入。可以通过它来获取用户的输入sys.stdout # 标准输出。可以通过修改它来百变默认输出sys.stderr # 错误输出。可以通过修改它来改变错误删除math模块math模块保存了数学计算相关的方法,可以很方便的实现数学运算。import mathprint(math.fabs(-100) # 取绝对值print(math.ceil(34.01) #向上取整print(math.factorial(5) # 计算阶乘print(math.floor(34.98) # 向下取整print(math.pi) # 的值,约等于 3.141592653589793print(math.pow

22、(2, 10) # 2的10次方print(math.sin(math.pi / 6) # 正弦值print(math.cos(math.pi / 3) # 余弦值print(math.tan(math.pi / 2) # 正切值random模块random 模块主要用于生成随机数或者从一个列表里随机获取数据print(random.random() # 生成 0,1)的随机浮点数print(random.uniform(20, 30) # 生成20,30的随机浮点数print(random.randint(10, 30) # 生成10,30的随机整数print(random.randrang

23、e(20, 30) # 生成20,30)的随机整数print(random.choice(abcdefg) # 从列表里随机取出一个元素print(random.sample(abcdefghij, 3) # 从列表里随机取出指定个数的元素datetime模块datetime模块主要用来显示日期时间,这里主要涉及date类,用来显示日期;time类,用来显示时间;dateteime类,用来显示日期时间;timedelta类用来计算时间。import datetimeprint(datetime.date(2020, 1, 1) # 创建一个日期print(datetime.time(18, 2

24、3, 45) # 创建一个时间print(datetime.datetime.now() # 获取当前的日期时间print(datetime.datetime.now() + datetime.timedelta(3) # 计算三天以后的日期时间time模块除了使用datetime模块里的time类以外,Python还单独提供了另一个time模块,用来操作时间。time模块不仅可以用来显示时间,还可以控制程序,让程序暂停(使用sleep函数)print(time.time() # 获取从1970-01-01 00:00:00 UTC 到现在时间的秒数print(time.strftime(%Y

25、-%m-%d %H:%M:%S) # 按照指定格式输出时间print(time.asctime() #Mon Apr 15 20:03:23 2019print(time.ctime() # Mon Apr 15 20:03:23 2019print(hello)print(time.sleep(10) # 让线程暂停10秒钟print(world)calendar模块calendar模块用来显示一个日历,使用的不多,了解即可。calendar.setfirstweekday(calendar.SUNDAY) # 设置每周起始日期码。周一到周日分别对应 0 6calendar.firstwee

26、kday()# 返回当前每周起始日期的设置。默认情况下,首次载入calendar模块时返回0,即星期一。c = calendar.calendar(2019) # 生成2019年的日历,并且以周日为其实日期码print(c) #打印2019年日历print(calendar.isleap(2000) # True.闰年返回True,否则返回Falsecount = calendar.leapdays(1996,2010) # 获取1996年到2010年一共有多少个闰年print(calendar.month(2019, 3) # 打印2019年3月的日历hashlib模块hashlib是一个提

27、供字符加密功能的模块,包含MD5和SHA的加密算法,具体支持md5,sha1, sha224, sha256, sha384, sha512等算法。 该模块在用户登录认证方面应用广泛,对文本加密也很常见。import hashlib# 待加密信息str = 这是一个测试# 创建md5对象hl = hashlib.md5(hello.encode(encoding=utf8)print(MD5加密后为 : + hl.hexdigest()h1 = hashlib.sha1(123456.encode()print(h1.hexdigest()h2 = hashlib.sha224(123456.

28、encode()print(h2.hexdigest()h3 = hashlib.sha256(123456.encode()print(h3.hexdigest()h4 = hashlib.sha384(123456.encode()print(h4.hexdigest()hmac模块HMAC算法也是一种一种单项加密算法,并且它是基于上面各种哈希算法/散列算法的,只是它可以在运算过程中使用一个密钥来增增强安全性。hmac模块实现了HAMC算法,提供了相应的函数和方法,且与hashlib提供的api基本一致。h = hmac.new(h.encode(),你好.encode()result =

29、 h.hexdigest()print(result) # 获取加密后的结果模块模块里有和deep两个函数,分别用来对数据进行深复制和浅复制。import nums = 1, 5, 3, 8, 100, 200, 300, 400, 6, 7nums1 = .(nums) # 对nums列表进行浅复制nums2 = .deep(nums) # 对nums列表进行深复制uuid模块UUID是128位的全局唯一标识符,通常由32字节的字母串表示,它可以保证时间和空间的唯一性,也称为GUID。通过MAC地址、时间戳、命名空间、随机数、伪随机数来保证生产的ID的唯一性。随机生成字符串,可以当成toke

30、n使用,当成用户账号使用,当成订单号使用。方法作用uuid.uuid1()基于MAC地址,时间戳,随机数来生成唯一的uuid,可以保证全球范围内的唯一性。uuid.uuid2()算法与uuid1相同,不同的是把时间戳的前4位置换为POSIX的UID。不过需要注意的是python中没有基于DCE的算法,所以python的uuid模块中没有uuid2这个方法。uuid.uuid3(namespace,name)通过计算一个命名空间和名字的md5散列值来给出一个uuid,所以可以保证命名空间中的不同名字具有不同的uuid,但是相同的名字就是相同的uuid了。namespace并不是一个自己手动指定的

31、字符串或其他量,而是在uuid模块中本身给出的一些值。比如uuid.NAMESPACE_DNS,uuid.NAMESPACE_OID,uuid.NAMESPACE_OID这些值。这些值本身也是UUID对象,根据一定的规则计算得出。uuid.uuid4()通过伪随机数得到uuid,是有一定概率重复的uuid.uuid5(namespace,name)和uuid3基本相同,只不过采用的散列算法是sha1一般而言,在对uuid的需求不是很复杂的时候,uuid1或者uuid4方法就已经够用了import uuidprint(uuid.uuid1() # 根据时间戳和机器码生成uuid,可以保证全球唯一

32、print(uuid.uuid4() # 随机生成uuid,可能会有重复# 使用命名空间和字符串生成uuid.# 注意一下两点:# 1. 命名空间不是随意输入的字符串,它也是一个uuid类型的数据# 2. 相同的命名空间和想到的字符串,生成的uuid是一样的print(uuid.uuid3(uuid.NAMESPACE_DNS, hello)print(uuid.uuid5(uuid.NAMESPACE_OID, hello)pip命令的使用在安装Python时,同时还会安装pip软件,它是Python的包管理工具,可以用来查找、下载、安装和卸载Python的第三方资源包。配置pip可以直接在

33、终端中输入pip命令,如果出错,可能会有两个原因:pip安装成功以后没有正确配置安装Python时,没有自动安装pip(很少见)配置pip和运行Python命令一样,如果想要运行 pip 命令同样也需要将pip命令的安装目录添加到环境变量中安装pip如果在Python安装对应的目录中,没有发现pip.exe文件,可能是因为在安装Python时未自动安装pip,建议将Python卸载,然后在重新安装Python时选择Install Now使用默认方式安装Python.管理第三方包对第三方包的管理主要包含查找、安装和卸载三个部分的操作。安装使用pip install 命令可以安装指定的第三方资源包

34、。pip install ipython # 安装ipython包使用 install 命令下载第三方资源包时,默认是从 pythonhosted下载,由于各种原因,在国内下载速度相对来说比较慢,在某些时候甚至会出现连接超时的情况,我们可以使用国内镜像来提高下载速度。临时修改如果只是想临时修改某个第三方资源包的下载地址,在第三方包名后面添加 -i 参数,再指定下载路径即可,格式为pip install -i pip install ipython -i /simple永久修改除了临时修改pip的下载源以外,我们还能永久改变pip的默认下载路径。在当前用户目录下创建一个pip的文件夹,然后再在文

35、件夹里创建pip.ini文件并输入一下内容:globalindex-url=/simpleinstalltrusted-host=常见国内镜像阿里云 HYPERLINK /pypi/simple/ t C:/Users/Administrator/Desktop/%E7%94%B5%E5%8E%8B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E5

36、%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-%E6%A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/_blank /pypi/simple/中国科技大学 HYPERLINK /simple/ t C:/Users/Administrator/Desktop/%E7%94%B5%E5%8E%8

37、B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E5%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-%E6%

38、A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/_blank /simple/豆瓣(douban) HYPERLINK /simple/ t C:/Users/Administrator/Desktop/%E7%94%B5%E5%8E%8B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E

39、5%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-%E6%A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/_blank /simple/清华大学 HYPERLINK /simple/ t C:/Users/Administrator/Desktop/%E7%94%B5%E5%8E%8B%E6%9

40、C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E5%BC%80%E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-%E6%A8%A1%

41、E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/_blank /simple/中国科学技术大学 HYPERLINK /simple/ t C:/Users/Administrator/Desktop/%E7%94%B5%E5%8E%8B%E6%9C%BA/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/2020%E5%8D%83%E9%94%8BPython%E5%85%A5%E9%97%A8%E8%A7%86%E9%A2%91%E5%85%A8%E5%A5%97%E5%85%A8%E5%BC%80%

42、E6%BA%90%EF%BC%88%E6%9C%80%E6%96%B0%E7%89%88%EF%BC%89%20%E7%AC%94%E8%AE%B0+%E4%BB%A3%E7%A0%81+%E8%AF%BE%E4%BB%B6+%E8%B5%84%E6%96%99/Day10-%E6%A8%A1%E5%9D%97%E5%92%8C%E5%8C%85/03-%E7%AC%94%E8%AE%B0/_blank /simple/卸载使用pip install 命令可以用来卸载指定的第三方资源包。pip uninstall ipython # 卸载ipython包查找使用pip list或者pip fr

43、eeze命令可以来管理第三方资源包。这两个命令的功能一致,都是用来显示当前环境里已经安装的包,区别在于pip list会列出所有的包,包括一些无法uninstall的包;而pip freeze只会列出我们安装的第三方包。总结开发中,我们通常会使用很多第三方的资源包,我们在将程序部署到服务器的时候,不仅要把代码上传到服务器,同时还需要把代码里用到的第三方资源包告诉服务器。那么这里就有两个问题:当我们电脑上运行很多个项目,每个项目使用的第三方资源包又不一致时,怎样将代码和它使用到的第三方资源包放在一起呢?答:虚拟环境怎样将自己代码使用到的第三方资源包告诉给服务器?使用 pip freeze req

44、uires.txt 命令,将代码里使用到的第三方资源包以及版本号写入到 requirements.txt 文件,在部署时,同时将 requirements.txt 文件上传到服务器。服务器在拿到代码以后,首先运行 pip install -r requirements.txt 命令,将文件里列出的所有第三方框架先安装到服务器,然后才能运行代码。使用pycharm管理第三方包除了使用pip 命令管理第三方资源包以外,我们还能使用pycharm来对第三方包进行管理。自定义模块除了使用系统提供的内置模块以外,我们还能自己写一个模块供自己的程序使用。一个py文件就是一个模块,所以,自定义模块很简单,基

45、本上相当于创建一个py文件。但是,需要注意的是,如果一个py文件要作为一个模块被别的代码使用,这个py文件的名字一定要遵守标识符的命名规则。模块的查找路径创建一个模块非常简单,安装标识符的命名规则创建一个py文件就是一个模块。但是问题是,我们需要把创建好的这个py文件放在哪个位置,在代码中使用import语句才能找到这个模块呢?Python内置sys模块的path属性,列出了程序运行时查找模块的目录,只需要把我们创建好的模块放到这些任意的一个目录里即可。import sysprint(sys.path) C:UserschrisDesktopTest, C:UserschrisAppDataL

46、ocalProgramsPythonPython37python37.zip, C:UserschrisAppDataLocalProgramsPythonPython37DLLs, C:UserschrisAppDataLocalProgramsPythonPython37lib, C:UserschrisAppDataLocalProgramsPythonPython37, C:UserschrisAppDataRoamingPythonPython37site-packages, C:UserschrisAppDataLocalProgramsPythonPython37libsite-

47、packages_all_的使用使用from import *导入一个模块里所有的内容时,本质上是去查找这个模块的_all_属性,将_all_属性里声明的所有内容导入。如果这个模块里没有设置_all_属性,此时才会导入这个模块里的所有内容。模块里的私有成员模块里以一个下划线_开始的变量和函数,是模块里的私有成员,当模块被导入时,以_开头的变量默认不会被导入。但是它不具有强制性,如果一个代码强行使用以_开头的变量,有时也可以。但是强烈不建议这样使用,因为有可能会出问题。总结test1.py:模块里没有_all_属性a = hellodef fn(): print(我是test1模块里的fn函数)

48、test2.py:模块里有_all_属性x = 你好y = gooddef foo(): print(我是test2模块里的foo函数)_all_ = (x,foo)test3.py:模块里有以_开头的属性m = 早上好_n = 下午好def _bar(): print(我是test3里的bar函数)demo.pyfrom test1 import *from test2 import *from test3 import *print(a)fn()print(x)# print(y) 会报错,test2的_all_里没有变量 yfoo()print(m)# print(_n) 会报错,导入test3时, _n 不会被导入import test3print(test3._n) # 也可以强行使用,但是强烈不建议_name_的使用在实际开中,当一个开发人员编写完一个模块后,为了让模块能够在项目中达到想要的效果,这个开发人员会自行在py文件中添加一些测试信息,例如:test1.pydef add(a,b): return a+b# 这段代码应该只有直接运行这个文件进行测试时才要执行# 如果别的代码导入本模块,这段代码不应该被执行ret = add(12,22)print(测试的结果是,ret)demo.pyim

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论