python调用模块1


一、调用模块或函数的方法

 1、调用模块的常规用法 

  a、import 模块名
  b、from 模块名 import 函数名字
  b、import 模块名 as 新名字
import math
from math import sqrt
import math as shuxue

print('调用math.sqrt:%0.4f\t'%math.sqrt(2))
print('直接调用sqrt:%.4f\t'%sqrt(2))
a = shuxue.sqrt(2)
print('直接调用shuxue.sqrt:%.4f\t'%a)



#执行结果

调用math.sqrt:1.4142    
直接调用sqrt:1.4142    
直接调用shuxue.sqrt:1.4142

 1、自己编写的模块

 a、import sys              #导入sys模块
 b、print(sys.path) #输出当前模块查找路径(列表形式)
 c、sys.path.append(Apath) #添加Apath为模块查找路径
#模块文件
#文件名称:eg8_2_1.py                   #被导入时会执行,输出信息
print('导入的测试模块的输出')

name = 'module_test'                  #定义变量
def m_t_pr():                         #模块中的函数定义
    print('模块module_test中m_t_pr()函数')    

#存放在一个路径下

#调用自己编写的模块
#文件名:eg8_2_2.py
import sys
sys.path.append('G:\\Python练习')
import eg8_2_1                            #导入eg8_2_1模块
eg8_2_1.m_t_pr()                          #调用导入eg8_2_1模块的m_t_pr()函数
print('使用eg8_2_1模块中的变量:',eg8_2_1.name)          #使用导入模块中的变量

#执行结果

导入的测试模块的输出
模块module_test中m_t_pr()函数
使用eg8_2_1模块中的变量: module_test
                                        

3、__pycache__

虽然python是脚本语言,但python可以将程序编译成字节码的形式,对于模块,Python总是在第一次调用后将其编译成字节码的形式,以提程序的启动速度

eg8_2_1.cpython-39就是Python把eg8_2_1.py编译成字节码的文件

import sys
sys.path.append('G:\\Python练习\\usertest')
import eg8_2_1                                   #导入eg8_2_1模块
import py_compile                                #导入py_compile模块
eg8_2_1.m_t_pr()
py_compile.compile('eg8_2_1.py','eg8_2_1.pyc')   #编译eg8_2_1.py文件为eg8_2_1.pyc
#py_compile.compile('eg8_2_1.py')                #生成一个__pycache__的文件,文件夹下包含eg8_2_1.pyc文件

4、独立运行的模块

  每个Python程序运行时都有一个__name__属性,在程序中通过对__name__属性值的判断,可以让程序在作为导入模块和独立运行都可以同时正常运行。

  如果程序作为模块被导入,则其__name__属性被设置为模块名,如果程序独立运行,则其__name__属性被设置为“__main__”。因此可以通过__name__属性来判断程序运行状态

#模块文件
#文件名称eg8.2.4.py
print('导入的测试模块的输出')           #被导入时会执行,输出信息

name = 'module_test'                 #定义变量
def m_t_pr():                        #模块中的函数定义
    print('模块module_test中m_t_pr()函数')

    
if __name__ == '__main__':       #如果模块没被调用,if为Ture
    m_t_pr()
    print(name)

  一般来说,将模块的额主要功能以实例的形式放在这个if语句中,可以方便测试模块是否能正常运行,或者发现模块的错误