【python学习笔记】模块和包

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命令进行安装。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值