Python基础语法(十二)模块、包

模块分类

1.系统模块
例如 os sys time
2.第三方模块
例如 pygame
3.自定义模块
例如 sendmsg

简单理解,模块就相当于"文件名.py"

模块的导入

main.py

#第一种导入方式
import sendmsg
import recvmsg

sendmsg.test1()
sendmsg.test2()
recvmsg.test1()

#第二种导入方式
#from sendmsg import test1,test2
#from sendmsg import test2

#第三种导入方式
#from sendmsg import *
#from recvmsg import *
#第二种、第三种导入方式的调用
#test1() #第三种导入方式相同的方法,最后一个导入的会覆盖前一个
#test2()

sendmsg.py

def test1():
    print("-----test1----")

def test2():
    print("-----test2----")

if __name__ == "__main__":
    test1()
    test2()

recvmsg.py

def test1():
    print("----recvmsg---test1-----")

模块导入会产生缓存recvmsg.cpython-35.pyc文件,这个是python解释后的文件,再次执行可直接取缓存,这个里面有解释后的字节码,因为是c语言解释的,所以是cpython,35表示python版本号为3.5

模块中__all__属性

test.py

__all__ = ["test1",num,"Test"]
def test1():
    print("-----test1----")

def test2():
    print("-----test2----")

num = 100

class Test(object):
    pass

模块外程序导入模块,使用 from test import *时,只能调用all中的函数、全局变量、类,没有包含的不能调用

只有存在__init__.py文件的文件夹才称作包

将sendmsg.py、recvmsg.py文件放入Test文件夹下,在Test文件夹同级调用该Test包

包(文件夹)在python2中不能直接导入,需要添加__init__.py空文件才能导入,导入后不能直接使用,python3能导入,但不能直接用

sendmsg.py

def test2():
    print("-----test2----")

recvmsg.py

def test1():
    print("----recvmsg---test1-----")

python2调用包内容:在__init__.py文件中

__all__ = ["sendmsg"] #此句只影响from Test import *的导入方式

import sendmsg #此句只影响import Test的导入方式

1.写上import sendmsg,在导入包后,可以通过Test.sendmsg.test2()来调用函数
2.写上__all__ = ["sendmsg"],可以通过调用sendmsg.test2()来调用函数

python3不支持import sendmsg的方式,但可以修改__init__.py内容import sendmsgfrom . import sendmsg,python3就可以导入

自定义包

包的导入顺序:
1.当前路径下寻找
2.系统默认路径下寻找

第一步:
创建包,并在包的同级添加setup.py文件

第二步:
在setup.py文件中添加如下代码:

from distutils.core import setup

setup(name="dongGe", version="1.0", description="dongGe's module", author="dongGe", py_modules=['TestMsg.sendmsg', 'TestMsg.recvmsg']) #TestMsg是包,sendmsg是模块
setup的key

第三步:
构建模块
python3 setup.py build

执行后生成

python3 setup.py sdist

执行后生成

最后一步:
安装到系统目录
sudo python3 setup.py install

给模块传参

test.py

import sys #模块中一定要导入sys模块

print(sys.argv) #使用sys.argv参数就可以得到给程序传的参数,类型为字符串列表

name = sys.argv[1] #argv[0]为第一个参数,内容为该文件的文件名,第二个参数为传参的第一个值

print("热烈欢迎 %s的到来"%name)

调用

python test.py 老王
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Python 面向对象Python从设计之初就已经是一门面向对象的语言,正因为如此,在Python中创建一个类和对...
    顺毛阅读 4,413评论 4 16
  • 用 python 解释器来编程从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。 为此...
    chen_000阅读 598评论 0 3
  • 首先声明,我不是ui designer。但是为什么我要切图?回答这个问题不得不从职业说起。没错,本人是一名程序员。...
    张一一阅读 1,944评论 0 2
  • 本来打算写整个去哪儿旅行App的产品体验报告,但是发现整个App功能过于庞大,担心自己写的太广,反而照顾不全,因此...
    Emotiona萌阅读 1,189评论 0 2
  • 无锡太湖之美,国人皆知;赫赫有名的“二泉映月”相信大家更不陌生,而这乐名的由来,知之甚少吧! 陆羽品遍全国之泉水,...
    惠影风华阅读 794评论 0 1

友情链接更多精彩内容