模块和包
Python支持多文件开发,你可以将封装好的函数、类型和变量移动到其他的文件中,然后将他们导入,从而在当前源码中使用这些东西。当然,他们都是Python中的对象。
模块(Module) 和包(Package) 是Python中文件级别的代码封装概念,下面将作具体介绍。
标准库
Python提供了许多内置的、开箱即用的标准库。例如,在基本类型章节中,我们曾经提到过random
,现在继续拿它来开刀!
是不是很好奇random
到底是个什么东西?我们打印一下看看:
import random
print(random)
mangofanfan@localhost:~/HelloWorld$ /usr/bin/python3 /home/mangofanfan/HelloWorld/03_module.py
<module 'random' from '/usr/lib/python3.10/random.py'>
可以发现,random
是位于/usr/lib/python3.10/
目录下的random.py
文件。我们可以在IDE中通过Ctrl
+🖱鼠标左键的方式跳转到其实现:
通过import random
一行语句,我们导入了这整个random.py
文件,并将其作为一个module
对象存放在内存中。导入过程中,random.py
会被Python完整地执行一次,从而允许我们使用其中定义的方法、类型等。
比如此刻,我希望使用random
中定义的randint
函数来生成随机数,就可以这样编码:
import random
print(random.randint(1, 100))
mangofanfan@localhost:~/HelloWorld$ /usr/bin/python3 /home/mangofanfan/HelloWorld/03_module.py
20
mangofanfan@localhost:~/HelloWorld$ /usr/bin/python3 /home/mangofanfan/HelloWorld/03_module.py
78
import的??种写法
在介绍Python中的列表类型时,我们曾经这样使用过random
中的randint
函数:
import random
aList = []
for i in range(10):
num = random.randint(1, 1000)
print(i, num)
aList.append(num)
print(aList)
这里我们导入了整个random
,但是实际上只用到了其中的一个randint
函数,而random
中还存在很多代码都没有被我们使用到。本着尽可能节约一些资源的指导思想,能不能选择性地只导入我们想要的函数或者其他东西呢?
当然能啦,不然我问你干嘛 使用from ... import ...
就可以选择性地只导入你想要的东西了,比如如果我只要randint
的话:
from random import randint
aList = []
for i in range(10):
num = randint(1, 1000)
print(i, num)
aList.append(num)
print(aList)
不仅如此,如果你需要的东西的名字太长了,你也可以起个好听(简短)的别名:
import random as rd
from random import randint as ri
你也可以同时导入多个东西:
import random, math, hashlib
from hashlib import sha1, sha256, md5
也可以同时给每个东西起别名:
import random as rd, hashlib as hb
from random import randint as ri, random as rd
不过起的名字太简短了结果导致自己以后也不认识了也不是件好事,要不要起别名就交给各位自行定夺啦。