<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ty_wink的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ty_wink</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ty_wink]]></copyright><item><title><![CDATA[python基础知识（29）正则表达式]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138564205</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138564205</guid><author>ty_wink</author><pubDate>Wed, 08 May 2024 11:06:43 +0800</pubDate><description><![CDATA[正则表达式是一个特殊的字符序列，用于判断一个字符串是否与我们所设定的字符序列是否匹配，也就是说检查一个字符串是否与某种模式匹配。Python 自 1.5 版本起增加了re 模块，它提供 Perl 风格的正则表达式模式。re 模块使 Python 语言拥有全部的正则表达式功能。下面通过实例，一步一步来初步认识正则表达式。比如在一段字符串中寻找是否含有某个字符或某些字符，通常我们使用内置函数来实现，如下：# 设定一个常量。]]></description><category></category></item><item><title><![CDATA[python基础知识（28）线程和进程]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138519639</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138519639</guid><author>ty_wink</author><pubDate>Tue, 07 May 2024 09:23:10 +0800</pubDate><description><![CDATA[同时执行多个任务通常各个任务之间并不是没有关联的，而是需要相互通信和协调，有时，任务 1 必须暂停等待任务 2 完成后才能继续执行，有时，任务 3 和任务 4 又不能同时执行，所以，多进程和多线程的程序的复杂度要远远高于我们前面写的单进程单线程的程序。请注意输出的结果，子进程 0，1，2，3是立刻执行的，而子进程 4 要等待前面某个子进程完成后才执行，这是因为 Pool 的默认大小在我的电脑上是 4，因此，最多同时执行 4 个进程。默认情况下，主线程退出之后，即使子线程没有 join。]]></description><category></category></item><item><title><![CDATA[python基础知识（27）元类 2]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138519540</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138519540</guid><author>ty_wink</author><pubDate>Tue, 07 May 2024 09:20:57 +0800</pubDate><description><![CDATA[通过上面的介绍，终于模模糊糊的带到元类这里来了。可是我们到现在还不知道元类是什么鬼东西。我们创建类的时候，大多数是为了创建类的实例对象。那么元类呢？元类就是用来创建类的。也可以换个理解方式就是：元类就是类的类。通过上面type()函数的介绍，我们知道可以通过type()函数创建类：实际上type()函数是一个元类。type()就是 Python 在背后用来创建所有类的元类。那么现在我们也可以猜到一下为什么type()函数是 type 而不是 Type呢？]]></description><category></category></item><item><title><![CDATA[python基础知识（26）元类]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138312971</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138312971</guid><author>ty_wink</author><pubDate>Mon, 29 Apr 2024 14:50:08 +0800</pubDate><description><![CDATA[在之前，我们先了了解下。]]></description><category></category></item><item><title><![CDATA[python基础知识（25）枚举类]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138312251</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138312251</guid><author>ty_wink</author><pubDate>Mon, 29 Apr 2024 14:32:31 +0800</pubDate><description><![CDATA[但有些时候我们需要控制枚举的类型，那么我们可以 Enum 派生出自定义类来满足这种需要。通过修改上面的例子：# @unique 装饰器可以帮助我们检查保证没有重复值@unique输出的结果如下：通过上面的例子，可以知道枚举模块定义了具有迭代 (interator) 和比较(comparison) 功能的枚举类型。它可以用来为值创建明确定义的符号，而不是使用具体的整数或字符串。]]></description><category></category></item><item><title><![CDATA[python基础知识（24）Magic Method 2]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138287068</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138287068</guid><author>ty_wink</author><pubDate>Sun, 28 Apr 2024 18:21:42 +0800</pubDate><description><![CDATA[经过之前编章的介绍，我们知道在 Python 中，常见的容器类型有: dict, tuple, list, string。其中也提到过可容器和不可变容器的概念。其中 tuple, string 是不可变容器，dict, list 是可变容器。可变容器和不可变容器的区别在于，不可变容器一旦赋值后，不可对其中的某个元素进行修改。当然具体的介绍，可以看回之前的文章，有图文介绍。那么这里先提出一个问题，这些数据结构就够我们开发使用吗？]]></description><category></category></item><item><title><![CDATA[python基础知识（23）Magic Method]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138287010</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138287010</guid><author>ty_wink</author><pubDate>Sun, 28 Apr 2024 18:19:48 +0800</pubDate><description><![CDATA[在 Python 中，所有以 "__" 双下划线包起来的方法，都统称为"魔术方法"。可以看到，一个类的魔术方法还是挺多的，不过我们只需要了解一些常见和常用的魔术方法就好了。使用这些魔术方法，我们可以构造出优美的代码，将复杂的逻辑封装成简单的方法。我们可以使用 Python 内置的方法。那么一个类中有哪些魔术方法呢？魔术方法有什么作用呢？]]></description><category></category></item><item><title><![CDATA[python基础知识（22）模块与包]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138238323</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138238323</guid><author>ty_wink</author><pubDate>Sat, 27 Apr 2024 07:53:09 +0800</pubDate><description><![CDATA[在 Python 函数中，如果一个函数调用了其他函数完成一项功能，我们称这个函数为主函数，如果一个函数没有调用其他函数，我们称这种函数为非主函数。主模块和非主模块的定义也类似，如果一个模块被直接使用，而没有被别人调用，我们称这个模块为主模块，如果一个模块被别人调用，我们称这个模块为非主模块。]]></description><category></category></item><item><title><![CDATA[python基础知识（21）模块与包]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138238269</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138238269</guid><author>ty_wink</author><pubDate>Sat, 27 Apr 2024 07:50:57 +0800</pubDate><description><![CDATA[在开发过程中，随着程序代码越写越多，在一个文件里代码就会越来越长，越来越不容易维护。后面我们学习了函数，知道函数是实现一项或多项功能的一段程序，这样就更方便我们重复使用代码。紧接着，我们有学了类，类可以封装方法和变量（属性）。这样就更方便我们维护代码了。我们之前学过，类的结构是这样的:而我们要学的模块是这样的：在模块中，我们不但可以直接存放变量，还能存放函数，还能存放类。不知道你们还有没有印象，我们封装函数用的是def, 封装类用的是class。而我们封装模块，是不需要任何语句的。]]></description><category></category></item><item><title><![CDATA[python基础知识（20）面向对象 4]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138213754</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138213754</guid><author>ty_wink</author><pubDate>Fri, 26 Apr 2024 11:30:35 +0800</pubDate><description><![CDATA[可以看到，userVip 和 userGeneral 是两个不同的对象，对它们调用 printUserInfo 方法，它们会自动调用实际类型的 printUser 方法，作出不同的响应。其实我们也可以把方法看成是类的属性的，那么方法的访问控制也是跟属性是一样的，也是没有实质上的私有方法。多态的概念其实不难理解，它是指对不同类型的变量进行相同的操作，它会根据对象（或类）类型的不同而表现出不同的行为。可以看到，我们对两个整数进行 + 操作，会返回它们的和，对两个字符进行相同的 + 操作，会返回拼接后的字符串。]]></description><category></category></item><item><title><![CDATA[python基础知识（19）面向对象 3]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138204387</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138204387</guid><author>ty_wink</author><pubDate>Fri, 26 Apr 2024 08:04:06 +0800</pubDate><description><![CDATA[初始化函数的意思是，当你创建一个实例的时候，这个函数就会被调用。比如：当代码在执行的语句时，就自动调用了函数。而这个函数就是初始化函数，也叫构造函数。初始化函数的写法是固定的格式：中间是init，意思是初始化，然后前后都要有【两个下划线】，然后__init__()的括号中，第一个参数一定要写上self，不然会报错。构造函数（初始化函数）格式如下：Python 在版本的迭代中，有一个关于类的历史遗留问题，就是新式类和旧式类的问题，具体先看以下的代码：# 旧式类pass# 新式类。]]></description><category></category></item><item><title><![CDATA[python基础知识（18）面向对象 2]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138177594</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138177594</guid><author>ty_wink</author><pubDate>Thu, 25 Apr 2024 09:48:01 +0800</pubDate><description><![CDATA[除此之外，在这里，还要强调一个概念，当你把类实例化之后，里面的属性和方法，就不叫类属性和类方法了，改为叫实例属性和实例方法，也可以叫对象属性和对象方法。如果这个问题我们需要验证的话，是不是要重写实例的方法，然后观察结果，看看类方法有没有改变，这样就能得出结果了。这很好理解，因为我们的实例对象就是根据类来复制出来的，类属性改变了，实例对象的属性也会跟着改变。从类结构来看，我们可以猜测，从类方法来修改，也就是从类内部来修改和增加类属性。回归正题，从运行的结果来看，类方法改变了，实例方法也是会跟着改变的。]]></description><category></category></item><item><title><![CDATA[python基础知识（17）面向对象 1]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138150782</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138150782</guid><author>ty_wink</author><pubDate>Wed, 24 Apr 2024 10:16:04 +0800</pubDate><description><![CDATA[类是什么？个人认为理解类，最简单的方式就是：类是一个变量和函数的集合。可以看下下面的这张图。这张图很好的诠释了类，就是把变量和函数包装在一起。当然我们包装也不是毫无目的的包装，我们会把同性质的包装在一个类里，这样就方便我们重复使用。所以学到现在，你会发现很多编程的设计，都是为了我们能偷懒，重复使用。知道了类是什么样子的，我们接下来就要学习怎么去定义类了。类定义语法格式如下：可以看到，我们是用class语句来自定义一个类的，其实这就好比我们是用def语句来定义一个函数一样。]]></description><category></category></item><item><title><![CDATA[python基础知识（16）迭代器和生成器]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138105410</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138105410</guid><author>ty_wink</author><pubDate>Tue, 23 Apr 2024 11:30:00 +0800</pubDate><description><![CDATA[但是，这个例子非常不适合使用生成器，发挥不出生成器的特点，生成器的最好的应用应该是：你不想同一时间将所有计算出来的大量结果集分配到内存当中，特别是结果集里还包含循环。因为这样会耗很大的资源。不过有些知识点在之前的篇节中还没有提到，不过可以相应的看下，有编程基础的，学完上面的知识点应该也能理解的。反向迭代，应该也是常有的需求了，比如从一开始迭代的例子里，有个输出 list 的元素，从 1 到 5 的。跟普通函数不同的是，生成器是一个返回迭代器的函数，只能用于迭代操作，更简单点理解生成器就是一个迭代器。]]></description><category></category></item><item><title><![CDATA[python基础知识（15）迭代器和生成器.1]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138105386</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138105386</guid><author>ty_wink</author><pubDate>Tue, 23 Apr 2024 07:20:44 +0800</pubDate><description><![CDATA[之前经过我们的学习，都知道如何创建一个 list ，可是有些情况，用赋值的形式创建一个 list 太麻烦了，特别是有规律的 list ，一个一个的写，一个一个赋值，太麻烦了。比如在 Java 中，我们通过 List 集合的下标来遍历 List 集合中的元素，在 Python 中，给定一个 list 或 tuple，我们可以通过 for 循环来遍历这个 list 或 tuple ，这种遍历就是迭代。那么 for 循环后面有 if 的形式呢？也就是说，只要是可迭代的对象，无论有没有下标，都是可以迭代的。]]></description><category></category></item><item><title><![CDATA[python基础知识（14）函数.2]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138088527</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138088527</guid><author>ty_wink</author><pubDate>Mon, 22 Apr 2024 19:18:31 +0800</pubDate><description><![CDATA[匿名函数中，有一个特别需要注意的问题，比如，把上面的例子改一下：num2 = 100你会认为输出什么呢？第一个输出是 101，第二个是 10001，结果不是的，输出的结果是这样：1000110001。]]></description><category></category></item><item><title><![CDATA[python基础知识（13）函数.1]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138088452</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138088452</guid><author>ty_wink</author><pubDate>Mon, 22 Apr 2024 19:14:38 +0800</pubDate><description><![CDATA[函数，其实我们一开始学 Python 的时候就接触过。不过我们使用的大多数都是 Python 的内置函数。比如基本每个章节都会出现的print()函数。而现在，我们主要学习的是自定义函数。各位有没有想过为什么需要函数呢？如果要想回答这个问题，我们需要先了解函数是什么？函数就是组织好的，可重复使用的，用来实现单一，或相关联功能的代码段。没错，函数其实就是把代码抽象出来的代码段。那为什么要抽象出来呢？方便我们使用，方便我们重复使用。]]></description><category></category></item><item><title><![CDATA[python基础知识（12）条件语句和循环语句综合实例]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138088388</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138088388</guid><author>ty_wink</author><pubDate>Mon, 22 Apr 2024 19:12:00 +0800</pubDate><description><![CDATA[打印语句中，大括号及其里面的字符 (称作格式化字段) 将会被 .format() 中的参数替换,注意有个点的。print('{0} 不是闰年' .format(year))print('{0} 是闰年' .format(year))year = int(input("请输入一个年份: "))]]></description><category></category></item><item><title><![CDATA[python基础知识（11）循环语句]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138087803</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138087803</guid><author>ty_wink</author><pubDate>Mon, 22 Apr 2024 18:51:41 +0800</pubDate><description><![CDATA[一般编程语言都有循环语句，为什么呢？那就问一下自己，我们弄程序是为了干什么？那肯定是为了方便我们工作，优化我们的工作效率啊。而计算机和人类不同，计算机不怕苦也不怕累，也不需要休息，可以一直做。你要知道，计算机最擅长就是做重复的事情。所以这时候需要用到循环语句，循环语句允许我们执行一个语句或语句组多次。循环语句的一般形式如下：在 Python 提供了 for 循环和 while 循环。这里又有一个问题了，如果我想让他运行了一百次之后停止，那该怎么做呢？循环控制语句描述break。]]></description><category></category></item><item><title><![CDATA[python基础知识（10）条件语句]]></title><link>https://blog.youkuaiyun.com/ty_wink/article/details/138087434</link><guid>https://blog.youkuaiyun.com/ty_wink/article/details/138087434</guid><author>ty_wink</author><pubDate>Mon, 22 Apr 2024 18:38:23 +0800</pubDate><description><![CDATA[Python 条件语句跟其他语言基本一致的，都是通过一条或多条语句的执行结果（ True 或者 False ）来决定执行的代码块。Python 程序语言指定任何非 0 和非空（null）值为 True，0 或者 null 为 False。]]></description><category></category></item></channel></rss>