6、Python模块与包

目录

模块

模块就是程序,就是平时写的代码,保持到每一个.py结尾的文件,就构成了一个独立的模块、程序与模块关键的区别在于,程序的设计目标是运行,而模块的设计目标时由其他程序导入并使用

在导入了模块之后,调用模块内部的方法时,还需要引入命名空间,默认引入的模块就是其命名空间(可以用as给命名空间做别名),当使用模块中的函数时,必须要加入命名空间


导入模块的两种形式

import模块名

在同一级目录下创建一个module_show_info.py,内容如下

#!/usr/bin/env python
# encoding: utf-8

def show_name(var_name):
    print("var_name:%s" %var_name)

def show_age(var_age):
    print("var_age:%s" % var_age)

def show_addr(var_addr):
    print("var_addr:%s" % var_addr)

在主文件中用import来引入这个模块,在方法名前加上命名空间,才能调用该模块的方法

#!/usr/bin/env python
# encoding: utf-8

import module_show_info
module_show_info.show_name('zengraoli')#var_name:zengraoli
module_show_info.show_age(24)#var_age:24
module_show_info.show_addr('addr')#var_addr:addr

如果引入的模块名字比较长,用as关键字,可以给命名空间起个别名,这样在使用该模块的方法时,就比较简洁了

#!/usr/bin/env python
# encoding: utf-8

import module_show_info as info
info.show_name('zengraoli')#var_name:zengraoli
info.show_age(24)#var_age:24
info.show_addr('addr')#var_addr:addr

from模块名import函数名

有时候一个模块内有很多的函数,如果只需要用得到里面的某一个函数,那么可以选择此种引入方式

#!/usr/bin/env python
# encoding: utf-8

from module_show_info import show_name

show_name('zengraoli')#var_name:zengraoli
#show_addr('addr')#不认识该方法

当然如果觉得引入的函数名字不好听,还可以用as来起个别名

#!/usr/bin/env python
# encoding: utf-8

from module_show_info import show_name as sn

sn('zengraoli')#var_name:zengraoli
#show_addr('addr')#不认识该方法

题外话name==’main

某个.py文件中带有输出代码时,被其他文件引入,很有可能在执行时同样会输出这些信息
当使用了name==’main’,则只有当这个.py文件为运行文件时,才会执行name==’main’下的信息

#!/usr/bin/env python
# encoding: utf-8

def show_name(var_name):
    print("var_name:%s" %var_name)

def show_age(var_age):
    print("var_age:%s" % var_age)

def show_addr(var_addr):
    print("var_addr:%s" % var_addr)

if __name__ == '__main__':
    print("module_show_info")

在实际开发中,一般都会成百上千的py文件,为了便于管理,可以把其中一部分归并成一个包。区别普通文件夹和包,主要是在每一个包目录下会有一个init.py模块,这个模块可以为空,也可以写一些初始化代码

扫描二维码关注公众号,回复: 2993731 查看本文章

这里写图片描述

在使用包下面的代码时候,需要在模块名前,再加一个包名

#!/usr/bin/env python
# encoding: utf-8

from package_show_info.module_show_info import show_name

show_name('zengraoli')#var_name:zengraoli


猜你喜欢

转载自blog.csdn.net/zengraoli/article/details/81319057