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[…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
ThreadLocal 源码
ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物,因为每个访问一个线程局部变量的线程(通过其 get 或 set 方法)都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段,这些类希望将…...

MySQL体系架构解析(三):MySQL目录与启动配置全解析
MySQL中的目录和文件 bin目录 在 MySQL 的安装目录下有一个特别重要的 bin 目录,这个目录下存放着许多可执行文件。与其他系统的可执行文件类似,这些可执行文件都是与服务器和客户端程序相关的。 启动MySQL服务器程序 在 UNIX 系统中,用…...
32位寻址与64位寻址
32位寻址与64位寻址 32位寻址是什么? 32位寻址是指计算机的CPU、内存或总线系统使用32位二进制数来标识和访问内存中的存储单元(地址),其核心含义与能力如下: 1. 核心定义 地址位宽:CPU或内存控制器用32位…...