Python_Metaclass
发表于|更新于|Python
|浏览量:
Python Metaclass
参考资料
文章作者: xhj
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xhj的博客!
相关推荐
2025-07-03
Python_Decorator
Python Decorator基本原理…… 内置装饰器@property@property:把一个方法变成属性调用。 示例一: 把一个 getter 方法变成属性,只需要加上 @property 就可以了,此时,@property 本身又创建了另一个装饰器 @score.setter,负责把一个 setter 方法变成属性赋值。 123456789101112class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(value, int): raise ValueError('score must be an integer!') if value < 0 or value > 100: raise ValueError('score mu...
2021-07-21
复盘|天堂硅谷·数字经济算法编程大赛
复盘|天堂硅谷·数字经济算法编程大赛题目-01 化学反应【模拟】按题意模拟(可以用大根堆或者平衡树),每次找两个最大的出来,直到没有剩余或只剩一个。 1 2 3 4 5 6 7 8 9 #平衡树 from sortedcontainers import SortedList class Solution: def lastMaterial(self, material: List[int]) -> int: s = SortedList(material) while len(s) > 1: a, b = s.pop(), s.pop() if a != b: s.add(a - b) return s[0] if s else 0 1 2 3 4 5 6 7 8 9 #大根堆 class Solution: def lastMaterial(self, material: List[int]) -> int: ...
2024-10-06
6_data_coding
Data and Coding数据编码和处理读写 csv 文件csv 文件为逗号分隔符文件,指定逗号作为每一项数据的分隔符,存储维护一个类似表格的文件。对于 Python 来说,一般用 csv 库解决它的读写问题。 读 csv 文件 将 csv 文件中的数据读取为一个元组的序列: 1234567import csvwith open("data.csv") as f: f_csv = csv.reader(f) headers = next(f_csv) # 取第一行数据,一般而言第一行是标题 for row in f_csv: pass # row:数据行,是一个列表,通过下标取数据。 下标访问数据可能会引起混淆,可以考虑使用命名元组。 12345678from collections import namedtuplewith open("data.csv") as f: f_csv = csv.reader(f) headers = next(f_c...
2025-07-09
Python_Setup
Python setup.py参考资料 What is setup.py? 花了两天,终于把 Python 的 setup.py 给整明白了
2025-07-01
PyTorch-CUDA图原理与用法详解
我来详细解释 torch.cuda.graph(graph, pool=xxx) 的原理与用法。 原理CUDA Graph 是 PyTorch 中用于优化 GPU 计算性能的技术,主要原理是: 计算图捕获:将一系列 CUDA 操作捕获为一个静态图 单次启动:整个图只需一次 GPU 启动,而不是多次内核启动 减少开销:避免了内核启动开销、CPU-GPU 同步等 pool=xxx 参数用于指定内存池,让图形在专用内存中运行,进一步提高性能。 基本用法123456789101112131415161718192021import torch# 准备示例计算def example_computation(x, weight): return torch.nn.functional.conv2d(x, weight)# 创建输入和参数x = torch.randn(4, 3, 32, 32, device='cuda')weight = torch.randn(16, 3, 3, 3, device='cuda')# 创建 CUDA 图gr...
2024-10-07
7_function
Function函数可接受任意数量参数的函数如果想要构造一个可接受任意数量参数的函数,可以使用 * 参数来定义该函数: 12345def avg(first, *others): return (first + sum(others)) / (1 + len(others))print(avg(1,2)) # 1.5print(avg(1,2,3,4,5)) # 3 为了接受任意数量的关键字参数,可以使用以 ** 开头的参数定义函数: 1234def foo(attr1, attr2, **attrs): print(attr1, attr2, attrs)foo(1, 2, n=1, m=2) # 1 2 {'n':1,'m':2} 综上所述,*args 和 **kwargs 分别是第一章介绍的压缩和字典参数。要求 *args 只能放在最后一个位置参数后面,**kwargs 只能放在最后一个参数后面。 只接受关键字参数的函数将强制关键字参数放到某个 * 参数或者单个 * 后面就能...