Python 异常类型捕获( try ... except 用法浅析)——Don‘t bare except (不要让 except 裸奔)

news2024/11/24 13:39:59

不要让 except 裸奔!裸奔很爽,但有隐忧。


  (本笔记适合学完 Python 五大基本数据类型,有了些 Python 基础的 coder 翻阅)


【学习的细节是欢悦的历程】

  • Python 官网:https://www.python.org/

  • Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
    地址:https://lqpybook.readthedocs.io/


  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
            —— 华罗庚


  • My CSDN主页、My HOT博、My Python 学习个人备忘录
  • 好文力荐、 老齐教室
等风来,不如追风去……


不要让 except 裸奔
Don't bare except
(裸奔很爽,但有隐忧)


本文质量分:

91
本文地址: https://blog.csdn.net/m0_57158496/article/details/130997686

CSDN质量分查询入口:http://www.csdn.net/qc


目 录

  • ◆ Don't bare except
    • 1、记下这篇笔记的契机——
    • 2、Python 十大常见错误/异常
      • 2.1 TypeError
      • 2.2 ValueError
      • 2.3 NameError
      • 2.4 IndexError
      • 2.5 KeyError
      • 2.6 ZeroDivisionError
      • 2.7 IOError
      • 2.8 ImportError
      • 2.9 AttributeError
      • 2.10 Keyboardinterrupt
    • 3、自定义异常类型
      • 3.1 自定义异常类型
      • 3.2 触发自定义异常类型
    • 4、完整源码


◆ Don’t bare except


1、记下这篇笔记的契机——


  今天读到齐老师的分享文章“ Python 中的 EAFP 原则——一个编程实践中的原则”,好有感触。因为——

我为图方便,一直在

try:

except Exception as error:


  没有预见到那样做的隐忧。此后,一定谨记齐老教诲,Don’t “bare except”!(不要让 except 裸奔!)

  只要代码有错误捕获,铁定要标明预见到的错误类型。


  要了解 try … except …,不让 except 裸奔,我们得熟悉常见的 Python 错误/异常。下面,我们一起来了解 Python 的十大错误/异常——



回页目录

2、Python 十大常见错误/异常


2.1 TypeError


  类型错误:当操作对象或函数参数使用了 不适当类型的对象时,引发 TypeError 。


例如——

>>> int(sorted)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: int() argument must be a string, a bytes-like object or a real number, not 'builtin_function_or_method'
>>> tuple(45)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> list(789)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'int' object is not iterable
>>>

  • int ,由帮助文档文档可知,参数只可以是数字( int, float )、字符串 str 。

  Convert a number or string to an integer, or return 0 if no arguments. (摘录 help(int) 文本 )


  • tuple ,参数只可以是缺省或者可迭代对象。

  If no argument is given, the constructor returns an empty tuple.
  If iterable is specified the tuple is initialized from iterable’s items.
  If the argument is a tuple, the return value is the same object. (摘录 help(tuple) 文本 )

  • list,只可以不给参数或给出可迭代对象。

  If no argument is given, the constructor creates a new empty list.
  The argument must be an iterable if specified. (摘录 help(list) 文本 )


   试图用函数 sorted 作 int 的参数,必报 TypeError 错误。用 int 作 tuple 、list 的参数,也是必定报错 TypeError 的。

回页目录

2.2 ValueError


  值错误:即操作对象或参数对象值不“合法”。当函数参数对象或操作的对象具有正确的类型但不合法时触发 ValueError 。
如——

int('g')

ValueError: invalid literal for int() with base 10: ‘g’

  如果 int 的参数是字符串,一定要是整型数字字符串,否则报 ValueError 。



回页目录

2.3 NameError


  名字错误:即变量名错误。当尝试访问一个未定义的变量时,会抛出 NameError 异常。

如——


>>> print(name) # 变量 name 未定义
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'name' is not defined
>>>



回页目录

2.4 IndexError


  索引错误:即引用索引超出索引范围。当尝试访问列表、元组或字符串等序列中不存在的索引时引发。
如——

>>> s = '索引错误:即引用索引超出索引范围。当尝试 访问列表、元组或字符串等序列中不存在的索引时引发。'
>>> len(s)
45
>>> s[45]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range
>>> lis = [2, 5, 8]
>>> lis[9]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>> nums = 6, 8, 9, 56, 13
>>> type(nums)
<class 'tuple'>
>>> nums[99]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
>>>



回页目录

2.5 KeyError


  键错误:当尝试访问字典中不存在的键时引发。

>>>
>>> {}[5]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 5
>>> d = {'d': 67, 'e': 99}
>>> d['a']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'a'
>>> d.get('a')
>>> d.get('a', 'None')
'None'
>>> d.get('a', None)
>>> d.get('a', 0)
0
>>> type(d.get('a'))
<class 'NoneType'>
>>> str(d.get('a'))
'None'
>>>

  如命令行模式试炼可见,引用不存在的字典 key 会报错 KeyError 。其实,字典不但可以 dict[key] 引用,也可以 dict.get(key) 引用 key 的 value 。后者引用不存在的 key ,不会报错,默认返回 None 。如果设置第二个参数,字典中有 key ,返回 key 的值;字典中无 key ,则返回第二个参数对象。

  引用字典 key ,dict.get(key) 比 dict[key] 更适宜些。



回页目录

2.6 ZeroDivisionError


  零为除数错误:当尝试除以零时引发。 (数学中,除不可以做除数,除数不可以是零)

>>>
>>> 5/0
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>> d = 5 - 5
>>> 6/d
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ZeroDivisionError: division by zero
>>>



回页目录

2.7 IOError


   I/OError ,输入输出错误。当尝试读取不存在的文件或无法访问文件时引发。

在这里插入图片描述


Python 3.11.1 (main, Dec  7 2022, 05:56:18) [Clang 14.0.6 (https://android.googlesource.com/toolchain/llvm-project 4c603efb0 on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> open('file4.py')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: 'file4.py'
>>>

  我好纳闷了,IOError 到我的环境,怎么就变成了 FileNotFoundError ?

  • 原来——
    在这里插入图片描述
       FileNotFoundError 是 IOError 的一种情形。

  • IOError 官方文档摘录

OS exceptions¶
  The following exceptions are subclasses of OSError, they get raised depending on the system error code.

exception BlockingIOError
  Raised when an operation would block on an object (e.g. socket) set for non-blocking operation. Corresponds to errno EAGAIN, EALREADY, EWOULDBLOCK and EINPROGRESS.

  In addition to those of OSError, BlockingIOError can have one more attribute:
characters_written
  An integer containing the number of characters written to the stream before it blocked. This attribute is available when using the buffered I/O classes from the io module. (摘录于 IOError 官方文档)

IOError 最新版本官方文档地址:https://docs.python.org/3.12/library/exceptions.html?highlight=ioerror#IOError



回页目录

2.8 ImportError


  当尝试导入不存在的模块或包时引发。例如——

~ $ python
Python 3.11.1 (main, Dec  7 2022, 05:56:18) [Clang 14.0.6 (https://android.googlesource.com/toolchain/llvm-project 4c603efb0 on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import mymodule
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'mymodule'
>>>
>>> import pandas
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'pandas'
>>>

注: mymodule ,是没有定义的模块名称,也就是无中生有。pandas ,我的 Python 3.11.10 一直没有 pip install pandas 成功。


   ImportError 在我的 Python 3.6.6 和 3.11.1 上,都是“ModuleNotFoundError” 了。



回页目录

2.9 AttributeError


  属性错误:当尝试访问对象不存在的属性时引发。例如下面故意张冠李戴地整 str 、list 、set 、dict 其没有的方法,无一例外,都引发了 AributeError 。

>>>                                               >>> list.add()                                    Traceback (most recent call last):                  File "<stdin>", line 1, in <module>             AttributeError: type object 'list' has no attribute 'add'
>>> str.append()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>             AttributeError: type object 'str' has no attribute 'append'
>>> set.replace('d', '')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>             AttributeError: type object 'set' has no attribute 'replace'
>>> str.get('x', 0)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'str' has no attribute 'get'
>>> dict.join([])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: type object 'dict' has no attribute 'join'
>>>



回页目录

2.10 Keyboardinterrupt


  键盘中断异常:当用户 Ctrl + C 中断程序执行时引发。

>>>
>>> input('\n请输入:')

请输入:Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyboardInterrupt
>>>


(辣条学长原文 Python 十大常见异常类型)


回页目录

3、自定义异常类型


   Python 除了上面的基本异常类型,还可以定义自己特有的异常类型。

3.1 自定义异常类型


  我定义的异常类型,就是打印出 raise 时实例自定义异常类型时给定的字符串的异常提示。您可以根据需要自行设定,自定义异常类型功用。

class MyException(Exception):
    
    def __init__(self, error_tip):
        self.tip = error_tip

    def __str__(self):
        return self.tip


3.2 触发自定义异常类型


  自定义异常类型,不同于 Python “官方”异常类型,是需要手动 raise 。设定触发条件,用 raise 关键字主动抛出自动义异常类型。



if __name__ == '__main__':
    gray = '\033[2m' # 灰色。
    blue = '\033[34;1m' # 亮蓝。
    red = '\033[31m' # 红色。
    nocolor = '\033[0m' # 还原 python 默认配色。
    print(f"{gray}\n{'='*50}{' 这是个 Python 用户自定义异常示例 ':~^38}{nocolor}")
    
    try:
        name = input(f"\n{'您的姓名:':>7}").strip()
        if name == '梦幻精灵': # 条件达成 raise 殿堂。
            raise MyException(f"{red}\n\n{name:^46}\n{' 这是我的名字!':~^44}\n{nocolor}")
        else:
            print(f"\n\n{blue}{'':~^50}\n{f' {name}, 很高兴认识您!':^38}\n{'':~^50}\n{nocolor}")
    except MyException as error:
        print(error)
    finally: # 关键字 finally 之后的代码块,总是要招待的。
        print(f"{gray}\n{' 这是个 Python 用户自定义异常示例 ':~^38}\n{'='*50}\n{nocolor}")

  • 触发自定义异常
    在这里插入图片描述
    在这里插入图片描述

再列举一个触发自定义异常类型的实例——


    print(f"{gray}\n{'='*50}{' 这是个 Python 用户自定义异常示例 ':~^38}{nocolor}")
    try:
        num = input(f"\n{'请输入1~100的数字:':8>}")
    
        if not num.isdigit():
            raise MyException(f"{red}\n{' 请数字!':~^46}\n{nocolor}")
        elif int(num) < 1 or int(num) > 100:
            raise MyException(f"{red}\n{' 您输入的数字超出范围!':~^39}\n{nocolor}")
        else:
            print(f"{green}\n{f' {num},输入正确。':~^44}\n{nocolor}")

    except MyException as error:
        print(error)
    finally:
        print(f"{gray}\n{' 这是个 Python 用户自定义异常示例 ':~^38}\n{'='*50}\n{nocolor}")

  • 代码运行效果截屏图片
    在这里插入图片描述
    在这里插入图片描述

其实,也可以把超出范围的异常捕获分开——


        elif int(num) < 1 or int(num) > 100:
            raise MyException(f"{red}\n{' 您输入的数字超出范围!':~^39}\n{nocolor}")


        elif int(num) < 1:
            raise MyException(f"{red}\n{' 您输入的数字超出下限1!':~^39}\n{nocolor}")
        elif int(num) > 100:
            raise MyException(f"{red}\n{' 您输入的数字超出上限100!':~^39}\n{nocolor}")

  • 代码运行效果截屏图片
    在这里插入图片描述
(关于自定义异常类型,请点击 Python 用户自定义异常查阅。)

  • 关于颜色控制字符串,请点击下边链接翻阅——
    神奇的 \033 ,让打印出彩
    ( 2595 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122953893
    点赞:3   踩 :0  收藏:7  打赏:0  评论:0
    本篇博文笔记于 2022-02-15 23:01:54 首发,最晚于 2022-02-20 13:24:21 修改。



回页目录

4、完整源码

#!/sur/bin/nve python
# coding: utf-8

class MyException(Exception):
    
    def __init__(self, error_tip):
        self.tip = error_tip

    def __str__(self):
        return self.tip


if __name__ == '__main__':
    gray = '\033[2m' # 灰色。
    blue = '\033[34;1m' # 亮蓝。
    green = '\033[32m' # 绿色。
    red = '\033[31m' # 红色。
    nocolor = '\033[0m' # 还原 python 默认配色。
    
    '''# raise one
    print(f"{gray}\n{'='*50}{' 这是个 Python 用户自定义异常示例 ':~^38}{nocolor}")
    
    try:
        name = input(f"\n{'您的姓名:':>7}").strip()
        if name == '梦幻精灵':
            raise MyException(f"{red}\n\n{name:^46}\n{' 这是我的名字!':~^43}\n{nocolor}")
        else:
            print(f"\n\n{blue}{'':~^50}\n{f' {name}, 很高兴认识您!':^38}\n{'':~^50}\n{nocolor}")
    except MyException as error:
        print(error)
    finally:
        print(f"{gray}\n{' 这是个 Python 用户自定义异常示例 ':~^38}\n{'='*50}\n{nocolor}")'''


    # raise two
    print(f"{gray}\n{'='*50}{' 这是个 Python 用户自定义异常示例 ':~^38}{nocolor}")
    try:
        num = input(f"\n{'请输入1~100的数字:':8>}")
    
        if not num.isdigit():
            raise MyException(f"{red}\n{' 请输入数字!':~^44}\n{nocolor}")
        elif int(num) < 1:
            raise MyException(f"{red}\n{' 您输入的数字超出下限1!':~^39}\n{nocolor}")
        elif int(num) > 100:
            raise MyException(f"{red}\n{' 您输入的数字超出上限100!':~^39}\n{nocolor}")
        else:
            print(f"{green}\n{f' {num},输入正确。':~^44}\n{nocolor}")

    except MyException as error:
        print(error)
    finally:
        print(f"{gray}\n{' 这是个 Python 用户自定义异常示例 ':~^38}\n{'='*50}\n{nocolor}")


回页首

上一篇:  冒泡排序小练习(接收键盘录入(含输入字符串排错)字符串,拆分、转整、冒泡排序(递减)输出)
下一篇: 

我的HOT博:

  本次共计收集 214 篇博文笔记信息,总阅读量 34.60w,平均阅读量 1616。已生成 22 篇阅读量不小于 3000 的博文笔记索引链接。数据采集于 2023-05-28 05:47:47 完成,用时 4 分 31.83 秒。


  1. 让QQ群昵称色变的神奇代码
    ( 55081 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122566500
    点赞:24   踩 :0  收藏:81  打赏:0  评论:17
    本篇博文笔记于 2022-01-18 19:15:08 首发,最晚于 2022-01-20 07:56:47 修改。
  2. ChatGPT国内镜像站初体验:聊天、Python代码生成等
    ( 52916 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/129035387
    点赞:125   踩 :0  收藏:788  打赏:0  评论:75
    本篇博文笔记于 2023-02-14 23:46:33 首发,最晚于 2023-03-22 00:03:44 修改。
  3. pandas 数据类型之 DataFrame
    ( 8415 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124525814
    点赞:6   踩 :0  收藏:26  打赏:0  评论:0
    本篇博文笔记于 2022-05-01 13:20:17 首发,最晚于 2022-05-08 08:46:13 修改。
  4. 罗马数字转换器|罗马数字生成器
    ( 6486 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122592047
    点赞:0   踩 :0  收藏:1  打赏:0  评论:0
    本篇博文笔记于 2022-01-19 23:26:42 首发,最晚于 2022-01-21 18:37:46 修改。
  5. Python字符串居中显示
    ( 6340 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122163023
    点赞:1   踩 :0  收藏:6  打赏:0  评论:1
    本篇博文笔记于 2021-12-26 23:35:29 发布。
  6. 个人信息提取(字符串)
    ( 6001 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124244618
    点赞:1   踩 :0  收藏:9  打赏:0  评论:0
    本篇博文笔记于 2022-04-18 11:07:12 首发,最晚于 2022-04-20 13:17:54 修改。
  7. 斐波那契数列的递归实现和for实现
    ( 5330 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122355295
    点赞:4   踩 :0  收藏:2  打赏:0  评论:8
    本篇博文笔记于 2022-01-06 23:27:40 发布。
  8. 练习:字符串统计(坑:f‘string‘报错)
    ( 4912 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121723096
    点赞:0   踩 :0  收藏:1  打赏:0  评论:0
    本篇博文笔记于 2021-12-04 22:54:29 发布。
  9. 练习:尼姆游戏(聪明版/傻瓜式•人机对战)
    ( 4653 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121645399
    点赞:14   踩 :0  收藏:42  打赏:0  评论:0
    本篇博文笔记于 2021-11-30 23:43:17 发布。
  10. Python列表(list)反序(降序)的7种实现方式
    ( 4492 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/128271700
    点赞:4   踩 :0  收藏:16  打赏:0  评论:8
    本篇博文笔记于 2022-12-11 23:54:15 首发,最晚于 2023-03-20 18:13:55 修改。
  11. 回车符、换行符和回车换行符
    ( 4472 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123109488
    点赞:0   踩 :0  收藏:2  打赏:0  评论:0
    本篇博文笔记于 2022-02-24 13:10:02 首发,最晚于 2022-02-25 20:07:40 修改。
  12. python清屏
    ( 4463 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/120762101
    点赞:0   踩 :0  收藏:5  打赏:0  评论:0
    本篇博文笔记于 2021-10-14 13:47:21 发布。
  13. 密码强度检测器
    ( 3945 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121739694
    点赞:1   踩 :0  收藏:4  打赏:0  评论:0
    本篇博文笔记于 2021-12-06 09:08:25 首发,最晚于 2022-11-27 09:39:39 修改。
  14. 罗马数字转换器(用罗马数字构造元素的值取模实现)
    ( 3857 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122608526
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2022-01-20 19:38:12 首发,最晚于 2022-01-21 18:32:02 修改。
  15. 练习:生成100个随机正整数
    ( 3801 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/122558220
    点赞:1   踩 :0  收藏:4  打赏:0  评论:0
    本篇博文笔记于 2022-01-18 13:31:36 首发,最晚于 2022-01-20 07:58:12 修改。
  16. 练习:班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)
    ( 3623 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124424935
    点赞:1   踩 :0  收藏:2  打赏:0  评论:0
    本篇博文笔记于 2022-04-26 12:46:25 首发,最晚于 2022-04-27 21:22:07 修改。
  17. 我的 Python.color() (Python 色彩打印控制)
    ( 3516 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123194259
    点赞:2   踩 :0  收藏:7  打赏:0  评论:0
    本篇博文笔记于 2022-02-28 22:46:21 首发,最晚于 2022-03-03 10:30:03 修改。
  18. 练习:仿真模拟福彩双色球——中500w巨奖到底有多难?跑跑代码就晓得了。
    ( 3283 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/125415626
    点赞:3   踩 :0  收藏:4  打赏:0  评论:3
    本篇博文笔记于 2022-06-22 19:54:20 首发,最晚于 2022-06-23 22:41:33 修改。
  19. 聊天消息敏感词屏蔽系统(字符串替换 str.replace(str1, *) )
    ( 3155 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/124539589
    点赞:3   踩 :0  收藏:2  打赏:0  评论:3
    本篇博文笔记于 2022-05-02 13:02:39 首发,最晚于 2022-05-21 06:10:42 修改。
  20. Linux 脚本文件第一行的特殊注释符(井号和感叹号组合)的含义
    ( 3111 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/123087606
    点赞:0   踩 :0  收藏:4  打赏:0  评论:3
    本篇博文笔记于 2022-02-23 13:08:07 首发,最晚于 2022-04-04 23:52:38 修改。
  21. 练习:求列表(整数列表)平衡点
    ( 3052 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/121737612
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2021-12-05 23:28:10 发布。
  22. random.sample()将在python 3.9x后续版本中被弃用
    ( 3044 阅读)
    博文地址:https://blog.csdn.net/m0_57158496/article/details/120657230
    点赞:0   踩 :0  收藏:0  打赏:0  评论:0
    本篇博文笔记于 2021-10-08 18:35:09 发布。
推荐条件 阅读量突破三千
(更多热博,请点击蓝色文字跳转翻阅)

回页首


老齐漫画头像

精品文章:

  • 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


回页首

◆ Python 入门指南【Python 3.6.3】


好文力荐:

  • 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯
  • 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归

CSDN实用技巧博文:

  • 8个好用到爆的Python实用技巧
  • python忽略警告
  • Python代码编写规范
  • Python的docstring规范(说明文档的规范写法)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/610054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

大模型时代的来临:AI如何改变人类生活和经济?

大模型时代的来临&#xff1a;AI如何改变人类生活和经济&#xff1f; 第三次AI浪潮之下&#xff0c;人类面临着前所未有的机遇和挑战。随着人工智能的快速发展&#xff0c;我们开始高度重视其可能带来的负面影响。 最近&#xff0c;AI领域再次引起了全球范围内的关注&#xff0…

机器视觉_HALCON_图像采集接口编程手册_1.第一章节介绍

文章目录 一、前言二、图像采集接口编程第一章2.1 HALCON的通用图像采集接口2.2 图像采集基础2.3 同步抓取 vs. 异步抓取⭐2.4 缓冲策略⭐2.5 A/D转换和多路复用2.6 HALCON图像采集算子⭐2.6.1 open_framgrabber2.6.2 close_framegrabber2.6.3 info_framegrabber2.6.4 grab_ima…

chatgpt赋能python:Python均值函数介绍

Python均值函数介绍 Python是一种高级编程语言&#xff0c;非常适合数据处理和分析。在数据分析中&#xff0c;均值通常被用来代表一组数据的平均水平。Python提供了多种方式来计算均值&#xff0c;其中最常用的是使用均值函数来计算。 什么是均值函数&#xff1f; 均值函数…

高通 Camera HAL3:添加一个VendorTag

一.概述 MetadataTag在CamX中有两种体现&#xff0c;可以是预定义的AndroidTag或是自定义VendorTag VendorTag在HAL中定义&#xff0c;用来支持Camx和Chi所需的额外metadata VendorTag类型有三种&#xff1a; hwVendorTagInfocomponentvendortaginfocoreVendorTagInfo 根据不…

「HTML和CSS入门指南」img 标签详解

什么是 img 标签? 在 HTML 中,img 标签用于插入图像。它是一个独立的标签,没有结束标记,并且可以设置多种属性来改变图片的大小、位置、样式等。使用 img 标记可以帮助您更好地展示您的内容,并让浏览器更快地加载网页。 img 标签的基本语法 以下是 img 标签的基本语法: …

卡尔曼滤波与组合导航原理笔记(一)卡尔曼滤波方程的推导 第二部分

文章目录 三、卡尔曼滤波1、随机系统状态空间模型2、状态预测3、状态量测4、增益矩阵K与状态估计5、Kalman滤波公式汇总6、Kalman滤波流程图1.划分为左右两部分&#xff08;一阶矩和二阶矩&#xff09;2.划分为上下两部分&#xff08;时间更新、量测更新&#xff09; 7、Kalman…

ESP8266开发阶段无线WIFI本地烧录升级 -- FOTA

【本文发布于https://blog.csdn.net/Stack_/article/details/130448713&#xff0c;未经允许不得转载&#xff0c;转载须注明出处】 前言 因为正在DIY一个WiFi计量插座&#xff0c;采用非隔离的方案&#xff0c;烧录时要拔掉220V插头&#xff0c;测试时要拔掉USB线&#xff0c;…

php获取文件的权限信息(获取权限信息、返回字符串涵义、二进制的转换方式、权限修改)

php获取文件的权限信息 说明1.获取文件的权限信息2.返回文件权限字符的解读3.转为二进制权限4.修改权限 说明 &#xff08;图片来源于网络&#xff09; 文件权限是指文件或目录对用户和其他进程的访问许可。在 Unix 和 Linux 系统中&#xff0c;文件和目录都有三个权限&#x…

高通 Camera HAL3:CamX、Chi-CDK 详解

网上关于高通CameraHAL3的介绍文档不多&#xff0c;之前做高通CameraHAL3的一些收集、总结&#xff0c;杂乱了一点&#xff0c;将就着看吧。 一.初步认知 高通CameraHAL3的架构很庞大&#xff0c;代码量也很巨大。 先对CamX、Chi-CDK的关键术语、目录等有个初步认知 1.1 术…

Servlet与Mybatis-2

过滤器 过滤器是一种代码重用的技术&#xff0c;它可以改变 HTTP 请求的内容&#xff0c;响应&#xff0c;及 header 信息。过滤器通常不产生响应或像 servlet 那样对请求作出响应&#xff0c;而是修改或调整到资源的请求&#xff0c;修改或调整来自资源的响应。 作用&#x…

Linux基础篇 使用SSH远程Ubuntu-03

目录 1.安装ssh服务器 2.启用SSH服务器 3.查看SSH服务运行状态 4.在Windows的CMD下进行验证 在默认情况下&#xff0c;外部设备是无法通过SSH远程Ubuntu的&#xff0c;因为Ubuntu没有启用ssh服务。 说明&#xff1a;当前Ubuntu系统为20.04 1.安装ssh服务器 sudo apt-get …

chatgpt赋能python:Python在一组数据中抽取数的方法

Python在一组数据中抽取数的方法 Python是一种非常流行的编程语言&#xff0c;因为它简单易学&#xff0c;可读性高&#xff0c;功能强大&#xff0c;适用于各种不同的应用场景。在数据科学领域&#xff0c;Python也非常受欢迎&#xff0c;因为它拥有广泛的数据处理和分析库。…

【Go LeetDay】总目录(1~88)

Leetcode Golang Day1~10 Golang每日一练(leetDay0001) 1. 两数之和 Two Sum 2. 两数相加 Add Two Numbers 3. 无重复字符的最长子串 Longest-substring-without-repeating-characters Golang每日一练(leetDay0002) 4. 寻找两个正序数组的中位数 Median of two sorted arra…

使用RP2040自制的树莓派pico—— [1/100] 烧录micropython固件

目录 开发环境烧录模式简介固件下载固件烧录验证阶段micropython初步了解 开发环境 软件&#xff1a;Thonny 烧录固件&#xff1a;micropython 烧录模式简介 正常插上电就启动&#xff0c;这是树莓派pico开发板的正常启动模式。 如果按住 bootset 按键再插上数据线&#xf…

Vue 设计模式

一、什么是设计模式&#xff1f; 设计模式是一套被反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。它是为了可重用代码&#xff0c;让代码更容易的被他人理解并保证代码的可靠性。 设计模式实际上是“拿来主义”在软件领域的贯彻实践&#xff0c;它是一套现成的工…

Linux下配置Qt6安装开发环境

安装JDK 选择自己定义JDK安装路径 点击如下图按钮 安装SDK 提示TLS初始化失败 由于HTTPS问题造成无法下载,暂用Android Studio来安装Android SDK 成功安装SDK 安装NDK与命令行工具 正在下载NDK及命令行工具 NDK与工具下载完成 配置QT的Android SDK路径 配置NDK路径 选择ND…

卡尔曼滤波与组合导航原理笔记(一)卡尔曼滤波方程的推导 第一部分

文章目录 一、滤波的基本概念1、传统数字滤波器2、现代控制中的状态观测器3、最优估计的含义4、温度估计的例子1.问题描述2.分析 二、递推最小二乘 课程链接&#xff1a;https://www.bilibili.com/video/BV11K411J7gp/?p1 参考书目&#xff1a;《捷联惯导算法与组合导航原理》…

日志框架 --- Log4j

文章目录 1. 什么是log4j2. log4j的日志级别3. 日志层级4. log4j使用实例4.1 添加log4j依赖4.2 添加配置文件4.3 编写代码4.4 测试代码4.5 运行结果 5. 配置文件5.1 Logger 日志记录器5.2 Appender 附加器5.3 Layout 日志格式化器 6. 整体演示6.1 配置文件6.2 运行结果 1. 什么…

Linux学习(四)Docker构建Python_Web环境

目录 Docker 安装Docker 使用Docker 启停Docker 换源Docker 镜像Docker 容器Docker 创建内部网段Docker Python 镜像创建Docker MySQL 镜像创建Docker 补充 Docker 是一个开源的应用容器引擎&#xff0c;Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器…

vulnhub靶场渗透之DC-4渗透教程(超级详细)

vulnhub靶场渗透之DC-4渗透教程目录 0x01靶机概述 0x02靶场环境搭建 0x03靶机信息发现 0x04靶机渗透过程 0x05靶机提权 0x06渗透实验总结 0x01靶机概述 靶机基本信息&#xff1a; 靶机下载链接https://download.vulnhub.com/dc/DC-4.zip作者DCAU发布日期2019年4月…