热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python通信相关包_PYTHON学习笔记【模块和包】

1python中的模块在python中有一个概念叫做模块,这个和C语言中的头文件以及JAVA中的JAVA包很类似,比如在PYTHON中要调用sqrt函数

1python中的模块

在python中有一个概念叫做模块,这个和C语言中的头文件以及JAVA中的JAVA包很类似,比如在PYTHON中要调用sqrt函数,必须 用import关键字引入math这个模块。

通俗点,模块就好比是工具包,要想使用这个工具包中的工具(就好比函数),就必须导入这个模块。

import

在python中用关键字import来引入某个模块,比如要引入模块math,就可以文件开始的地方使用import math来引入。

import module1,module2...

在调用math模块中的函数时,必须 这样引用

模块名.函数名

importrandomprint(random.randint(0,5))

from ...import...

Python的from语句让你从模块中导入一个指定的部分到当前命名空间中:

from modulename import name[,name2...]

例如,要导入模块fib的fibonacci函数:

from fib import Fibonacci

注意:不会把整 个fib模块导入到当前的命名空间中,它中会将fib里的fibonacci单个引入。fromrandomimportrandintprint(randint(0,9))#直接写方法名

from...import*

把一个模块的所有内容全都导入到当前的命名空间,只需要如下声明:

from modname import *

注意:这提供了一个简单的方法来导入一个模块中的所有项目,然而这种声明不该被过多使用,因为不同模块可能存在一样的方法名字,导致后面导入的模块的方法覆盖了前面模块的同名方法。

as

给导入的模块重新命名importrandomasrdprint(rd.randint(0,5))

查看包的代码:

>>> import random

>>> random.__file__

'D:\Program Files\Python\Python37\lib\random.py'

定义自己的模块

在python中,每个python文件都可以作为一个模块,模块的名字就是文件的名字。

例,调用自定义模块

1.编写一个module1.py的模块#写一个工具方法,判断字符 是否为null,当字符串为none为null,还有''还为null,还有'  '也为nulldefisnull( str ):if notstr:return True

elifstr.strip() =='':return True

else:return False

deftest1():print("……中的test1方法……")

2.调用自己编写的模块(main.py)importmodule1

a ='a'print(module1.isnull(a))

module1.test1()frommodule1importisnull,test1

a ='a'print(isnull(a))

test1()

模块的测试和模块中的__all__

可以根据__name__变量的结果 能够判断出,是直接执行的python脚本还是被引入执行的,从而能够有选择性的执行代码#写一个工具方法,判断字符 是否为null,当字符串为none为null,还有''还为null,还有'  '也为null__all__=['isnull']#表示被引用的方法,在from module1 import *有效,defisnull( str ):if notstr:return True

elifstr.strip() =='':return True

else:return False

deftest1():print("……中的test1方法……")# print(isnull(" ")) #这行虽然是测试代码,但只要被当作模块被导入就会自动执行#print(__name__)if__name__=='__main__':#由python解释器主动执行该模块代码,测试时执行,当被当作模块调用时,以下代码不执行print(isnull(" "))

2python中的包

引入包,包就是一个目录,把多个py文件放到同一个文件夹下。

执行顺序:当前目录-》python系统目录

Ø使用” import文件夹.模块“的方式导入,python3可以导入,python2不行

Ø使用”from文件夹import模块“的方式导入,python3可以导入,python2不行

Ø在包的文件夹上创建__init__.py文件,虽然 文件内容没有,但是python2可以用了。在python2中,有一个目录,并且目录下有一个__init__.py文件,才认为是包。

有__init__.py文件在python3中没有错,以后均在包的目录上新建一个__init__.py文件。

Ø在__init__.py文件中写入

from . import模块1

from . import模块2

那么可以使用“import文件夹”导入,也可以使用” from文件夹import模块”的方式导入

#encoding=UTF-8'''

import my_package.module1   # python3,引入包中的模块,方法1

a = 'a'

print(my_package.module1.isnull(a))

from my_package import module1  # python3,引入包中的模块,方法1

a = 'a'

print(module1.isnull(a))

'''importmy_package#引入包中的模块,方法3在包目录下的__init__.py文件 写代码from . import模块1a ='a'print(my_package.module1.isnull(a))

模块/包的发布

1.发布的模块/包的目录结构:

[root@localhost test_pub]# tree

.

├── my_package    #要发布的包名

│   ├── __init__.py

│   ├── module1.py  #待发布的模块1

│   ├── module2.py

│   └── __pycache__

│       ├── __init__.cpython-37.pyc  #.pyc是自解码文件

│       ├── module1.cpython-37.pyc

│       └── module2.cpython-37.pyc

└── setup.py    #与包同级

2.编辑setup.py文件

py_modules需要指明所需包含的py文件fromdistutils.coreimportsetup#setup(name='压缩包的名字',version='1.0',description='描述',author='作者',py_modules=['suba.aa','suba.bb'])setup(name='my_pub',version='3.7',description='没有',author='me',py_modules=['my_package.module1','my_package.module2'])

3.构建模块

python setup.py build

attachment.php?aid=707320

4.生成发布压缩包

python setup.py sdist

attachment.php?aid=707321

模块/包的安装、使用

1.安装的方式

找到模块的压缩包-》解决-》进入文件夹-》执行命令”python setup.py install”

注意:如果在install的时候,执行目录安装,可以使用”python setup.py install –prefix安装路径

attachment.php?aid=707322

attachment.php?aid=707323

2.模块的引入

在程序中,使用“from import ”即可完成对安装的模块的使用

from模块名import模块名或*

attachment.php?aid=707324

1.导入模块的路径设置

Ø查看模块搜索路径

attachment.php?aid=707325

Ø添加搜索路径

attachment.php?aid=707326

Ø重新导入模块

from imp import *

reload(模块名)

2.查看已经安装的模块help()

attachment.php?aid=707327

3.模块内定义的所有名称dir()函数

dir()函数能够返回由对象所定义的名称列表,例如:这一对象是一模块,则dir()函数可以找到模块内定义的所有名称(含函数、类、变量),以一个字符串列表的形式返回

dir()是有参数的,如果参数是模块名称(当然参数也可以是类,函数等),那么将返回这一指定模块的名称列表。如果没有参数,那么函数将返回当前文件(即当前模块的名称列表):比如你在test2.py下指定dir(test),那么返回test模块的名称列表,如果是dir(),那么返回test2.py名称列表

attachment.php?aid=707328

4.循环导入,两个模块互相导入

attachment.php?aid=707331attachment.php?aid=707330

attachment.php?aid=707332



推荐阅读
author-avatar
爱生活爱花落_485
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有