绝对导入: 没有.或者..的导入就是绝对导入 绝对导入的路径就是从top-level 一层一层往下数,超过top-level也会报错 相对导入:(推荐使用相对导入) 模块路径由.开的导入,就是相对导入 相对导入不能识别到top-level那一层,只能识别top-level以下层 . 当前 .. 上一层 ... 上上层 top-level: 哪个模块作为主程序直接运行,那模块所在的的目录就是top-level 若实在想导入top-level以上的,就把那个模块放入sys.path里面 然后用import直接导入 python下划线: 以单下划线开头表示保护对象 以双下划线开头表示私有对象 (以下划线开头的变量或函数或类 是不能被模糊导入的 如 * 但是可以精确导入) 模糊导入: from pack02.one import * print(_a,__a) 都报错 精确导入: from pack02 import one print(one._a) print(one.__a) 双下划线开头和双下划线结尾的,都是python里面的特殊标识,有特殊含义 故不要使用双下划线开头和双下划线结尾的标识符 __init__.py是包的初始化文件(不建议在这个文件里面写代码) 导入包中的模块都会先执行__init__.py 一般用来做初始化的动作 若是直接要用__init__里面的东西 可以直接导入: from 包名 import __init__里面的变量名 init.py里面的__all__: 是用来模糊导入的,如 __all__=["one"] 则*代表的就是one.py 若__init__文件里面没有定义__all__,则模糊导入的时候啥都没导进去 __import__:动态导入模块 __import__('os').system等同于: import os os.system __file__:当前文件所在系统的文件路径 import os import sys 寻找文件的上上层 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 把文件的上上层路径加入sys.path sys.path.append(BASE_DIR) os.path.absname(路径) 把传入的路径转换成绝对路径 os.path.dirname(路径) 输出传入路径的上一层 模块打包与发布: 打包步骤: 1.创建模块包 sanle 一定需要一个__init__.py的文件 2.在sanle同级目录下创建 打包配置文件 setup.py(一定要这个名字) set.py文件内容:(此文件要和待打包的文件同一级目录) from setuptools import setup,find_packages setup( #包名 name="sc", #官网 url="http://www.sanchuangedu.cn", #版本号 version="0.0.1", #指定要打包的模块和包 packages=find_packages(), #作者 author="hj", #邮箱 author_email="774599093@qq.com", #依赖(要安装这个包,必须得安装谁 如必须按照xlrd且版本必须在1.1.0以上) install_requires=["xlrd>=1.1.0"], #描述信息 description="this is test_package" ) 3.运行python3 setup.py check进行语法检查(这个是Linux里面检查setup.py是否有语法错误) 4.运行python3 setup.py sdist 生成tar.gz压缩包,会在同级目录下生成一个dist目录 也会生成一个sc.egg-info目录(这是我们的说明目录) 5.安装 :进入dist目录 运行pip3 install sc-0.0.1.tar.gz(pip安装相应的包时也会安装相应的依赖包) 6.然后在任意地方都可以导入运行(没有安装好的话只能在同级下使用) 这个模块会打包到sys.path 目录下,所以删除原地址原码没有用 ,要删除sys.path里面的源码才行 软件的目录结构规范: 系统名称 bin(软件启动脚本目录) conf(配置文件目录) db(数据库目录) lib(公共类库目录) log(日志目录) src(src or core代码逻辑目录) python的异常处理 什么是错误:语法错误 逻辑错误 什么是异常:程序运行过程中,出现的意料之外的错误 python遇到错误异常,程序就终止了 shell脚本遇到错误还会继续运行 常见的异常类:ppt截图 NameError #一般是变量名没有定义 ZeroDivisionError #一般是除数为0 IndentationError #缩进问题 IndexError #下标越界问题 SyntaxError #语法错误 KeyError #字典里面的关键字错误 表示字典没有这个关键字 故推荐使用get()方法 AttributeError #属性错误 表示没有这个属性 ValueError 转换异常 如把“abc”转换成int类型 AssertionError 断言异常 (一般用于测试) a=3 b=4 assert a>b 异常机制 异常捕获: try....except 异常发生,不终止程序。异常发生,做特殊处理 如 try: fp=open("test.txt") except: print("no such test.txt") 异常发生则输出 except捕获错误与触发的错误不一致,程序就捕获不到,然后抛出异常 try: a=1/0 except ValueError as e: 把valueerror这个错误实例化为e e就相当于一个实例 print(e) #这样除法和捕获的错误不一样 所以会报错 except可以有多个 try: a=1/0 except ValueError as e: 把valueerror这个错误实例化为e e就相当于一个实例 这个as e可加可不加 如果想详细描述就加上 print(e) except ZeroDivisionError: priny("除数为0") 所以就会输出除数为0,捕获报错 Exception:是很多报错的父类 若except后面没加东西 故默认为except Exception except 匹配到第一个就退出 如果有父类有子类的话,最好把字类放在父类前面,否则只会抛出父类异常 如果父类异常捕获放在最前面,就会吞噬后面所有的子类异常 else结构 finally结构 else结构 没有任何异常发生的时候执行的 finally结构 不过有没有异常 不管异常有没有被捕获 都会执行 try: print("else test....") except: print("error") else: print("else test end..") finally: print("else test end...") 同时finally结构也可以放在函数里面 即使前面return了 也会执行finally raise 关键字: 手动抛出异常 三种使用方法: raise 本来没有异常 手动抛出异常 异常类型为RuntimeError raise 异常类 指定抛出的异常类型 raise 异常类(说明信息) 指定抛出的异常类型及说明信息 try和except是可以嵌套的 检查ip是否是存活的 ping ip地址 但这个会一直ping下去 故 可以指定只ping一次 :ping -c 1 ip地址
python的super super easy教程 | python下划线
最新推荐文章于 2024-08-08 15:03:50 发布
本文介绍了Python中的模块导入机制,包括绝对导入和相对导入的使用,强调了top-level的概念以及如何处理导入顶级目录模块的方法。同时,文章讲解了下划线的使用规则,特别是单下划线和双下划线的区别。此外,还详细阐述了Python的异常处理,包括错误与异常的区分,常见异常类型,异常捕获与处理机制,以及raise关键字的使用。最后,讨论了模块的打包与发布流程,以及软件目录结构的规范。
摘要由CSDN通过智能技术生成