python3学习笔记-模块和包

1. 模块

简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。文件名即模块的名字。
如果想导入模块,那么必须把模块所在的路径加入到python解释器的搜索路径。PyCharm貌似会自动将当前路径添加到python搜索路径。
此处解释一下搜索路径。搜索路径也即sys.path的值。
我们可以在pycharm中打印 sys.path 看一下。
在这里插入图片描述
我们再打开命令行,进入python解释器界面看看sys.path是多少。此处用的是Anaconda Prompt。
在这里插入图片描述
可以看出跟PyCharm中显示的有点不一样。缺少了PyCharm的路径。
此时在Python解释器界面导入jinyuxin0318文件夹里的模块(也即python文件),会报找不到的异常。此处以导入module.py文件为例。
在这里插入图片描述
此时会报No module named 'module’的异常。因为module所在的路径不在sys.path中。
解决这以一问题的办法就是利用 sys.path.append(“模块所在路径”) 手动将module.py文件所在路径添加至sys.path中。l在这里插入图片描述
在解释器中手动添加想要导入模块所在路径。
在这里插入图片描述
添加之后,import 就不会报错了。此处还自动执行了里面的命令。。。
在这里插入图片描述
此处介绍了怎么导入模块。前提必须保证模块所在路径存在于python搜索路径中,即sys.path中。

2. 包

考虑如果两个模块名字相同。那么包的作用就体现出来了,此处跟Java中package的作用一样。python中的包是一个文件夹。但并不是普通的文件夹。包所在的文件夹下面包含一个__init__.py的文件。 此文件夹名即包名。
下面以例子说明包的作用。
包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的Python的应用环境。
考虑一个在Phone目录下的pots.py文件。这个文件有如下源代码:

#!/usr/bin/python

def Pots():
   print "I'm Pots Phone"

同样地,我们有另外两个保存了不同函数的文件:

  • Phone/Isdn.py 含有函数Isdn()
  • Phone/G3.py 含有函数G3()

现在,在Phone目录下创建file init.py:

  • Phone/__init__.py

如果你想显示使用Phone文件夹下面的所有模块的函数,那么你需要在__init__.py里使用显式的导入语句,如下:

from Pots import Pots
from Isdn import Isdn
from G3 import G3

当你把这些代码添加到__init__.py之后,导入Phone包的时候这些类就全都是可用的了。

#! /usr/bin/python

import Phone

Phone.pots()
Phone.isdn()
Phone.g3()

以上实例输出结果:

I'm Pots Phone
I'm 3G Phone
I'm ISDN Phone

如上,为了举例,我们只在每个文件里放置了一个函数,但其实你可以放置许多函数。你也可以在这些文件里定义Python的类,然后为这些类建一个包。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值