Python的特殊属性: __slots__

Python __slots__属性的实例详解,提高类的效率和可读性 Python的内置类属性__slots__,它提供了一种强大的机制,用于限制类的属性,从而改进内存使用和属性访问速度。在本文中,将深入研究__slots__的作用、用法和示例代码,以帮助大家更好地理解和利用这一特性。 阅读详情

在Python中不知存在着特殊方法(魔术方法),还存在着特殊属性:__slots__

在Python中,用户自定义的类的属性会默认保存在 __dict__ 属性中。__dict__ 属性对应的是一个用来储存类属性的字典。字典内的值可以通过简单的语句 instanceName.__dict__ 直接查看,和查看一个普通的类属性一样。

而 __slots__ 属性的作用就是:取代 __dict__ 属性,将类属性保存到 __slots__ 中。__slots__ 属性是一个元组,具体用法如下:

# Python version: 3.7

>>> class Cat():                        # 定义一个类
...     def __init__(self):             # 初始化属性:name 和 age
...         self.name = 'hello kitty'
...         self.age = 3
...     
...     __slots__ = ('name', 'age')     # 启用 __slots__ 并注意赋值不带self,且是字符串格式
... 
>>> my_cat = Cat()                      # 创建一个实例 my_cat
>>> my_cat.__dict__                     # 查看 __dict__ 属性,发现未定义
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Cat' object has no attribute '__dict__'
>>> my_cat.__slots__                    # 查看 __slots__ 发现正常显示出来属性名
('name', 'age')
>>> my_cat.name                         # 也能正常访问属性
'hello kitty'
                                        # 尝试创建新的属性,失败
>>> my_cat.high = 10
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'Cat' object has no attribute 'high'

可以看到,在 my_cat 实例中找不到 __dict__ 属性,但是可以调用 __slots__ 属性。

为什么要用 __slots__ 属性来取代默认的 __dict__ 属性来保存类属性呢?

因为 __dict__ 保存属性的方式是字典,Python的字典功能很强大,优点多多,甚至具有能无视数据量的查找速度(详情请看《流畅的Python》3.9.1 一个关于效率的实验)。但字典唯一的缺点恐怕就是内存开支了。因为字典需要存储散列表,而散列表本身也会占用内存资源,这就导致内存的巨大开销——你定义了一个字典,你不止在字典里存储了你想存储的数据,还建立了一个规模大于你数据量三分之一以上的散列表!

出于这个原因,如果你定义的类需要构建大量的实例,那么改用 __slots__ 属性的元组存储方式来存储类属性能节省大量的内存资源。而且元组的速度也很快

使用 __slots__ 的副作用:

使用 __slots__ 也会带来副作用,你将无法动态的往实例里添加属性,因为元组的不可变性质。如果你希望在使用 __slots__ 后还能正常的往实例里动态的添加新属性,可以在 __slots__ 中增加 “__dict__”值。这样子的话,预先定义的属性将会被存储到__slots__ 中,而动态增加的属性将会被添加到 __dict__ 中,也就是重新启用 __dict__ 。

此外,还有一个实例属性可能需要注意,即 __weakref__ 属性,为了让对象支持弱引用,必须有这个属性。用户定义的类中默认就有 __weakref__ 属性。可是,如果类中定义了 __slots__ 属性,而且想把实例作为弱引用的目标,那么要把‘__weakref__’添加到 __slots__ 中。
还有一点就是, __slots__ 只在当前定义的类中有效,用这个类所派生出的子类是不继承 __slots__ 属性的,如有需要则需重新定义。

Python中的__slots__:内存优化的利器 _slots__是Python中的一个类变量,它指定了类中实例所允许拥有的属性名称。这个变量可以是一个列表、元组或字符串(当只有一个属性时)。使用__slots__后,Python解释器会以一种更高效、更紧凑的方式来存储实例属性,而不是使用默认的字典(__dict__)来存储每个实例的所有动态属性。在类定义中,__slots__应该是一个包含属性名称的元组、列表或字符串(当只有一个属性时)。__slots__ = ('attr1', 'attr2') # 定义两个允许的属性。 阅读详情

相关推荐

工程师必看:如何用MINITAB快速计算传感器寿命(附详细步骤)

本文为工程师提供了使用MINITAB软件快速计算传感器寿命的详细实战指南。文章重点阐述了如何通过数据预处理、回归分析拟合阿伦尼斯模型,并最终预测平均寿命与置信区间,帮助工程师高效处理加速寿命试验数据,提升可靠性分析工作的准确性与效率。

weixin_29296241的博客 248

__slots__用法讲解

__slots__是python新式类中的一个特性,简单理解为“槽的意思”,类只拥有放在槽里的属性,上代码: 注释掉__slots__=('x','y'),则对象b可以自由添加属性x,y,z,运行结果打印出x,y,z的值,对象b的属性 包含x,y,z class B(object): #"""This is class B""" #__slots__=('x','y') #槽限制了只能有属性x,y pass def test(self): """Thi

九九拔拔的专栏 3888

PX4代码解析(1)

前言 做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳理一下无人机知识。 目前打算分享以下几个内容:代码架构;通信协议;姿态解算算法,控制算法。先这样,后面想到再加。本章先来聊聊px4代码结构 一、代码整体结构 既然要聊px4代码结构,那就先把px4代码结构图放出来,因为px4源码仍然在不断更新迭代,因此老版本与新版本目录结构可能有些不同,我的代码解析参考版本为V

qq_36903625的博客 1万+

python __slots__ 详解

python中的new-style class要求继承Python中的一个内建类型, 一般继承object,也可以继承list或者dict等其他的内建类型。 在python新式类中,可以定义一个变量__slots__,它的作用是阻止在实例化类时为实例分配dict, 默认情况下每个类都会有一个dict,通过__dict__访问,这个dict维护了这个实例的所有属性,举例如下: class base(object): var=9 #类变量 ...

sky0Lan的博客 8059

[漏洞剖析]JeecgBoot queryFieldBySql注入与JDBC连接滥用:从内存马植入到RCE的完整攻击链

本文深度剖析了JeecgBoot框架中queryFieldBySql接口的SQL注入漏洞及其引发的完整攻击链。攻击者利用该漏洞,通过Freemarker SSTI植入隐蔽的内存马,并进一步滥用JDBC连接测试功能,借助H2数据库特性实现远程命令执行(RCE),揭示了低代码平台中功能滥用与安全配置疏忽带来的严重风险。

weixin_29232121的博客 115

【代码审计】专栏文章汇总

代码审计基础 代码审计基础 源代码审计思路(上) 源代码审计思路(下) 常见漏洞审计 认证会话管理(上) 认证会话管理(下) 输入输出验证 授权管理审计 业务安全审计 第三方组件审计

武天旭的博客 4846

Python深入理解__slots__

类魔法方法__slots__ python类声明中如果没有添加__slots__参数,类属性是可以随时随地添加的,因此在生成类实例的时候,python除了会给已经定义的属性值分配内存,还会预留一部分空间以方便未来增加属性值。 __slots__的作用就是声明这个类只会这些属性,也就不必多分配内存了,因此虽然属性固定但节省内存。适用于需要生成大量类实例的场景。 ...

weixin_39253570的博客 8474

在 SAP 资产模块跨 2024 和 2025 两个年度操作后,运行 AFAB 测试无数据,大概率是折旧已完全过账、跨期配置异常或资产数据异常等原因

SAP资产模块跨年度操作AFAB测试无数据的排查方案:首先检查折旧是否已完全计提,确认资产主数据价值;其次验证跨年度配置是否合规,包括全局配置、折旧范围和账期状态;然后重新执行AFAR折旧计算刷新数据;排查资产主数据异常或业务操作冲突;最后核对AFAB运行参数是否正确设置,包括会计年度、期间范围和运行模式等。

金牌架构师 867

Python中的__slots__

在 Python 中,__slots__的用途是什么?以及在哪些情况下应避免使用它?

liluo0815481的博客 1117

MTK-Android12开机应用自启需求-自定义原生Launcher3 主界面布局图标

MTK平台 Android12 版本 上实现 开机应用自启需求-自定义原生Launcher3 主界面布局图标。添加一个属性定义即可,如下:这里自定义一个属性目的是为了在加载Launcher3启动时候从属性获取需要自启动应用的包名,可以扩展动态替换 自启动包名。这里有两种方案,要么在Launcher3里面实现,要么在系统服务里面在开机时候启动第三方一次。这里强烈建议在Launcher3中去实现,体验效果更好。// 第一步:定义属性,// 第二步:在onCreate 方法中获取属性并启动应用。

十年饮冰,难凉热血 1381

出现 Transaction rolled back because it has been marked as rollback-only 解决方法

出现 Transaction rolled back because it has been marked as rollback-only 解决方法

码农研究僧的博客 1万+

详细分析Python中的__slots__基本知识(附Demo)

__slots__ 是 Python 类中的一个特殊属性,用于限制实例可以动态添加的属性,并减少内存占用

码农研究僧的博客 1439

【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法

相比C文本类编程语言,Simulink图形化编程语言的优势是逻辑思路和数据流清晰了很多,劣势是程序执行的时序不明确,而且各个模块的配置使编程的灵活度下降了不少,在使用习惯上面总感觉有各种限制。本文就是拆解Simulink中最基础的几个编程模块,发扬它的优势,避开劣势。

Mr.Cssust的博客 3852

python常用的特殊属性总结

python常用的特殊属性总结1.__slots__属性用于限定一个类所拥有的属性,以及能否动态添加或删除属性注意:父类有的属性,子类继承一定会有(即使子类的__slots__中没有限制)使用方法:class A(object): __slots__=['属性1','属性2','__dict__']Note:如果不加’__dict__‘那么A就只能有属性1和属性2,不能动态添加属性2.dir

不能飞翔的天空 859

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Python:类的特殊属性

想要保留 __dict__,可以在 __slots__ 里显式加 "__dict__"。类对象不仅定义了实例的行为,还携带了大量的特殊属性,用于描述类的名称、继承关系、方法解析顺序、命名空间、类型注解、文档、弱引用支持、slots 限制等。在类中定义了 __slots__ 后,Python 不再为每个实例创建 __dict__,而是只允许实例拥有 __slots__ 指定的那些属性。基本信息:__name__、__qualname__、__module__、__doc__类的基类元组,顺序与定义时一致。

qq_41176800的博客 385

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

python提供了哪些特殊属性_Python - 特殊属性和方法浅析

__dict__Python 中,一切皆对象不管是类还是实例的属性和方法,都符合 object.attribute 格式。并且属性类型class A(object):passa = A()dir(a)输出:['__class__', '__delattr__', '__dict__', '__dir__', '__doc__','__eq__','__format__','__ge__','__g...

weixin_39621860的博客 213

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python的__slots__

dict__ 方法。但是我们可以通过 设置 __ slots__ 来将类的属性构造成一个静态的数据结构来管理,里面存储的是 value references。可以通过 把 __ dict__ 作为 __ slots__ 的一个属性,实现既能通过定义__ slots__ 节约内存,又实现新属性的定义。注意不应当用来限制__slots__之外的新属性作为使用__slots__的原因,可以使用装饰器以及反射的方式来实现属性控制。只允许父类中有一方设定了 __ slots__子类会继承父类的 __ slots__

LKIDTI数据的博客 603

Python 中的 __slots__ 属性有什么作用?

_slots__是Python类中的一种特殊属性,它允许你显式地声明一个类的实例可以拥有的属性。这不仅有助于节省内存,还能提高属性访问的速度,并且防止动态添加不属于设计的属性。在大型项目或者对性能敏感的应用程序中,正确使用__slots__可以带来显著的好处。__slots__

程序员学习园地。 1085

Python 3.12 类动态绑定与 `__slots__` 性能对比:内存减少40%的实测

本文深入探讨了Python 3.12中类动态绑定与`__slots__`的性能对比,通过10万对象量级的基准测试展示了`__slots__`如何实现高达40%的内存优化。文章详细解析了动态绑定的内存开销和`__slots__`的优化原理,并提供了实战决策指南,帮助开发者在面向对象编程中做出更高效的选择。

weixin_34159110的博客 546

Python __slots__ 实战指南:从内存优化到继承陷阱

本文深入探讨Python中`__slots__`的实战应用,从内存优化原理到继承场景中的陷阱。通过实例分析展示了`__slots__`如何显著减少内存占用(测试中节省75%空间)并提升属性访问速度(快15-20%),同时解析了继承、序列化等复杂场景的解决方案,帮助开发者高效使用这一特性。

n7o8p的博客 490

Python私有属性和__slots__——禁止访问类的实例属性

写在前面   刚认识python的__slots__属性时,就对其可以禁止访问类的实例属性这一功能感到由衷喜欢,总比私有属性的不那么私有来的可爱(只要想访问,python的私有属性都是可以访问)。如果你对这两个知识点还不是很熟悉,那这片浅显易懂的文章就值得一看。 __私有属性   提到python的私有属性,即是在属性前加双下划线,最大的作用就是防止别人访问该私有属性,如果访问就会报错:Attri...

weixin_42681866的博客 3994

python提供了哪些特殊属性_python 学习特殊属性时遇到的问题

[Python] dir() 与 __dict__,__slots__ 的区别指出:"不是所有的对象都有 __dict__ 属性。例如,如果你在一个类中添加了 __slots__ 属性,那么这个类的实例将不会拥有 __dict__ 属性,但是 dir() 仍然可以找到并列出它的实例所有有效属性"。代码: print(Demo.__dict__) 是要打印出类 class Demo 的字典。这行代码...

weixin_39575850的博客 63

Python中使用__slots__注意项

__slots__在类中定义,但是不被继承的,__slots__定义的属性仅对当前类起作用,对继承的子类是不起作用的

drbing的博客 665

2.1.7 Python中一些特殊属性和方法

在Python一些类中,通常能看到用双画线“__”开头和结尾的属性和方法,总归为特殊属性。他和我们自己所写的非"__"开头和结尾的属性方法有一些区别。1,__dict__&gt;&gt;&gt; class test(object): print "这是个测试" 这是个测试&gt;&gt;&gt; t = test()&gt;&gt;&gt; dir(t)['__class__', '__dela

心雨先生 541

python面向对象编程——特殊属性之__slots__、特殊方法之__len__()、迭代器与生成器

23. 特殊属性之__slots__ 如果想要对实例对象动态绑定的属性和方法的名称进行限制,可以在其类对象中定义__slots__,并给__slots__赋值给一个所有元素都为字符串的列表或元组,这样对实例对象动态绑定的属性和方法的名称就只能来自于__slots__中的元素 class MyClass(object): __slots__ = ('do_sth1')

Ly芳的博客 521

Python对象内存占用太高?__slots__优化技巧大公开

解决Python对象内存占用过高问题,通过__slots__优化实例。本文详解__slots__的内存节省测试,揭示其在高频创建对象场景中的显著优势,减少内存开销达40%以上,提升性能,值得收藏

codeink的博客 689
上一篇: 在Python中,if a in b 的效率更高还是直接比较更高?
下一篇: Python 的条件赋值(选择性赋值)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值