目录
模块
模块就是程序,就是平时写的代码,保持到每一个.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