• day14-1 模块定义,导入


    1.定义:

    模块:用来从逻辑上组织Python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件

    (文件名为test.py 对应的模块为test)

    包:用来从逻辑上组织模块,本质就是一个目录(必须带有一个.__init__.py 文件)

    1 name = 'Ri'
    2 
    3 def say_hello(name):
    4     print("hello,", name)
    5     
    moudle_ri.py
    1 import moudel_ri
    2 
    3 print(moudel_ri.name)
    4 print(moudel_ri.say_hello('yang'))
    5 
    6 #Ri
    7 #hello, yang
    8 #None
    main.py

    2.导入方法:

    import moudle_ri 导入一个模块

    import moidle_ri,moudle1.ri 导入多个

    from moudle_ri import *  导入一个模块所有方法。一般不这样使用,假如导入的模块里面有一个test方法,直接test()就可以调用

    如果在之后有test方法,会覆盖掉模块里面的方法。(因为python解释器是逐行解释运行的)

    from moudle_ri import m1,m2,m3 导入多个

    from moudle_ri import logger as lo  可直接用lo调用

    1 from moudel_ri import logger as lo
    2 
    3 lo()
    4 
    5 Reloaded modules: moudel_ri
    6  #in the logger!
    as lo

    3.import本质(路径搜索和搜索路径):

    导入模块的本质是把python在当前文件解释一遍

    import test     想当于  test = ‘test.py' all code

    from test import m 相当于 m = ’m code‘

    import moudle_ri  --------> moudle_ri.py ------->moudle_ri.py 的路径 -----> sys.path

     1 import sys,os
     2 print(sys.path)
     3 x_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
     4 sys.path.insert(0,x_path)
     5 print(sys.path)
     6 
     7 #['C:\day5\moudle_test', 'C:\day5',
     8 #  'C:\day5\venv\Scripts\python35.zip', 
     9 # 'C:\Python\Python35\DLLs', 'C:\Python\Python35\lib',
    10 #  'C:\Python\Python35', 'C:\day5\venv', 'C:\day5\venv\lib\site-packages', 
    11 # 'C:\day5\venv\lib\site-packages\setuptools-39.1.0-py3.5.egg', 'C:\day5\venv\lib\site-packages\pip-10.0.1-py3.5.egg']
    12 #['C:\day5', 'C:\day5\moudle_test', 'C:\day5', 'C:\day5\venv\Scripts\python35.zip',
    13 #  'C:\Python\Python35\DLLs', 'C:\Python\Python35\lib', 'C:\Python\Python35', 'C:\day5\venv', 'C:\day5\venv\lib\site-packages'
    os,sys

    导入包的本质是就是执行包下的.__init__.py 文件

    4.导入优化

     1 # import  moudle_test
     2 from moudle_test import  test   #因为这里有很多地方多需要使用模块下的test,所以用 from moudle_test import  test 免去了重复导入的过程
     3 
     4 
     5 def logger():
     6     #moudle_test.test()
     7     test()
     8     print("in the logger")
     9 
    10 def search():
    11     #moudle_test.test()
    12     test()    
    13     print("in thr search")
    14 
    15 
    16 logger()
    17 search()
    18 
    19 # 假设有两个目录day5,day4.需要在day5里的一个py文件导入day4里面的包里的模块
    20 #import sys,os
    21 #x = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))  # 第一个dirname 到达day5,第二个到达day5的上级目录
    22 #sys.path.append(x)  
    23 #from day4 import package_test
    24 #package_test.test1.test()
    导入优化

    5.模块的分类:

    第一类:标准库(自带)

    第二类:开源模块(第三方库)

    第三类:自定义模块

  • 相关阅读:
    FTPClient FTPFile 找不到符号
    1.4 Spring 依赖注入(DI)和控制反转(IOC)详解
    1.3使用marven Spring项目快速搭建
    1.1Spring历史发展和模块定义
    @Component、@Service、@Controller、@Rrepository说明
    打板炒股方法
    性能测试Jmeter扩展学习-添加自定义函数
    性能测试day07_性能瓶颈和分析
    性能测试day06_需求设计的学习(性能重中之重,思维方向永远重于工具)
    性能监控扩展篇(grafana + influxdb + telegraf)
  • 原文地址:https://www.cnblogs.com/yfjly/p/9803316.html
Copyright © 2020-2023  润新知