zoukankan      html  css  js  c++  java
  • 十一、python模块/包/路径

    什么是模块:.py文件就是模块

    什么是包:包含了__init__.py的模块的文件夹(目录)

    模块和包的作用:就是为了组织代码

    注意:directory 不是包,里面没有__init__.py模块

    一、模块的导入

    使用其他模块里面的函数、变量、类,模块导入

    作用:使用/调用写好的代码

    模块导入的方式:

    from  路径.路径.模块名 import  类名(函数名)

    import  路径.路径.模块名   路径从项目根目录开始

    import  包名

    import ddt
    import json
    import unittest
    from FutureLoan.common.requests_handler import visit
    from FutureLoan.middleware.MiddleHandler import MidInitHandler

    二、模块分类

    内置模块:Python自带的模块,import os

    第三库模块:别人写好的模块,需要安装。pip install requests,import。。。。from····import······

    自定义模块:自己写的模块,通常放在一个包里面。from  包  import 模块

    扩展内容:

    from ... import * ------>表示从模块中导入所有的代码

    from FutureLoan.common.requests_handler import * 
    # 一般不要使用,可能会出现和这个模块里的函数重名

    from .....import sth as other        表示as 重命名,别名

    from FutureLoan.common.requests_handler import visit as visit_new

    打印导入模块路径

    import sys
    print(sys.path)
    
    '''
    ['D:\Program Files (x86)\PyCharm\workspace\Lemon', 'D:\Program Files (x86)\PyCharm\workspace', 'D:\Program Files (x86)\PyCharm\workspace\SmartCampus_web', 'D:\Program Files (x86)\Python38\python38.zip', 'D:\Program Files (x86)\Python38\DLLs', 'D:\Program Files (x86)\Python38\lib', 'D:\Program Files (x86)\Python38', 'D:\Program Files (x86)\Python38\lib\site-packages', 'D:\Program Files (x86)\Python38\lib\site-packages\win32', 'D:\Program Files (x86)\Python38\lib\site-packages\win32\lib', 'D:\Program Files (x86)\Python38\lib\site-packages\Pythonwin']
    '''

    三、__name__

    表示当前文件的模块名

    运行文件、脚本   1.是模块,是特殊的模块  2.我们是通过这个文件运行程序的

    通过模块导入形式运行的,__name__就是文件名、模块名称

    直接运行的文件,脚本,__name__就不是文件名、模块名,是固定的:__main__

    demo.py
    if __name__=='__mian__':
        print('demo')
    
    demo1.py
    if __name__=='__mian__':
        print('demo1')
    
    demo2.py
    if __name__=='__mian__':
        print('demo2')
    
    demo3.py
    from LianXi.test1 import demo
    from LianXi.test1 import demo1
    from LianXi.test1 import demo2
    if __name__=='__mian__':
        print('demo3')                   #运行后的结果为:demo3
    demo.py
    if __name__=='__mian__':
        print('demo')
    
    demo1.py
    if __name__=='__mian__':
        print('demo1')
    
    demo2.py
    if __name__=='__mian__':
        print('demo2')
    
    demo3.py
    from LianXi.test1 import demo
    from LianXi.test1 import demo1
    from LianXi.test1 import demo2
    print('demo3')                   #运行后的结果为:demo demo1  demo2  demo3

    问题1:import 模块.函数 这样写可以吗?

    如:import LianXi.test1.demo.visit
    这样写是不可以的

    导入模块,查找模块的顺序:项目目录–》Python安装目录(lib)----》pip install 第三方模块(site-package)
    导入内置和第三方模块,直接import sth 即可,不需要写路径
    导入自定义模块,通常是从根目录的下面开始找的,需要写明路径
    为了不写路径,可以把自定义模块放到Python安装目录的lib下或者是第三方模块的site-package下,这样可以直接导入模块了

    四、os模块

    import os    主要处理系统相关操作

    主要使用os.path,处理系统路径相关操作

    import os.path  或者 from os import path

    # 获取文件绝对路径(用的最多,因为绝对路径不会变)
    print(os.path.abspath(__file__))
    print(__file__)
    print(__name__)
    
    '''
    D:Program Files (x86)PyCharmworkspaceLemon714.py
    D:/Program Files (x86)/PyCharm/workspace/Lemon/0714.py
    __main__
    '''

    绝对路径:从系统的盘符或者是系统根目录开始

    相对路径:一个路径相对于另一个路径的说法

    __file__:当前文件的路径,可能是绝对路径,也可能是相对路径

    __name__:模块名,没有路径

    import os
    # 获取文件绝对路径
    file_path = os.path.abspath(__file__)
    print("file_path:",file_path)
    # 获取上一级路径
    dir_name = os.path.dirname(file_path)
    # 路径拼接
    print(os.path.join(dir_name,'demo.txt'))
    
    '''
    file_path: D:Program Files (x86)PyCharmworkspaceLemon714.py
    D:Program Files (x86)PyCharmworkspaceLemondemo.txt
    '''

    注意:所有获取到的路径,只是一个路径的表示,并不代表这个文件或者路径真的存在

    # 获取当前工作目录
    print(os.getcwd())
    # 创建一个新的目录(文件夹)
    print(os.mkdir('class_2'))
    # 判断一个路径存不存在
    print(os.path.exists(os.getcwd()))
    # 判断当前路径是否是一个文件
    print(os.path.isfile(os.getcwd()))
    # 判断当前路径是否是一个目录
    print(os.path.isdir(os.getcwd()))

    '''
    D:Program Files (x86)PyCharmworkspaceLemon
    None
    True
    False
    True
    '''
    注意:获取到的路径是一个字符串
  • 相关阅读:
    codeforces B. Strongly Connected City(dfs水过)
    codeforces A. Bayan Bus(简单模拟)
    AC_Dream 1211 Reactor Cooling
    AC_Dream 1224 Robbers(贪心)
    java中DatagramSocket连续发送多个数据报包时产生丢包现象解决方案
    AC_Dream 1216 G
    java模拟一个简单的QQ
    codeforces D. Design Tutorial: Inverse the Problem
    codeforces B. Design Tutorial: Learn from Life
    codeforce A. Design Tutorial: Learn from Math
  • 原文地址:https://www.cnblogs.com/zhangjx2457/p/13640561.html
Copyright © 2011-2022 走看看