Python 语法之模块和包(2)
1.from <module_name> import <name(s)>
下面,我们一起来看模块导入的另一种方法,直接导入模块中的对象,语句为:from 模块名 import 方法名
,我们一起看下方实例:
使用这种方式导入时,调用 max_num
和 min_num
函数便不需要添加前缀 utils.
。
有时候,为了方便,会使用 from <module_name> import *
来导入模块中的所有对象。
2.from <module_name> import as <alt_name>
Python 中模块内的对象和方法也可以有自己的别名,实现语句为: from 模块名 import *** as 别名
,该命令为导入的对象起一个别名。这样就可以通过别名来使用对象。例如:
在上面的例子中,分别为 max_num,min_num
取了别名 max_n,min_n
。这样在调用函数时,便可以使用 max_n,min_n
。
3.import <module_name> as <alt_name>
我们还可以为导入的整个模块起一个别名,这样便可以通过模块的别名来使用模块,使用方法是一样的,都是将 模块名.
作为前缀。例如:
在上面的例子中,为模块 utils
取了别名 ul
,这样在调用函数时,便可以使用 ul.
前缀。
4.包含单个类的模块
一起来看下包含单个类的模块,我们创建一个模块(car.py),包含类 car
,语句如下:
导入类(my_car.py):
5.包含多个类的模块
我们创建模块(car.py),其中包含父类 car
和继承类 Electriccar
,语句如下:
导入单个类(my_electirc_car.py):
导入多个类(my_cars.py):
导入整个模块:
导入模块中的全部类:
6.包
在程序中呢,也会遇到和仓颉一样的问题,就是假设我们开发了一个很庞大的应用程序,程序包含了非常多的模块。随着模块数量的增长,如果将模块都放在同一个目录下,将变得越来越难管理。特别当模块具有相似的名称或相似的功能。这时候我们非常希望对这些模块进行分组管理,Python 中的包实现了对模块分组管理的功能。包的创建非常简单,它利用了操作系统的分层文件结构。我们只要将模块放在一个目录下便可。
在上图中,目录 pkg 下有两个模块,utils1.py
和 utils2.py
,pkg 便是一个包。(包相当于一个文件夹,模块则相当于文件夹中的文件)
两个模块中的语句如下:(语句相当于文件中的内容)
utils1.py
:
utils2.py
:
6.1import <module_name>[, <module_name> ...]
导入包中的模块,语法规则为:import 包.模块名
,我们一起看下方语句:
导入包 pkg
中的模块 utils1
和模块 utils2
,并调用两个模块中的方法,将 pkg.utils1.
作为前缀放在 max_num()
方法前,表示是在 pkg 包中的模块 utils1
内的方法。
6.2from <package_name> import <modules_name>[, <module_name> ...]
我们也可以通过 from
语句来实现模块的导入,我们一起看下方语句:
6.3from <module_name> import <name(s)
>
我们再来一起看下,定义包之后,导入指定模块中的对象,我们看下方语句:
和第二部分模块导入相比,就是在模块名前将包的名字作为前缀 pkg.utils1
来实现的,其余语句均与模块导入一致。
6.4from <module_name> import as <alt_name>
为模块内的对象和方法设置别名,语句如下:
6.5from <package_name> import <module_name> as <alt_name>
为导入的整个模块设置别名,语句如下:
7.小试牛刀
自定义一个模块,并在另一个文件中导入这个模块。
版权声明: 本文为 InfoQ 作者【向阳逐梦】的原创文章。
原文链接:【http://xie.infoq.cn/article/812aead11f997142692c25560】。文章转载请联系作者。
评论