<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[MZP_man的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/MZP_man</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; MZP_man]]></copyright><item><title><![CDATA[python3 venv 管理多个python解释器]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/140818750</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/140818750</guid><author>MZP_man</author><pubDate>Wed, 31 Jul 2024 13:43:19 +0800</pubDate><description><![CDATA[*]]></description><category></category></item><item><title><![CDATA[python __getattr__动态属性访问]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135862046</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135862046</guid><author>MZP_man</author><pubDate>Fri, 26 Jan 2024 11:53:10 +0800</pubDate><description><![CDATA[中，可以实现一个近似字典的类（网上有大量实现），达到同样的效果。一行揭露了这个实现的一个小问题：理论上，尝试读取不存在的属性应该抛出。数据链式访问，来说明动态属性的访问。在普通的字典中访问属性中,不能使用。协议，构建一个类，实现简单版本的。FrozenJSON 类的关键是。运算符链式调用下去，现在实现。类，比大多数实现都简单，因为。），解释器才会调用特殊的。使用，没有去做复杂的实现。常规的方式获取属性（即在。异常，但这里只是说了。处理嵌套的映射和列表。]]></description><category></category></item><item><title><![CDATA[python 函数内省]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135744671</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135744671</guid><author>MZP_man</author><pubDate>Mon, 22 Jan 2024 14:29:20 +0800</pubDate><description><![CDATA[参见“The Django admin site”文档（下面重点说明函数专有而用户定义的一般对象没有的属性。这相当于一种基本形式的注解。一般来说，为函数随意赋予属性。本节讨论与把函数视作对象相关的几个属性，先从。中函数也是对象, 除了。文档中举了下述示例，把。]]></description><category></category></item><item><title><![CDATA[python定义可调用的类型]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135733357</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135733357</guid><author>MZP_man</author><pubDate>Sun, 21 Jan 2024 19:19:18 +0800</pubDate><description><![CDATA[不仅Python函数是真正的对象，任何Python对象都可以表现得像函数。为此，只需实现实例方法__call__。# __init__ 接受任何可迭代对象；在本地构建一个副本，防止列表参数的意外副作用。# shuffle 定能完成工作，因为 self._items 是列表。def pick(self): # 起主要作用的方法。try:except IndexError: # 如果 self._items 为空，抛出异常，并设定错误消息。]]></description><category></category></item><item><title><![CDATA[python 一等函数基础]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135694178</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135694178</guid><author>MZP_man</author><pubDate>Fri, 19 Jan 2024 15:05:17 +0800</pubDate><description><![CDATA[在Python中，函数是一等对象。编程语言理论家把“一等对象定义在Python中，整数字符串和字典都是一等对象——没什么特别的。人们经常将“把函数视作一等对象”简称为“一等函数这样说并不完美，似乎表明这是函数中的特殊群体。在Python中，所有函数都是一等对象。]]></description><category></category></item><item><title><![CDATA[python 字典集合散列表原理]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135674537</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135674537</guid><author>MZP_man</author><pubDate>Thu, 18 Jan 2024 16:06:08 +0800</pubDate><description><![CDATA[这意味着在最理想的状况下，越是相似但不相等的对象，它们散列值的差别应该越大。这个示例用同样的数据创建了 3 个字典，唯一的区别就是数据出现的顺序不一样。可以看到，虽然键的次序是乱的，这 3 个字典仍然被视作相等的。要注意的是，上面提到的这些变化是否会发生以及如何发生，都依赖于字典背后的具体实现，因此你。，但在它们的散列表里存放的只有元素的引用（就像在字典里只存放键而没有相应的值）。最好不要根据 JSON 的风格，用由字典组成的列表来存放这些记录。对于后者，在找到相对应的表元后，原表里的值对象会被。]]></description><category></category></item><item><title><![CDATA[python 集合详细]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135669584</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135669584</guid><author>MZP_man</author><pubDate>Thu, 18 Jan 2024 11:54:30 +0800</pubDate><description><![CDATA[集”这个概念在Python中算是比较年轻的，同时它的使用率也比较低。set和它的不可变的姊妹类型frozenset直到Python 2.3才首次以模块的形式出现，然后在Python 2.6中它们升级成为内置类型。集合的本质是许多唯一对象的聚集。集合中的元素必须是可散列的，set类型本身是不可散列的，但是frozenset可以。因此可以创建一个包含不同frozenset的set。除了保证唯一性，集合还实现了很多基础的中缀运算符。给定两个集合a和ba | b返回的是它们的合集，a & b。]]></description><category></category></item><item><title><![CDATA[python 字典 MappingProxyType(不可变映射类型)]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135668958</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135668958</guid><author>MZP_man</author><pubDate>Thu, 18 Jan 2024 11:09:17 +0800</pubDate><description><![CDATA[我们通过这个视图可以观察到，但是无法通过这个视图对原映射做出修改。下面简短地对这个类的用法做了个演示。如果给这个类一个映射，它会返回一个。，但有时候你会有这样的需求，比如。模块中引入了一个封装类名叫。这意味着如果对原映射做出了。标准库里所有的映射类型都是。让用户错误地修改某个映射。]]></description><category></category></item><item><title><![CDATA[python 字典的变种]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135667408</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135667408</guid><author>MZP_man</author><pubDate>Thu, 18 Jan 2024 10:56:38 +0800</pubDate><description><![CDATA[不同的映射对象，然后在进行键查找操作的时候，这些对象会被当作一个整体被。这个类型在添加键的时候会保持顺序，因此键的迭代次序。），但它却提供了好几个实用的方法。）里有一些具体的使用示例，其中包含了下面这个。来添加新值的，所以它其实是在使用我们的。的实现上走一些捷径，导致我们不得不在它的。这样做的好处是，比起示例 ➊，方 法， 好 让 它 的 表 现 跟。这些超类继承而来的。的语言做解释器的时候很有用，可以用。的通用性更强，也更复杂，因为它把。方法默认删除并返回的是字典里的。把所有的键都以字符串的形式存储，]]></description><category></category></item><item><title><![CDATA[python 字典 d[k]中key不存在的解决方案]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135665825</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135665825</guid><author>MZP_man</author><pubDate>Thu, 18 Jan 2024 10:15:07 +0800</pubDate><description><![CDATA[有时候为了方便起见，就算某个键在映射里不存在，我们也希望在通过这个键读取值的时候能得到一个默认值。有两个途径能帮我们达到这个目的，一个是通过这个类型而不是普通的dict，另一个是给自己定义一个dict的子类，然后在子类中实现方法。下面将介绍这两种方法。]]></description><category></category></item><item><title><![CDATA[python 字典get、__getitem__、setdefault 对比]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135665451</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135665451</guid><author>MZP_man</author><pubDate>Thu, 18 Jan 2024 09:26:08 +0800</pubDate><description><![CDATA[二者的效果是一样的，只不过后者至少要进行两次键查询——如果键不存在的话，就是三次，用 setdefault 只需要一次就可以完成整个操作。可能是比较微妙的一个。我们虽然并不会每次都用它，但是一旦它发挥作用，就可以节省不少次键查询，从而让程序更高效。所信奉的“快速失败”哲学。不能找到正确的键的时候，Python 会抛出异常，这个行为符合。但是要更新某个键对应的值的时候，不管使用。，给找不到的键一个默认的返回值（这比处理。都会不自然，而且效率低。示例处理单词出现情况的三行，通过。在映射对象的方法里，]]></description><category></category></item><item><title><![CDATA[python 字典和集合 简介]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135653908</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135653908</guid><author>MZP_man</author><pubDate>Wed, 17 Jan 2024 17:00:13 +0800</pubDate><description><![CDATA[反过来说，想要进一步理解集合和字典，就得先理解散列表的原理。否则，函数会退一步，转而把。里大多数映射类型的构造方法都采用了类似的逻辑，因此你。（只有键有这个要求，值并不需要是可散列的数据类型）程序的背后，即便你的源码里并没有直接用到它。来实现的，因此它们有个共同的限制，即只有。类型不但在各种程序里广泛使用，它也是。元素的可迭代对象来初始化一个映射对象。除了这些字面句法和灵活的构造方法之外，用一个映射对象来新建一个映射对象，则是字典类型性能出众的根本原因。，而是一个比较另类的映射类型。正是因为字典至关重要，]]></description><category></category></item><item><title><![CDATA[python 双向队列和其他形式的队列]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135652740</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135652740</guid><author>MZP_man</author><pubDate>Wed, 17 Jan 2024 16:12:25 +0800</pubDate><description><![CDATA[这是因为在新建一个双向队列的时候，你可以指定这个队列的大小，如果这个队列满员了，还可以从反向端删除过期的元素，然后在尾端添加新的元素。但是删除列表的第一个元素（抑或是在第一个元素之前添加一个元素）之类的操作是很耗时的，因为这些操作会牵扯到移动列表里的所有元素。双向队列实现了大部分列表所拥有的方法，也有一些额外的符合自身设计的方法，比如说。上面总结了列表和双向队列这两个类型的方法（object 类包含的方法除外）。模块的影响，但是为异步编程里的任务管理提供了专门的便利。类似，是设计给进程间通信用的。]]></description><category></category></item><item><title><![CDATA[python NumPy和SciPy 简单介绍]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135652037</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135652037</guid><author>MZP_man</author><pubDate>Wed, 17 Jan 2024 15:50:12 +0800</pubDate><description><![CDATA[数据分析库就以它们为基础，提供了高效的且能存储非数值类数据的数组类型，和读写常见数据文件格式（例如。下面示例 是一个很简短的演示，从中可以窥见一些 NumPy 二维数组的基本操作。）和矩阵，这些数据结构不但能处理数字，还能存放其他由用户定义的记录。的另一个库，它提供了很多跟科学计算有关的算法，专为。都是异常强大的库，也是其他一些很有用的工具的基石。，用户能对这些数据结构里的元素进行高效的操作。的工业级数学计算功能用交互式且高度抽象的。的高效和可靠性归功于其背后的。提供的高阶数组和矩阵操作，]]></description><category></category></item><item><title><![CDATA[python 内存视图memoryview]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135651207</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135651207</guid><author>MZP_man</author><pubDate>Wed, 17 Jan 2024 15:23:24 +0800</pubDate><description><![CDATA[questions/4845418/when-should-a-memoryview-be-used/）这个问题时是这样说的： 内存视图其实是泛化和去数学化的。它让你在不需要复制内容的前提下，在数据结构之间共享内存。的概念跟数组模块类似，能用不同的方式读写同一块内存数据，而且内容字节不会随意移动。是一个内置类，它能让用户在不复制内容的情况下操作同一个数组的不同切片。精准地修改了一个数组的某个字节，这个数组的元素是 16 位二进制整数。会把同一块内存里的内容打包成一个全新的。的主要作者，他在回答。]]></description><category></category></item><item><title><![CDATA[python 数组和列表的对比]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135650201</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135650201</guid><author>MZP_man</author><pubDate>Wed, 17 Jan 2024 15:02:41 +0800</pubDate><description><![CDATA[虽然列表既灵活又简单，但面对各类需求时，我们可能会有更好的选择。比如，要存放1000 万个浮点数的话，数组（array）的效率要高得多，因为数组在背后存的并不是 float对象，而是数字的机器翻译，也就是字节表述。这一点就跟 C 语言中的数组一样。再比如说，如果需要频繁对序列做先进先出的操作，deque（双端队列）的速度应该会更快。如果在你的代码里，包含操作（比如检查一个元素是否出现在一个集合中）的频率很高，用 set（集合）会更合适。set 专为检查元素是否存在做过优化。]]></description><category></category></item><item><title><![CDATA[python 用bisect来管理已排序的序列]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135648558</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135648558</guid><author>MZP_man</author><pubDate>Wed, 17 Jan 2024 14:20:16 +0800</pubDate><description><![CDATA[已排序的序列可以用来进行快速搜索，而标准库的bisect模块给我们提供了二分查找算法。让已排序的序列保持有序bisect模块包含两个主要函数，bisect和insort，两个函数都利用算法来在有序序列中查找或插入元素。]]></description><category></category></item><item><title><![CDATA[python list.sort方法和内置函数sorted]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135646358</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135646358</guid><author>MZP_man</author><pubDate>Wed, 17 Jan 2024 13:43:01 +0800</pubDate><description><![CDATA[一个只有一个参数的函数，这个函数会被用在序列里的每一个元素上，所产生的结果将是排序算法依赖的对比关键字。比如说，在对一些字符串排序时，可以用 key=str.lower 来实现忽略大小写的排序，或者是用 key=len 进行基于字符串长度的排序。这也是这个方法的返回值是 None 的原因，提醒你本方法不会新建一个列表。在这种情况下返回 None 其实是Python 的一个惯例：如果一个函数或者方法对对象进行的是就地改动，那它就应该返回None，好让调用者知道传入的参数发生了变动，而且并未产生新的对象。]]></description><category></category></item><item><title><![CDATA[python 元组和列表的比较]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135645803</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135645803</guid><author>MZP_man</author><pubDate>Wed, 17 Jan 2024 11:32:40 +0800</pubDate><description><![CDATA[如果要把元组当作列表来用的话，最好先了解一下它们的相似度如何。在下图中可以清楚地看到，除了跟增减元素相关的方法之外，元组支持列表的其他所有方法。还有一个例外，元组没有。列表或元组的方法和属性（那些由object类支持的方法没有列出来）方法，但是这个方法只是个优化而已。]]></description><category></category></item><item><title><![CDATA[python 列表推导同filter和map的比较]]></title><link>https://blog.youkuaiyun.com/MZP_man/article/details/135645275</link><guid>https://blog.youkuaiyun.com/MZP_man/article/details/135645275</guid><author>MZP_man</author><pubDate>Wed, 17 Jan 2024 11:15:06 +0800</pubDate><description><![CDATA[在本书的代码仓库（https://github.com/fluentpython/examplecode）中有名为 02-array-seq/listcomp_speed.py（https://github.com/fluentpython/example-code/blob/master/02-array-seq/listcomp_speed.py）的脚本，代码中有这两个方法的效率的比较。]]></description><category></category></item></channel></rss>