随笔分类 - Python学习
摘要:程序能一次写完并正常运行的概率很小,基本不超过1%。总会有各种各样的bug需要修正。有的bug很简单,看看错误信息就知道,有的bug很复杂,我们需要知道出错时,哪些变量的值是正确的,哪些变量的值是错误的,因此,需要一整套调试程序的手段来修复bug。 第一种方法简单直接粗暴有效,就是用print()把
阅读全文
摘要:在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及错误的原因。在操作系统提供的调用中,返回错误码非常常见。比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1 用错误码来表示是否出错十分不便,因为函数本身应该返回的正确结果
阅读全文
摘要:当我们需要定义常量时,一个方法是用大写变量通过整数来定义,例如月份 好处是简单,缺点是类型int,并且仍然是变量。 更好的方法是为这样的枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例。Python提供了Enum类来实现这个功能: 这样我们就获得了Month类型的枚举类,可
阅读全文
摘要:切片 取一个list或tuple的部分元素是非常常见的操作。比如,一个list 取前3个元素,应该怎么做 笨方法,一个个列出来 假如需要列出N个但是N很大 循环方法 对于经常去指定索引范围的操作,用循环十分繁琐,因此pythone提供了切片操作符能大大简化操作 L[0:3]表示,从索引0开始,直到索
阅读全文
摘要:看到类似的__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的 Python中还有许多有特殊用途的函数,可以帮助我们定制类 __str__ 先定义一个Student类,打印一个实例 >>> class Student(object): ... def
阅读全文
摘要:继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能。 Animal类层次的设计,假设我们要实现以下4中动物 如果按照哺乳动物和鸟类,我们可以设计出这样的层次 如果按照能跑和能飞来分类,我们就应该设计出这样的层数 如果要把上面的两种分类都包含进来,我们就得设计更多的层次 哺乳类
阅读全文
摘要:参考:https://www.jianshu.com/p/c9a0b055947b https://xubiubiu.com/2019/06/10/python-%E6%96%B9%E6%B3%95%E8%A7%A3%E6%9E%90%E9%A1%BA%E5%BA%8Fmro-c3%E7%AE%97
阅读全文
摘要:在绑定属性时,如果我们直接把属性暴露出去,虽然写起来简单,但是,没有办法检查参数,导致可以把成绩随便改 这显然不会逻辑,为了现在score的范围可以,通过一个set_score()方法,同通过一个get_score()来获取成绩,这样,在set_score()方法里,就可以检查参数: 现在,对人员的
阅读全文
摘要:正常情况下,我们定义了一个class,创建了一个class实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性。先定义class: 尝试给实例绑定一个属性: 还可以尝试给实例绑定一个方法 但是,给一个实例绑定的方法,对另一个实例是不起作用的: 为了给所有实例都绑定方法,可以给class
阅读全文
摘要:当我们拿到一个对象的引用时,如何知道这个对象是什么类型,有哪些方法呢 使用type() 判断对象类型使用type()函数 基本类型都可以用type()判断 如果一个变量指向函数或者类也可以用type()判断 type()函数返回的是什么类型,它返回对应的Class类型。如果我们要在if语句中判断,就
阅读全文
摘要:在OPP程序设计中,当我们定义一个class的时候,可以从某个现有的class继承,新的class称为子类(Subclass),而被继承的class称为基类,父类或超类 例如,我们已经编写了一个名为Animal的class,有一个run()方法可以直接打印 当我们需要编写Dog和Cat类时,就可以直
阅读全文
摘要:在Class内部,可以有属性和方法,而外部代码可以通过直接调用实例变量的方法来操作数据,这样,就隐藏了内部的复杂逻辑。 但是,从前面的Student类定义来看,外部代码还是可以自由地修改一个实例的name,score属性 如果要让内部属性不被外部访问,可以把属性的名称前面加上两个下划线__,在pyt
阅读全文
摘要:面向对象的重要概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如学生类Student,而实例是根据类创建出来的一个个具体的对象,每个对象都拥有相同的方法,单各自的数据可能不同。 以Student为列,在Python中,定义类是通过class关键字 class关键字后面紧
阅读全文
摘要:在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Python中,一个.py文件就称之为一个模块(Module)
阅读全文
摘要:通过设定参数的默认值,可以降低函数调用的难度。偏函数可以做到这一点 int()函数可以把字符串转换成十进制整数,当传入字符串时,int()默认把字符串为十进制 但int()函数还提供额外的base参数,默认值为10。如果传入base参数,可以做N进制转换 PS:base=8把字符串作为8进制转换成1
阅读全文
摘要:参考:https://www.cnblogs.com/songyue/p/5196809.html 例如以前写了一个简单的函数sum1如下 运行结果为 假如需要新加一个功能查看该函数运行执行了多长时间,可以导入时间模块记录开始时间及结束时间,用结束时间减开始时间及可得到运行时间,修改函数如下 运行结
阅读全文
摘要:当我们在传入函数时,有些时候,不需要显式定义函数。直接传入匿名函数更方便,例如 效果等同于定义函数f(x)求平方 关键字lambda表示匿名函数,冒号前面的x表示函数参数 匿名函数有个限制,就是只能有一个表达式,不用写return,返回就是改表达式的结果。 匿名函数有个好处,因为函数没有名字,不必担
阅读全文
摘要:排序算法 Python内置的sorted()函数可以对list进行排序 此外,sorted也是一个高阶函数,它还可以接收一个key函数来实现自定义排序,例如按绝对值大小排序 key指定的函数将作用于list的每一个元素上,并根据返回的结果进行排序 然后sorted()函数按照keys进行排序,并按照
阅读全文
摘要:参考:https://www.cnblogs.com/jasmine0627/p/9510296.html 将字符串s="helloworld"反转为‘dlrowolleh’ fanzhuan.py 输出
阅读全文
摘要:参考:https://www.cnblogs.com/mzc1997/p/7641995.html Python中函数不仅可以作为参数还可以作为结果返回 如果在一个内部函数里对外部作用域(但不是全局作用域)的变量进行引用,内部函数称为闭包(closure) 函数fun2对fun1的参数n进行了引用,
阅读全文