python笔记

ctrl + / 注释

python中的整数的大小没有限制,可以是一个无限大的整数

对浮点数进行运算时,可能会得到一个不精确的结果

input() 返回为字符串

如果形参执行的是一个对象,当我们通过形参去修改对象时,会影响到所有指向该对象的变量

要想不让形参改变指向该对象的变量,需传入变量的副本或切片

定义函数时,可以在形参前边加一个*,这样这个形参将会获取到所有的实参

*a会接受所有的位置参数,并且将这些实参统一保存到一个元组中(装包)

a可以接受关键字参数,只能有一个,并且必须写在所有参数的最后对参数解包,用

方法和函数的区别:

如果是函数调用,则调用时传几个参数,就会有几个实参

但是如果对方法调用,默认传递一个参数,所以方法中至少定义一个形参

类对象和实例对象都可以保存属性和方法

   如果这个属性是所有的实例共享时,则应该将其保存到类对象中

   如果这个属性是某个实例独有,则应该保存到实例对象中

   一般情况下,属性保存在实例对象中,方法保存在类对象中

方法中不能直接访问类中的属性

方法的第一个参数,就是调用方法的对象本身

   如果是p1调的,则第一个参数就是p1对象

   如果是p2调的,则第一个参数就是p2对象

特殊方法:以双下划线开头,双下划线结尾,不要尝试调用特殊方法

init会在对象创建以后立即执行

init可以用来向新创建的对象中初始化属性

创建对象的流程:

   1.创建一个变量

   2.在内存中创建一个新对象

   3.init(self)方法执行

   4.将对象的id赋值给变量

  可以为对象的属性使用双下划线开头,xx 双下划线开头的属性,是对象的隐藏属性,隐藏属性只能在类的内部访问,无法通过对象访问 但是可以通过_类名xx进行访问

  一般情况下,使用下划线开头的属性都是私有属性,没有特殊要求,不建议修改

装饰器:

使用property装饰的方法,必须和属性名是一样的

 @属性.setter/getter 提供读和写的权限

若子类只能实现父类的大部分功能,但是不能实现全部功能,则用继承

python支持多重继承,即一个类可以继承多个父类,不建议使用多重继承

实例方法:

   在类中定义,以self为第一个参数的方法都是实例方法

   实例方法在调用时,python会将调用对象作为self传入

   当通过实例调用时,会自动将当前调用对象作为self传入

   当通过类调用时,不会自动传递self

类方法:

  在类内部使用@classmethod来修饰的方法属于

  类方法 类方法第一个参数是cls,也会被自动传递,cls就是当前的类对象

   类方法和实例方法的区别:类方法的第一个参数是self,而类方法的第一个参数是cls

静态方法:

   在类中使用@staticmethod来修饰的方法属于静态方法

   静态方法不需要指定任何默认参数,静态方法可以通过类和实例调用

   静态方法,基本放是一个和当前类无关的方法,他只是一个保存到当前类中的函数 一般都是一些工具方法,和当前类无关

在程序中,没有被引用的对象都是垃圾

python有垃圾回收机制,不需要手动执行

特殊方法:

   str (print函数打印)

   repe(交互模式自动打印)

python中一个py文件就是一个模块

namemain的模块,为主模块

添加了的变量,只能在模块内部访问,在通过import *引入时,不会引入开头的变量 py执行代码前,需要被解释器先转换为机器码,然后再执行

   所以我们在使用模块(包)时,也需要将模块的代码先转换为机器码然后再交由计算机执行

   而为了提高程序运行的性能,python会在编译过一次之后,将代码保存到一个缓存文件中 这样在下次加载这个模块时,就可以不再重新编译而是直接加载缓存中编译好的代码即可

异常的传播:

   如果函数中没有对异常进行处理,则异常会继续向函数调用处传播

   如果函数调用处处理了异常,则不再传播,如果没有处理则继续向调用处传播

   知道传递到全局作用域(主模块)如果依然没有处理,则程序终止,并且显示异常信息

Exception是所有异常的父类,所以如果exception后跟的是Exception,他也会捕获所有的异常

try是必须的,else语句有没有都行

except和finally至少有一个

目标文件和当前文件在同一级目录下,则直接使用文件名即可

在windows系统使用路径时,可以使用/来代替

或者使用来代替

或者也可以使用原始字符串 r' 文件' 表示目录时,可以使用..来返回一级目录

绝对路径应该从磁盘的根目录开始书写

open()打开文件时,默认是以文本文件的形式打开的,但是open()默认的编码为None

所以处理文本文件时,必须要指定文件的编码

通过read()读取文件中的内容

   如果直接调用read()他会将文本文件的所有内容全部读取出来

   如果读取的文件较大的话,会一次性将文件的内容加载到内存中,容易导致内存泄漏

'w' 写

'a' 追加

'r+'既可读又可写

'w+'

'a+'

x创建文件

t读取文本文件

b读取二进制文件

 

 就先酱吧~

原文地址:https://www.cnblogs.com/dreamzj/p/14332670.html