python之所以用起来方便,最重要的就是提供了强大的模块支持。比如我们创建一个hello.py文件,在里面写上如下代码。
def hello():
print("Hello World!")
然后我们导入hello.py模块,就可以调用里面的hello()方法了。
import hello
hello.hello()
import
python中的import关键字主要有两种用法,第一种是导入整个模块,就像上文中的import hello,导入时还可以给模块起别名。
import hello as h
h.hello()
导入多个模块时用逗号隔开就可以了。
import sys as s,os as o
print(s.argv[0])
print(o.sep)
除了直接导入整个模块之外,还可以导入模块中的某个成员,语法类似vue。
from sys import argv as a,winver as w
print(a[0])
print(w)
自定义模块
自定义模块其实就是自己写的python文件,比如我们自己写一个demo.py。
name = "demo"
content = "this is demo.py"
print(name,content)
def say():
print(name)
class demoClass:
def __init__(self,name,content):
self.name = name
self.content = content
def say(self):
print(self.content)
say()
d = demoClass("zhangsan","zhangsanContent")
d.say()
然后我们引入一下demo模块。
import demo
可以看到,引入demo模块的时候,会执行demo.py中的程序,大部分时候并不需要这样,而是在调用模块中的具体属性或方法时,代码才会被执行。
要实现上面说的效果,可以借助python中的__name__变量。当直接运行一个模块时,__ name__变量的值为__main__,而当模块被导入到其他程序时,模块中的__name__的值变成了模块名,因此可以修改demo.py中的代码,判断__name__等于__main__的时候才执行。
if __name__ == '__main__':
say()
d = demoClass("zhangsan","zhangsanContent")
d.say()
在定义函数或者类时,可以为其添加说明文档,模块也不例外,只需要在模块的开头位置定义一个字符串即可。
'''
demo模块的说明文档
'''
print(demo.__doc__)
导入模块的三种方式
上文中的代码,都是被导入的模块和需要导入模块的文件在同一目录下,当两个文件不在同一目录下的时候,比如我们在桌面上放一个desktop.py文件,需要用下面三种方法来导入。
1.临时添加模块完整路径
import sys
sys.path.append("C:\\Users\\演示机\\Desktop")
import desktop
desktop.say()
2.将模块保存到指定位置
对于一些通用的模块,我们应该将其安装在python内部,以便于所有程序共享,这种时候我们可以查看一下sys.path变量。
print(sys.path)
上面的运行结果都是python的模块默认加载路径,通常来说,我们一般将模块放在Lib\site-packages路径下,它用于专门存放python的扩展模块和包。
3.设置环境变量
在环境变量中添加PYTHONPATH变量,并将要导入模块的位置配置到该变量中,比如.;C:\Users\演示机\Desktop,该模块就可以被成功加载。
__all__变量
事实上,当我们导入模块的时候,导入的是该模块中名称不以下划线开头的变量、方法和类,即public的成员。
python中还有一个__all__属性,该属性为一个列表,当其他文件以from 模块名 import *的形式导入模块时,只能使用__all__属性内的成员。但是对于import 模块名 和 from 模块名 import 成员 两种方式导入模块时,__all__属性没有用。
包
包就是文件夹,但是该文件夹下必须有一个名为__init__.py的文件(python3中好像并不是必须的,因为我试着没有也行。),该文件可以是一个空模块,也可以写一些初始化代码,主要是为了告诉python把该目录当成包来处理。
需要注意的是,__ init__.py不同于其他模块,它的模块名不是__init__,而是它所在的包名。
导入包
其实python的包本质上还是模块,因此导入包的时候主要是以下三种方式:
1.import 包名[.模块名 [as 别名]]
2.from 包名 import 模块名 [as 别名]
3.from 包名.模块名 import 成员名 [as 别名]
和导入模块没有什么区别,这里就不赘述了。
查看模块方法
通过dir()函数,可以查看某个模块内包含的全部成员(包括私有的成员)。
import string
print(dir(string))
除了dir()方法外,还可以使用__all__变量。
print(string.__all__)
需要注意的是,不是所有模块都支持__all__变量,这种模块只能用dir()方法来获取。
__ doc__
通过dir()方法获取到成员之后,可以再获取__doc__说明文档,来查看这些成员的具体含义。
__ file__
__file__属性可以获取到该模块的存储路径,当没有__doc__属性,或者__doc__属性不能满足需求时,可以通过__file__属性找到文件位置直接查看源码。
python第三方库的下载和安装
python库的安装包可以去https://pypi.python.org/pypi进行下载,安装包的格式为.whl。
安装下载的库之前,需要将%python安装路径%\Scripts添加到path环境变量中,然后可以通过pip install %安装包名称%.whl命令进行安装。