
Python随手笔记
文章平均质量分 82
根据自己每天学的要点及时记录,供大家参考
每天精彩多一点
希望每天的生活都绚丽多彩
展开
-
Python随手笔记(十一)--------那些值得你掌握的内置函数
文章目录内置函数概览内置函数概览 abs all any bin bool bytes 优快云输入...原创 2020-04-13 23:45:05 · 913 阅读 · 0 评论 -
Python随手笔记(十)--------(2)
调试每个程序能一次写完并正常运行的概率基本不超过1%,因为总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。第一种方法简单直接粗暴有效,就是用print()把可能有问题的变量打印出来看看:def foo(s): n = int(s) ...原创 2020-03-03 13:40:55 · 268 阅读 · 0 评论 -
Python随手笔记(十)--------错误,调试和测试(1)
错误处理在预防程序发生运行错误的时候,可以预先设置返回一个错误代码,然后在执行程序的时候,就会知道程序是否正确。用错误码来表示是否出错有时候也十分的不方便,因为函数本身应该返回的正常结果和错误码混在一起,会导致必须用大量的代码去判断代码是否出错:def foo(): r = some_function() if r == (-1): return -1 ...原创 2020-03-01 14:28:17 · 259 阅读 · 0 评论 -
Python随手笔记(九)--------面向对象高级编程(6)
使用元类type()动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。比方说我们要定义一个Hello的class,就写一个hello.py模块:class Hello(object): def hello(self,name='world'): print('Hello,%s'%name)然后创造实例进行调用:>>> h...原创 2020-02-27 12:08:29 · 184 阅读 · 0 评论 -
Python随手笔记(九)--------面向对象高级编程(5)
使用枚举类当我们需要定义常量时,一个办法是用大写变量通过整数来定义,例如月份:JAN = 1FEB = 2MAR = 3NOV = 11DEC = 12…好处是简单,缺点是类型是int,并且仍然是变量。更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum类来实现这个功能:>>> from ...原创 2020-02-26 17:15:40 · 340 阅读 · 0 评论 -
Python随手笔记(九)--------面向对象高级编程(4)
定制类看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的。__slots__我们已经知道怎么用了,len()方法我们也知道是为了能让class作用于len()函数。Python的class中还有许多这样有特殊用途的函数,可以帮助我们定制类。__str__()先定义一个Animal类,并打印一个实例:>>> cl...原创 2020-02-25 16:03:53 · 419 阅读 · 3 评论 -
Python随手笔记(九)--------面向对象高级编程(3)
多重继承继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。前面我们曾经设计过一个Animal的类,现在我们要选用几种动物来继承这个类。动物这个类有好多种分类方式,比如说按照哺乳动物和鸟类分类,或者按照可以实现的行为,会飞会跑的来分类,如果要把上面的两种分类都包含进来,我们就得设计更多的层次:哺乳类:能跑的哺乳类,能飞的哺乳类;鸟类:能跑的鸟类,能飞的鸟类。...原创 2020-02-25 13:40:26 · 273 阅读 · 0 评论 -
Python随手笔记(九)--------面向对象高级编程(2)
使用@property在绑定属性时,如果我们直接把属性暴露出去,虽然写起来很简单,但是,没办法检查参数,导致可以把成绩随便改:>>> an = Animal()>>> an.age = 2000这显然不合逻辑。为了限制age的范围,可以通过一个set_age()方法来设置成绩,再通过一个get_age()来获取成绩,这样,在set_age()方法里,就...原创 2020-02-23 14:09:29 · 166 阅读 · 0 评论 -
Python随手笔记(九)--------面向对象高级编程(1)
9.1 使用_slots_正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class:>>> class Animal(object): pass然后,尝试给实例绑定一个属性:>>> an = Animal()>>> an.name = 'w...原创 2020-02-23 12:02:21 · 207 阅读 · 0 评论 -
Python随手笔记(八)--------面向对象编程(5)
8.5 实例属性和类属性给实例绑定属性的方法是通过实例变量,或者通过self变量:>>> class Animal(object): def __init__(self,name): self.name = name>>> an = Animal('wangda')>>> an.age = 3如果Student类本身需要绑定...原创 2020-02-22 18:32:30 · 162 阅读 · 0 评论 -
Python随手笔记(八)--------面向对象编程(4)
8.4 多态当子类和父类都存在相同的run()方法时,我们说,子类的run()覆盖了父类的run(),在代码运行的时候,总是会调用子类的run()。这样,我们就获得了继承的另一个好处:多态。要理解什么是多态,我们首先要对数据类型再作一点说明。当我们定义一个class的时候,我们实际上就定义了一种数据类型。我们定义的数据类型和Python自带的数据类型,比如str、list、dict没什么两样:...原创 2020-02-22 17:01:10 · 179 阅读 · 0 评论 -
Python 之 模块
为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)。使用模块最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Python内置的模块和来自第三方...原创 2020-02-21 17:02:26 · 279 阅读 · 0 评论 -
Python 之 返回函数
函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。在以前的学习中,我们可能看见的求和函数都是像下面这样的:def calcu(*args): ax = 0 for n in args: ax = ax + n return ax但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎么办?可以不返回求和的结果,而是返回求和的函数:>>...原创 2020-02-21 15:34:19 · 370 阅读 · 0 评论 -
Python高级函数(三)
sorted()函数排序算法在各种程序中都有广泛的应用,排序的核心就是按照某种规则比较所谓的“大小”,然后交换位置,如果是数字,我们可以直接比较,但如果是字符串或者两个字典呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。Python的内置sorted函数就可以对list进行排序。>>> sorted([36,5,15,-9,12,24])[-9...原创 2020-02-21 13:00:19 · 222 阅读 · 0 评论 -
Python高级函数(二)
filter()Python内建的filter()函数用于过滤序列。和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。例如,在一个list中,删掉偶数,只保留奇数,可以这么写:>>> def odd(n): return n % ...原创 2020-02-19 18:14:25 · 191 阅读 · 0 评论 -
Python高阶函数(一)
map/reducePython 内建了 map()和 reduce()函数。我们先看 map。map()函数接收两个参数,一个是函数,一个是 Iterable,map 将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator 返回。...原创 2020-02-19 12:53:19 · 226 阅读 · 0 评论 -
Python高级特性(三)
生成器通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含 100 万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。在 Python 中,这种一边循环一边计算的机制,称为生成器:generator。要创建一个 generator,有很多种方法。1.只要把一个列表生成式的[]改...原创 2020-02-17 15:33:38 · 129 阅读 · 0 评论 -
Python高级特性(二)
迭代如果给定一个 list 或 tuple,我们可以通过 for 循环来遍历这个 list 或tuple,这种遍历我们称为迭代。Python 的 for 循环不仅可以用在 list 或 tuple 上,还可以作用在其他可迭代对象上。list 这种数据类型虽然有下标,但很多其他数据类型是没有下标的,但是,只要是可迭代对象,无论有无下标,都可以迭代,比如 dict 就可以迭代:>>&...原创 2020-02-17 14:55:33 · 157 阅读 · 0 评论 -
Python高级特性(一)
掌握了 Python 的数据类型、语句和函数,基本上就可以编写出很多有用的程序了。比如构造一个 1, 3, 5, 7, …, 99 的列表,可以通过循环实现:L = []n = 1while n <= 99: L.append(n) n = n + 2print(L)[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 2...原创 2020-02-17 13:28:55 · 265 阅读 · 0 评论 -
Python随手笔记(八)--------面向对象编程(3)
8.3 继承编写类时,并非总是要从空白开始。如果你要编写的类是另一个现成类的特殊版本,可使用继承 。一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类 。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。8.3.1 子类的方法__init__()创建子类的实例时,Python首先需要完成的任务是给父类的所有属性赋值。为此,子类的方法_...原创 2020-02-16 12:44:54 · 203 阅读 · 2 评论 -
Python随手笔记(八)--------面向对象编程(2)
8.2 使用类和实例8.2.1 给属性赋默认值类中的每个属性都必须有初始值,哪怕这个值是0或空字符串。在有些情况下,如设置默认值时,在方法__init__() 内指定这种初始值是可行的;如果你对某个属性这样做了,就无需包含为它提供初始值的形参。就像下面的bones属性:class Dog(): def __init__(self, name, age, bones): ...原创 2020-02-15 19:11:35 · 305 阅读 · 2 评论 -
Python随手笔记(八)--------面向对象编程(1)
面向对象编程是最有效的软件编写方法之一。在面向对象编程中,你编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。编写类时,你定义一大类对 象都有的通用行为。根据类来创建对象被称为实例化 ,这让你能够使用类的实例。8.1 创建和使用类8.1.1 创建一个dog类class Dog(): def __init__(self,name,age): self.name =...原创 2020-02-15 18:28:42 · 176 阅读 · 0 评论 -
Python随手笔记(七)--------字符串
你已经知道如何用+操作符连接两个字符串,但能做的事情还要多得多。可以从字符串中提取部分字符串,添加或删除空白字符,将字母转换成小写或大写,检查字符串的格式是否正确。你甚至可以编写 Python 代码访问剪贴板,复制或粘贴文本。6.1 处理字符串6.1.1 字符串字面量...原创 2020-02-12 16:06:19 · 468 阅读 · 1 评论 -
Python随手笔记(六)------字典和结构化数据
6.1字典数据类型像列表一样,“字典”是许多值的集合。但不像列表的下标,字典的索引可以使用许多不同数据类型,不只是整数。字典的索引被称为“键”,键及其关联的值称为“键-值”对。在代码中,字典输入时带花括号{}。>>> face = {'name':'wenhong','age':11,'sex':'male'}这句话的意思就是将一个字典赋值给face变量,这个字典有三个键...原创 2020-02-07 18:04:27 · 435 阅读 · 1 评论 -
Python随手笔记(五)------列表
5.1列表数据类型“列表”是一个值,它包含多个字构成的序列。术语“列表值”指的是列表本身(它作为一个值,可以保存在变量中,或传递给函数,像所有其他值一样),而不是指列表值之内的那些值。在交互式环境输入如下代码:spam 变量仍然只被赋予一个值:列表值。但列表值本身包含多个值。[]是一个空列表,不包含任何值,类似于空字符串5.1.1用下标取得列表中的单个值假定列表[‘cat’, ‘ba...原创 2020-02-06 17:15:22 · 799 阅读 · 1 评论 -
Python随手笔记(四)
Python提供了一些内建函数,同时也支持自己定义的函数,每个函数就像一个程序里的小程序4.1def语句和参数def语句中可以加入一些参数放到括号之中,有个小例子:def hello(a): print('Hello, '+ a)hello('吕世龙')如果调用 len()函数,并向它传入像’Hello’这样的参数,函数调用就求值为整数 5。这是传入的字符串的长度。一般来说,函...原创 2020-02-05 12:31:47 · 556 阅读 · 1 评论 -
Python随手笔记(三)
3.1break语句在笔记二的最后的例子程序中,我们提到了一个while循环,而当我们把一个有限的while循环修改为一个无限循环的时候,中间需要有停止的时候,就用上了break语句。例如:1.while True: print('Enter your name')2. name = input()3. if name == 'wangda':4. break5.print('Th...原创 2020-02-03 20:05:23 · 490 阅读 · 1 评论 -
Python随手笔记(二)
操作符的区别你可能已经注意到,==操作符(等于)有两个等号,而=操作符(赋值)只有一个等号。这两个操作符很容易混淆。只要记住: ==操作符(等于)问两个值是否彼此相同。 =操作符(赋值)将右边的值放到左边的变量中。为了记住谁是谁,请注意==操作符(等于)包含两个字符,就像!=操作符(不等于)包含两个字符一样。原创 2020-02-03 14:22:08 · 314 阅读 · 1 评论 -
Python随手笔记(一)
自学Python笔记1.1 在交互式环境中输入表达式一个窗口会出现,包含>>>提示符,这就是交互式环境。在提示符后输入 2 + 2, 让 Python 做一些简单的算术。2 + 2=4IDLE 窗口现在应该显示下面这样的文本:在前面的例子中,2 + 2 被求值为单个值 4。没有操作符的单个值也被认为是一个表达式,尽管它求值的结果就是它自己,像下面这样:如果需要,...原创 2020-02-01 16:15:29 · 3026 阅读 · 2 评论