Python程序设计入门(4)模块和包
作者:shichen2014 发布时间:2023-06-18 11:37:36
Python语言功能非常强大,除了类之外,还有模块和包的概念,这有点像perl,此处简单说说包和模块。
一、Python中的模块
模块——其实就是我们说的库(lib)的概念,不过它不仅只是可以包含一系列函数,也可以包含类,python里是没有像C语言之类,直接include某文件的,包正是这种类似的东西。
Python 引入模块的方法有两种:
1、import 模块名(实际是对应的就是 文件名.py )
2、模块名 = __import__("模块文件名(不带扩展名)")
也可以" import 模块名 as 别名 "这样用
例如:
test.py
# -*- coding: gb18030 -*-
#引入模块
import test_mod
#调用模块里的函数
test_mod.my_func()
#调用模块里的类
tc = test_mod.test_cls()
tc.test_func()
test_mod.py源码如下:
# -*- coding: gb18030 -*-
def my_func():
print 'I am a function in the module! '
class test_cls:
def test_func(self):
print 'I am a mothod in the class! '
调用模块里的函数或类一定要用 “模块名.类名|函数名” 的方式。
正是因为这种特性,python里很多 os.xx 、 sys.xx 之类的语法,但它不一定是对象(对象和非对象之间显得极混乱,或者可以认为模块也是一个对象吧,只是比较特殊),这是python语言的一个严重的缺点,不过当你习惯这些的时候,就比较容易读懂python的脚本了。
sys 和 os 是 python 里最常用的模块,需要了解一下它们。
二、Python中的包
包实际上就是对一系列模块的封装,以防止模块名之间发生冲突,对于一个标准的python程序,通常的结构为:
app.py
appname
__init__.py
son_pack1
__init__.py
son_mod_1_1.py
son_mod_1_2.py
son_pack2
__init__.py
son_mod_2_1.py
son_mod_2_2.py
son_mod_1.py
.......
如果学过Java就会明显,这是一种按目录来查找文件的方法,不过不同之处是每个目录必须带 __init__.py 否则将不会被识别为包的子目录。
在有__version__、__all__、__path__ 三个特殊变量,可以指定,也可以让这文件为空。
调用包里的类或函数的方法是:
包名.子包名.类名|函数名
这实际上就相当于C++或C#里的名字空间。
在调用包时,需要注册目录和具体模块的调用方法
如,要调用 son_mod_1_1.py
那么就是:
appname.son_pack1.son_mod_1_1
此外还有一种方法是用 form 关键字,方法为:
from appname.son_pack1 import son_mod_1_1
如果要喜引入 appname.son_pack1 里的所有模块,那么为:
from appname.son_pack1 import *
对于使用 import * 的情况,必须在 __init__.py 中用 __all__ 指明,如:
__all__ = ["son_mod_1_1", "son_mod_1_2"]


猜你喜欢
- 本文实例为大家分享了js图片加载淡入淡出效果展示的具体代码,供大家参考,具体内容如下HTML代码首先是图片标记的写法:<img dat
- 一、函数基础简单地说,一个函数就是一组Python语句的组合,它们可以在程序中运行一次或多次运行。Python中的函数在其他语言中也叫做过程
- 一、前言假设现在有一个应用场景,需要对文件系统进行监控,发生变化时产生日志,对新增的文件做一些相应的操作。比如说应用到我们之前的音乐高潮提取
- 修改 index.js 内容,写一些 ES6 的语法:const arr = [ new Promise(() => {}
- iframe的防插与强插(一)中介绍了“市面上”能见到的两种防御被第三方网站iframe的方法,以及相应的变态突破方法。貌似把“受害人”逼上
- 本文实例讲述了Python集中化管理平台Ansible介绍与YAML。分享给大家供大家参考,具体如下:一 中文社区http://ansibl
- python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。得到当前工作目录,即当前Python脚本工作的目录路
- 将Copy of ********.bmp或者Copy of Copy of ********.bmp 此类文件统一命名为********0
- 一、错误提示:用户登录失败,该用户与可信SQL Server连接无关联 错误18452原因是远程登录没配置好,配置方法如下:1:开启SQL2
- truncate table 表名 ( 数据不可恢复性的删除 truncate 标识列会重排 ) LinqUtil.Db.ExecuteCo
- 目录表示时间的方式1. 调用语法:2. time概述3. 时间获取4. 时间格式化(将时间以合理的方式展示出来)5. 程序计时应用6. 示例
- 本文代码将一些简单常用的SQL语句,拆分、封装成链式函数与终结函数,链式操作没有先后之分,实现傻瓜式mysql数据库操作。 同时学习下静态成
- max_connect_errors是一个MySQL中与安全有关的计数器值,它负责阻止过多尝试失败的客户端以防止暴力破解密码的情况。max_
- 一、go语言内存布局想象一下,你有一个如下的结构体。type MyData struct {
- 为了网站的安全,肯定不让上传php文件,如果有人进入你的后台,上传了一个php文件,你的网站源码,全部救变成他的了,直接打包看你的代码。所以
- 先来看一个例子:>>> def foo(*args, **kwargs): print
- Golang Goroutine和线程的区别 Golang,轻松学习一、Golang Goroutine?当使用者分配足够多的任务,系统能自
- 本文实例讲述了javascript实现表格增删改操作的方法。分享给大家供大家参考。具体实现方法如下:<!DOCTYPE html PU
- Check In/Out功能简介:该功能是专门针对多用户管理而预设的。即多用户使用多帐号管理同一站点。
- 关于模型保存的一点心得saver = tf.train.Saver(max_to_keep=3)在定义 saver 的时候一般会定义最多保存