随笔分类 -  Python

Time line for Python learning
摘要:python中的正则表达式(re模块) 一、简介 正则表达式本身是一种小型的、高度专业化的编程语言,而在python中,通过内嵌集成re模块,程序媛们可以直接调用来实现正则匹配。正则表达式模式被编译成一系列的字节码,然后由用C编写的匹配引擎执行。 二、正则表达式中常用的字符含义 1、普通字符和11个 阅读全文
posted @ 2018-01-24 11:21 TimeTree 阅读(165) 评论(0) 推荐(0)
摘要:pandas 用法持续总结: 问题1: 需要把表中部分column转换成列,每一个column对应第一列的编码。 方法:melt(...) 参数:df.melt(id_vars=['A'], value_vars=['B']) 说明:指定ID字段,本例中id_vars是第一列编码。 转换前 转换后: 阅读全文
posted @ 2017-12-12 23:13 TimeTree 阅读(184) 评论(0) 推荐(0)
摘要:__str__ __repr__ __iter__ __next__ __getitem__ __getattr__ 正常情况下,当我们调用类的方法或属性时,如果不存在,就会报错。比如定义Student类: 调用name属性,没问题,但是,调用不存在的score属性,就有问题了: 错误信息很清楚地告 阅读全文
posted @ 2017-11-24 15:48 TimeTree 阅读(241) 评论(0) 推荐(0)
摘要:使用__slots__ 正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class: 然后,尝试给实例绑定一个属性: 还可以尝试给实例绑定一个方法: 但是,给一个实例绑定的方法,对另一个实例是不起作用的: 给cl 阅读全文
posted @ 2017-11-21 15:34 TimeTree 阅读(176) 评论(0) 推荐(0)
摘要:使用type() 首先,我们来判断对象类型,使用type()函数: 基本类型都可以用type()判断: 如果一个变量指向函数或者类,也可以用type()判断: 但是type()函数返回的是什么类型呢?它返回对应的Class类型。如果我们要在if语句中判断,就需要比较两个变量的type类型是否相同: 阅读全文
posted @ 2017-11-21 12:08 TimeTree 阅读(7170) 评论(0) 推荐(0)
摘要:继承和多态 在OOP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类、父类或超类(Base class、Super class)。 比如,我们已经编写了一个名为Animal的class,有一个run( 阅读全文
posted @ 2017-11-21 11:26 TimeTree 阅读(524) 评论(0) 推荐(0)
摘要:数据封装 面向对象编程的一个重要特点就是数据封装。在上面的Student类中,每个实例就拥有各自的name和score这些数据。我们可以通过函数来访问这些数据,比如打印一个学生的成绩: 但是,既然Student实例本身就拥有这些数据,要访问这些数据,就没有必要从外面的函数去访问,可以直接在Stude 阅读全文
posted @ 2017-11-21 10:19 TimeTree 阅读(13017) 评论(0) 推荐(0)
摘要:作用域 在一个模块中,我们可能会定义很多函数和变量,但有的函数和变量我们希望给别人使用,有的函数和变量我们希望仅仅在模块内部使用。在Python中,是通过_前缀来实现的。 公开:正常的函数和变量名是公开的(public),可以被直接引用,比如:abc,x123,PI等; 特殊:类似__xxx__这样 阅读全文
posted @ 2017-11-20 17:03 TimeTree 阅读(212) 评论(0) 推荐(0)
摘要:Partical function 便函数 Python的functools模块提供了很多有用的功能,其中一个就是偏函数(Partial function)。要注意,这里的偏函数和数学意义上的偏函数不一样。 在介绍函数参数的时候,我们讲到,通过设定参数的默认值,可以降低函数调用的难度。而偏函数也可以 阅读全文
posted @ 2017-11-19 23:48 TimeTree 阅读(1137) 评论(0) 推荐(0)
摘要:装饰器 由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。 函数对象有一个__name__属性,可以拿到函数的名字: 现在,假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式, 阅读全文
posted @ 2017-11-18 16:58 TimeTree 阅读(169) 评论(0) 推荐(0)
摘要:lambda 匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。 在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数: 通过对比可以看出,匿名函数lambda x: x 阅读全文
posted @ 2017-11-18 16:26 TimeTree 阅读(230) 评论(0) 推荐(0)
摘要:函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。 我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数: 调用lazy_sum()时,返回求和函 阅读全文
posted @ 2017-11-18 12:20 TimeTree 阅读(609) 评论(0) 推荐(0)
摘要:map 接收一个函数,和一个可迭代对象作为参数,将函数应用到可迭代对象中的每一项。并把结果新的iterator结果返回。 举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()实现如下: reduce 阅读全文
posted @ 2017-11-18 11:24 TimeTree 阅读(289) 评论(0) 推荐(0)
摘要:函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。 而函数式编程(请注意多了一个“式”字)——Functional Programming 阅读全文
posted @ 2017-11-17 13:01 TimeTree
摘要:生成器 通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。 所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的 阅读全文
posted @ 2017-11-13 17:43 TimeTree 阅读(247) 评论(0) 推荐(0)
摘要:递归函数 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = ( 阅读全文
posted @ 2017-11-13 15:52 TimeTree 阅读(269) 评论(0) 推荐(0)
摘要:import math语句表示导入math包,并允许后续代码引用math包里的sin、cos等函数。 然后,我们就可以同时获得返回值: 但其实这只是一种假象,Python函数返回的仍然是单一值: 原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个t 阅读全文
posted @ 2017-11-12 11:16 TimeTree 阅读(202) 评论(0) 推荐(0)
摘要:list: 有序 tuple: 另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改 dict: 无序 对比: 和list比较,dict有以下几个特点: 而list相反: 所以,dict是用空间来换取时间的一种方法。 dict可以用在需要高速查找的很多地 阅读全文
posted @ 2017-11-12 10:41 TimeTree 阅读(279) 评论(0) 推荐(0)
摘要:事件: 说明: lHistory标签内的文本设置成为eHello输入区域的内容,然后将eHello区域的文本删除. 可以使用字典风格的访问方式设置标签文本. delete() 用0 作为第一个参数,说明文本开始,第二个参数tk.END. 代表特殊值,代表文本的末端. 阅读全文
posted @ 2017-08-10 12:02 TimeTree 阅读(269) 评论(0) 推荐(0)
摘要:模块说明: Python中的cmd模块类型提供了一个创建命令行解析器的框架。简单的来说,可以继承Cmd来创建命令行界面,然后对所有想处理的命令command执行do_command方法。默认情况下,它使用readline来进行交互式操作、命令行编辑和命令完成。 测试代码: 输出: 阅读全文
posted @ 2017-08-08 12:32 TimeTree 阅读(505) 评论(0) 推荐(0)