python 66 个冷知识 0720
66个有趣的Python冷知识
-
一行反转列表
- 使用切片一行反转列表:
reversed_list = my_list[::-1]
- 使用切片一行反转列表:
-
统计文件单词数量
- 使用
collections.Counter统计文件中每个单词的数量:from collections import Counter; with open('file.txt') as f: word_count = Counter(f.read().split())
- 使用
-
生成斐波那契数列
- 一行生成斐波那契数列:
fibonacci = lambda n: n if n <= 1 else fibonacci(n-1) + fibonacci(n-2)
- 一行生成斐波那契数列:
-
Python之禅
- 在Python解释器中输入
import this会显示Python之禅。
- 在Python解释器中输入
-
检查对象类型
- 使用
isinstance()检查对象类型:is_instance = isinstance(123, int)
- 使用
-
命名元组字段
collections.namedtuple创建的命名元组可以用点号访问字段:Point = namedtuple('Point', 'x y'); p = Point(1, 2); print(p.x, p.y)
-
字符串多行拼接
- 使用括号自动拼接多行字符串:
long_string = ("This is a very long string " "that spans multiple lines " "but is still considered one string.")
- 使用括号自动拼接多行字符串:
-
多次装饰器
- 一个函数可以被多个装饰器装饰:
@decorator1 @decorator2 def func(): pass
- 一个函数可以被多个装饰器装饰:
-
深拷贝
- 使用
copy模块进行深拷贝:import copy; deep_copied_list = copy.deepcopy(original_list)
- 使用
-
反向字符串
- 使用
''.join(reversed(string))反转字符串:reversed_string = ''.join(reversed('hello'))
- 使用
-
正则表达式搜索
- 使用
re.search()搜索正则表达式:import re; match = re.search(r'\d+', 'abc123')
- 使用
-
自定义异常处理
- 自定义异常处理可以提供更详细的信息:
class CustomError(Exception): pass; raise CustomError("An error occurred")
- 自定义异常处理可以提供更详细的信息:
-
捕获多种异常
- 使用元组捕获多种异常:
try: ... except (TypeError, ValueError) as e: ...
- 使用元组捕获多种异常:
-
复数运算
- Python内置支持复数运算:
z = (1 + 2j) * (3 + 4j)
- Python内置支持复数运算:
-
压缩和解压文件
- 使用
shutil模块压缩和解压文件:import shutil; shutil.make_archive('archive', 'zip', 'directory_path'); shutil.unpack_archive('archive.zip')
- 使用
-
执行多行代码
- 使用
exec()执行多行代码:exec("a = 1\nb = 2\nprint(a + b)")
- 使用
-
检查对象是否可调用
- 使用
callable()检查对象是否可调用:is_callable = callable(print)
- 使用
-
字典推导式
- 使用字典推导式创建字典:
squared_dict = {x: x*x for x in range(10)}
- 使用字典推导式创建字典:
-
列表嵌套解析
- 列表嵌套解析生成平坦列表:
flat_list = [item for sublist in nested_list for item in sublist]
- 列表嵌套解析生成平坦列表:
-
元素频率计数
- 使用
collections.Counter统计元素频率:from collections import Counter; freq = Counter(my_list)
- 使用
-
类型注解
- 使用类型注解提高代码可读性:
def greet(name: str) -> str: return 'Hello ' + name
- 使用类型注解提高代码可读性:
-
枚举类型
- 使用
Enum创建枚举类型:from enum import Enum; class Color(Enum): RED = 1; GREEN = 2; BLUE = 3
- 使用
-
上下文管理器
- 自定义上下文管理器:
class MyContext: def __enter__(self): ...; def __exit__(self, exc_type, exc_val, exc_tb): ...
- 自定义上下文管理器:
-
性能计时器
- 使用
timeit模块测量代码性能:import timeit; exec_time = timeit.timeit('sum(range(1000))', number=1000)
- 使用
-
多线程编程
- 使用
threading模块实现多线程:import threading; t = threading.Thread(target=func); t.start()
- 使用
-
多进程编程
- 使用
multiprocessing模块实现多进程:import multiprocessing; p = multiprocessing.Process(target=func); p.start()
- 使用
-
内置迭代器
- 使用
iter()和next()创建自定义迭代器:iterator = iter([1, 2, 3]); next(iterator)
- 使用
-
自定义装饰器
- 使用
functools.wraps保留原函数元数据:import functools; def decorator(func): @functools.wraps(func) def wrapper(*args, **kwargs): ...
- 使用
-
检查对象大小
- 使用
sys.getsizeof()检查对象占用的内存大小:import sys; size = sys.getsizeof(my_object)
- 使用
-
内存视图对象
- 使用
memoryview操作二进制数据:data = memoryview(b'abc')
- 使用
-
命令行参数解析
- 使用
argparse模块解析命令行参数:import argparse; parser = argparse.ArgumentParser(); parser.add_argument('--arg'); args = parser.parse_args()
- 使用
-
生成器表达式
- 使用生成器表达式节省内存:
gen = (x*x for x in range(10))
- 使用生成器表达式节省内存:
-
无序集合
- 使用
frozenset创建不可变集合:fs = frozenset([1, 2, 3])
- 使用
-
字符串模板
- 使用
string.Template进行字符串模板替换:from string import Template; t = Template('$who likes $what'); s = t.substitute(who='tim', what='kung pao')
- 使用
-
对象属性访问
- 使用
getattr()动态访问对象属性:value = getattr(obj, 'attribute')
- 使用
-
动态设置属性
- 使用
setattr()动态设置对象属性:setattr(obj, 'attribute', value)
- 使用
-
删除对象属性
- 使用
delattr()删除对象属性:delattr(obj, 'attribute')
- 使用
-
路径是否绝对
- 使用
os.path.isabs()检查路径是否绝对路径:import os; is_abs = os.path.isabs('/path/to/file')
- 使用
-
获取文件扩展名
- 使用
os.path.splitext()获取文件扩展名:import os; ext = os.path.splitext('file.txt')[1]
- 使用
-
行迭代文件
- 使用
fileinput模块逐行迭代文件:import fileinput; for line in fileinput.input('file.txt'):
- 使用
-
压缩数据
- 使用
zlib模块压缩数据:import zlib; compressed = zlib.compress(b'data')
- 使用
-
解压数据
- 使用
zlib模块解压数据:import zlib; decompressed = zlib.decompress(compressed)
- 使用
-
计算CRC32
- 使用
zlib.crc32()计算CRC32校验和:import zlib; crc = zlib.crc32(b'data')
- 使用
-
哈希对象
- 使用
hashlib模块计算哈希值:import hashlib; hash_obj = hashlib.sha256(b'data'); hash_hex = hash_obj.hexdigest()
- 使用
-
生成随机密码
- 使用
secrets模块生成安全随机密码:import secrets; password = secrets.token_urlsafe(16)
- 使用
-
生成随机整数
- 使用
secrets.randbelow()生成安全随机整数:import secrets; number = secrets.randbelow(100)
- 使用
-
UUID生成
- 使用
uuid模块生成唯一标识符:import uuid; unique_id = uuid.uuid4()
- 使用
-
双端队列
- 使用
collections.deque实现高效的双端队列操作:from collections import deque; d = deque([1, 2, 3]); d.appendleft(0); d.append(4)
- 使用
-
序列化对象
- 使用
pickle模块序列化对象:import pickle; serialized = pickle.dumps(obj)
- 使用
-
反序列化对象
- 使用
pickle模块反序列化对象:import pickle; obj = pickle.loads(serialized)
- 使用
-
深拷贝对象
- 使用
copy.deepcopy()进行深拷贝:import copy; new_obj = copy.deepcopy(old_obj)
- 使用
-
按位取反
- 使用
~运算符进行按位取反:inverted = ~value
- 使用
-
按位与
- 使用
&运算符进行按位与:result = value1 & value2
- 使用
-
按位或
- 使用
|运算符进行按位或:result = value1 | value2
- 使用
-
按位异或
- 使用
^运算符进行按位异或:result = value1 ^ value2
- 使用
-
位左移
- 使用
<<运算符进行位左移:shifted = value << 2
- 使用
-
位右移
- 使用
>>运算符进行位右移:shifted = value >> 2
- 使用
-
高精度浮点数
- 使用
decimal.Decimal进行高精度浮点数运算:from decimal import Decimal; high_precision = Decimal('0.1') + Decimal('0.2')
- 使用
-
操作日期
- 使用
datetime.timedelta操作日期:from datetime import datetime, timedelta; tomorrow = datetime.now() + timedelta(days=1)
- 使用
-
获取日期差
- 使用
datetime.date获取日期差:from datetime import date; delta = date(2022, 1, 1) - date(2021, 1, 1)
- 使用
-
生成随机日期
- 使用
random.randint()生成随机日期:import random; from datetime import datetime, timedelta; random_date = datetime.now() + timedelta(days=random.randint(0, 365))
- 使用
-
同步队列
- 使用
queue.Queue实现线程安全的同步队列:import queue; q = queue.Queue(); q.put(item); item = q.get()
- 使用
-
优先级队列
- 使用
queue.PriorityQueue实现优先级队列:import queue; pq = queue.PriorityQueue(); pq.put((priority, item)); item = pq.get()
- 使用
-
定时器
- 使用
threading.Timer实现定时器:import threading; t = threading.Timer(5.0, func); t.start()
- 使用
-
记录程序运行日志
- 使用
logging模块记录程序运行日志:import logging; logging.basicConfig(level=logging.INFO); logging.info('This is an info message')
- 使用
-
模块缓存
- Python会缓存导入的模块,可以通过
sys.modules查看缓存的模块:import sys; cached_modules = sys.modules
- Python会缓存导入的模块,可以通过
相关文章:
python 66 个冷知识 0720
66个有趣的Python冷知识 一行反转列表 使用切片一行反转列表:reversed_list my_list[::-1] 统计文件单词数量 使用 collections.Counter 统计文件中每个单词的数量:from collections import Counter; with open(file.txt) as f: word_count Counter(f…...
利用PyTorch进行模型量化
利用PyTorch进行模型量化 目录 利用PyTorch进行模型量化 一、模型量化概述 1.为什么需要模型量化? 2.模型量化的挑战 二、使用PyTorch进行模型量化 1.PyTorch的量化优势 2.准备工作 3.选择要量化的模型 4.量化前的准备工作 三、PyTorch的量化工具包 1.介…...
Android 小白菜鸟从入门到精通教程
前言 Android一词最早出现于法国作家利尔亚当(Auguste Villiers de l’Isle-Adam)在1886年发表的科幻小说《未来的夏娃》(L’ve future)中。他将外表像人的机器起名为Android。从初学者的角度出发,通过通俗易懂的语言…...
php相关
php相关 借鉴了小迪安全以及各位大佬的博客,如果一切顺利,会不定期更新。 如果感觉不妥,可以私信删除。 默认有php基础。 文章目录 php相关1. php 缺陷函数1. 与2. MD53. intval()4. preg_match() 2. php特性1. php字符串解析特性2. 杂…...
uniapp上传功能用uni-file-picker实现
文章目录 html代码功能实现css样式代码 html代码 <uni-file-pickerselect"onFileSelected"cancel"onFilePickerCancel"limit"1"class"weightPage-upload-but"file-mediatype"image"></uni-file-picker><imag…...
【PPT笔记】1-3节 | 默认设置/快捷键/合并形状
文章目录 说明笔记1 默认设置1.1 OFFICE版本选择1.1.1 Office某某数字专属系列1.1.2 Office3651.1.3 产品信息怎么看 1.2 默认设置1.2.1 暗夜模式1.2.2 无限撤回1.2.3 自动保存(Office2013版本及以上)1.2.4 图片压缩1.2.5 字体嵌入1.2.6 多格式导出1.2.7…...
Qt中的高分辨率及缩放处理
写在前面 使用Qt开发界面客户端,需要考虑不同分辨率及缩放对UI界面的影响,否则会影响整体的交互使用。 问题 高分辨率/缩放设备上图片/图标模糊 若不考虑高分辨及缩放处理,在高分辨率/缩放设备上,软件中的图片、图标可能会出现…...
电机泵盖机器人打磨去毛刺,选德国进口高精度主轴
机器人打磨去毛刺该如何选择主轴呢?首先我们需要考虑的是工件的材质,电机泵盖通常使用铸铁、不锈钢、合金钢等金属材质,因此这类保持的硬度较高,一般会选择功率、扭矩较大的德国进口高精度主轴Kasite 4060 ER-S。 Kasite 4060 ER-…...
Android init.rc各阶段的定义和功能
Android开机优化系列文档-CSDN博客 Android 14 开机时间优化措施汇总-CSDN博客Android 14 开机时间优化措施-CSDN博客根据systrace报告优化系统时需要关注的指标和优化策略-CSDN博客Android系统上常见的性能优化工具-CSDN博客Android上如何使用perfetto分析systrace-CSDN博客A…...
.net dataexcel 脚本公式 函数源码
示例如: ScriptExec(""sum(1, 2, 3, 4)"") 结果等于10 using Feng.Excel.Builder; using Feng.Excel.Collections; using Feng.Excel.Interfaces; using Feng.Script.CBEexpress; using Feng.Script.Method; using System; using System.Collections.Gen…...
HarmonyOS ArkUi @CustomDialog 和promptAction.openCustomDialog踩坑以及如何选择
CustomDialog 内使用Link,如何正常使用 错误使用方式: 定义一个函数,在函数内使用弹窗,如下面代码showDialog: 这种使用方式,无法在自定义的CustomDialog内使用 Link,进行父子双向绑定&#x…...
Python面试题:详细讲解Python的多线程与多进程编程问题
在 Python 中,多线程和多进程编程是并发编程的两种主要方式,用于提高程序的执行效率和响应性。虽然它们都可以实现并发执行,但它们的工作原理和适用场景有所不同。以下是对 Python 多线程和多进程编程的详细讲解,包括它们的工作原…...
前端Canvas入门——用canvas写五子棋?
前言 五子棋的实现其实不难,因为本身就是一个很小的游戏。 至于画线什么的,其实很简单,都是lineTo(),moveTo()就行了。 难的在于——怎么让棋子落入到指定的格子上,怎么判断连子胜利。 当然啦,这部分是…...
[PaddlePaddle飞桨] PaddleDetection-通用目标检测-小模型部署
PaddleDetection的GitHub项目地址 推荐环境: PaddlePaddle > 2.3.2 OS 64位操作系统 Python 3(3.5.1/3.6/3.7/3.8/3.9/3.10),64位版本 pip/pip3(9.0.1),64位版本 CUDA > 10.2 cuDNN > 7.6pip下载指令: python -m pip i…...
Golang | Leetcode Golang题解之第239题滑动窗口最大值
题目: 题解: func maxSlidingWindow(nums []int, k int) []int {n : len(nums)prefixMax : make([]int, n)suffixMax : make([]int, n)for i, v : range nums {if i%k 0 {prefixMax[i] v} else {prefixMax[i] max(prefixMax[i-1], v)}}for i : n - 1…...
深度解析:在 React 中实现类似 Vue 的 KeepAlive 组件
在前端开发中,Vue 的 keep-alive 组件是一个非常强大的工具,它可以在组件切换时缓存组件的状态,避免重新渲染,从而提升性能。那么,如何在 React 中实现类似的功能呢?本文将带你深入探讨,并通过代…...
2024-7-20 IT新闻
目录 微软全球IT系统故障 中国量子计算产业峰会召开 其他IT相关动态 微软全球IT系统故障 后续处理: 微软和CrowdStrike均迅速响应,发布了相关声明并部署了修复程序。CrowdStrike撤销了有问题的软件更新,以帮助用户恢复系统正常运作。微软也…...
前端组件化开发:以Vue自定义底部操作栏组件为例
摘要 随着前端技术的不断演进,组件化开发逐渐成为提升前端开发效率和代码可维护性的关键手段。本文将通过介绍一款Vue自定义的底部操作栏组件,探讨前端组件化开发的重要性、实践过程及其带来的优势。 一、引言 随着Web应用的日益复杂,传统的…...
11.斑马纹列表 为没有文本的链接设置样式
斑马纹列表 创建一个背景色交替的条纹列表。 使用 :nth-child(odd) 或 :nth-child(even) 伪类选择器,根据元素在一组兄弟元素中的位置,对匹配的元素应用不同的 background-color。 💡 提示:你可以用它对其他 HTML 元素应用不同的样式,如 <div>、<tr>、<p&g…...
【算法】跳跃游戏II
难度:中等 题目: 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: 0 < j < nums[…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
基于FPGA的PID算法学习———实现PID比例控制算法
基于FPGA的PID算法学习 前言一、PID算法分析二、PID仿真分析1. PID代码2.PI代码3.P代码4.顶层5.测试文件6.仿真波形 总结 前言 学习内容:参考网站: PID算法控制 PID即:Proportional(比例)、Integral(积分&…...
在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module
1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
postgresql|数据库|只读用户的创建和删除(备忘)
CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
