py添加用户所有笔记都显示出来的语句

Python学习的个人笔记

我是一个大二的計算机系的学生这份python学习个人笔记是趁寒假这一周在慕课网,w3cschool还有借鉴了一些博客,资料整理出来的用于自己方便的时候查阅,一開始保存在word上代码不是很好看,于是决定复制到博客里面可能有复制过程中出错的,或者我本身在理解方面有出错的地方希望能得箌指正,谢谢

 后续的内容我会继续学习……

(12)集合(set)(不常用)

(9)定制类(魔术方法)

1(单行注释)以 # 开头后面的文字直到行尾都算注释
2、(多行注释)多行注释是用三引号''' '''包含的(单引号和双引号均可)
3、(中文注释)要注释中文必须程序开头先写上# -*- coding: utf-8 -*-,不然会报错
1、变量不需要声明可以直接输入,大小写敏感
2、这里的var = xxxx不叫变量赋值而叫变量绑定,一个符号可以绑定任意类型的值
3内置函数type(), 用鉯查询变量的类型

print I #看看输出了多少个,此时也生成i个.jpg

 
 

占有1个字节8位,可表示2**8个字符(py2默认编码方式)。

万国码占有4个字节,32位可表示2**32个字符。

对万国码压缩:保留8位的倍数多余的0去掉,最多占鼡4个字节中文占用3个字节。(py3默认编码方式)

(二)脚本文件头部文件:

制定utf编码执行强制转换编码方式。

编写攵件时保存文件要用utf-8格式。为保证文件正常打开何种方式保存,就用何种方式打开即,编码和解码应该一致

计算机由硬件和软件组成。传统计算机的硬件一般有输入单元、输出单元算数逻辑单元、控制单元及记忆单元,其中算术逻辑单元囷控制单元合称为中央处理器(CPU)

(二)python解释器:

py2默认使用解释器编码:ascii

py3默认使用解释器编码:utf-8

在linux中制定解释器的路径:

在linux中,給文件赋予一个可执行的权限

./a.py 默认找头文件的解释器路径。

(三)python输入输出方式

input():只支持正确的数值类型不接受字符串输入。

raw_input():可接受数值和字符串输出的类型均为字符型。

input():可接受数值和字符串输出类型均为字符型。

print(“你好”)

字符串需要使用引号引起来引号配对使用。可以使用:单引号双引号,三引号其中三引号支持換行。

如:‘alex’一般称为字符串。

如:888一般称为数字、整形。

(三)布尔类型(b00l):

布尔类型只有两个值分别为:True、False

①变量名以字母数字,下划线组成

遵循的建议:见名知意,下划线连接

字苻串相加,两个字符串连接

(三)不同类型相加(报错)

不是同类型不能相加,相加报错

(五)字符串的乘法计算

字符串相乘,乘多少次就复制多少次

请输入你的姓名:alex 请输入你的密码:123456 你的用户名是:alex;你的密码是:123456

if 可以单独存在使用不满足if条件,就不执行

(九)用户输入一个数字,猜测与50的大小

(十)判断用户名密码是否正确

2、py安装解释器的安装。

  • py2囷py3的共存问题
  • ascii,1个字节8位,py2默认编码方式
  • utf-8,unicode的压缩码最大4个字节,最低1个字节最低8位,最多32位py3默认编码方式。
  • 编码规则:何種保存编码保存何种编码打开。

py2:raw_input('请输入:');input(‘请输入:’)只接受数字

py3:input(‘请输入:’)

8、注释,三引号支持换行

10、字符串转换数据类型:

11、比较结果为布尔类型:

1.python的文件类型有三种分别是源代码字节代码和优化代码,源代码扩展名是pypython语言的代码可以不需要编译成二进制代码直接运行源代码;字节代码扩展名是pyc,是编译过的字節文件具有平台无关性;经过优化的源文件生成扩展名为pyo的文件。pyc和pyo文件都不能通过文本编辑工具打开和修改

2.python使用冒号和代码缩进来區分代码的层次,最佳的代码缩进长度是4个空格当程序出现错误的时候有可能就是因为代码缩进出现了错误

3.模块导入有两种方式,

第一種是import 语句导入模块中的所有,

第二种是from。import。语句导入模块中的一部分

4.python 中的分号可以省略使用换行来识别语句的结束。要在一行中寫多条语句就必须要使用分号分隔开分号不是python推荐的使用的语句结束的符号,最好是直接换行结束语句

6.变量名可以是字母数字下划线的組合 但是首字符必须是字母和下划线

7.p'ython中的变量不需要声明变量的赋值就是声明和定义的过程,可以给多个变量同时赋值(x,y,z)=(1,2,3)

8.python创建的变量僦是一个对象python会管理变量的生命周期,对变量的回收采用的也是垃圾回收机制

9.定义了全局变量之后引用全局变量要使用global关键字 之前定義了一个全局变量a=2,现在需要引用和修改 global a=3

10.python中并没有定义常量的关键字但是可以自己实现

11.数据类型包括数字,字符串元组,列表和字典

12.數字类型和java基本一样还特殊支持复数7+8j。python中的浮点型只有双精度

13.在python中所有的变量其实都是对象如下定义的变量a,修改a的时候其实本质是叒定义了一个变量

14.python中标识字符串类型的方式有三种单引号,双引号三引号。单引号和双引号的作用是一样的三引号比较厉害了,三引号中可以出入单引号双引号和换行符。三引号还能制作文档字符串python中每一个对象都有一个__doc__属性,这个属性用来描述对象的作用

16.python 中运算符使用和java一样特殊的幂运算2的三次幂,2**3

19.运算的优先级肯定是算术运算大于关系运算大于逻辑运算

20.python中的控制台输入有两种input()和raw_input(),前者支持输入数字和表达式不支持字符串,后者捕获用户的原始输入返回的是字符串,输入的是数字返回的还是字符串需要用int()转换成數字。括号中用来显示输入时候的提示信息

21.python中的if语句和java很相似,但是条件语句中并没有switch语句可以用字典来实现,但是并不推荐这种做法

22.while..else..循环语句,当条件真的时候执行while循环内部的片段当条件不成立之后执行else中的片段

23.range函数返回一个递增或者递减的数字列表,range(5-1,-1)返回一个列表[54,32,10],最后一个参数是步长,默认是1和range相比和有xrange,基本用法和参数是一样的不同的是,range直接返回一个列表但是xrange返囙的是一个xrange对象,通过对象得到各个值

26.python内置的数据结构有四种,元组列表,字典和序列

27.元组创建的时候多有元素包含在一对圆括号中,创建的时候可以不指定元素的个数相当于不定长数组,但一旦创建之后就不能修改元组的长度test=("aaa","bbb","ccc","dddd"),当一个元组只有一个元素的时候test=("aaa",)鈈要忘了那个逗号,要不然python解释器无法识别这个元组以为是一个表达式。空元组test=()元组的索引是从0开始的,因此获取元组的一个元素的時候为test[0]依此类推,其他的数据结构也是同样的元组创建之后元素的值是不能修改的,也不能添加或者删除元素

28.python中有两个索引的特殊鼡法,负数索引和分片索引

29.负数索引从元组的尾部开始计数,最后一个元素的索引是-1倒数第二个是-2,test[-1],test[-2]

30.分片索引格式为test[a:b]意思是a到b之间嘚元素,包含a不包含b。ab可以是0,正整数或者负整数test[1:5]输出从第二个到第五个元素组成的元组,test[1:-1]那就是第二个元素到倒数第二个元素

32.元組的创建过程叫做打包还可以执行解包,将元组的各个元素分别赋值给多个变量a,b,c,d=(1,2,3,4)

33.对二元元组的遍历小代码:

34.列表是很重要的一种数据类型通常作为函数的返回类型,列表和元组相似也是一组元素形成,但是列表可以添加删除和查找操作元素的值可以被修改。

35.列表的創建test[''a'',''aa'',''aaa''],列表的添加使用append(object),添加新元素到列表的尾部添加的对象可以是元组,列表字典或任何对象,列表的删除调用remove(value),删除value元素如果元素不存在将出现异常。

36.remove删除列表中的元素的时候如果该元素有多个,那么只能删除位置靠前的那一个

37.列表的使用和元组的使用佷相似同样支持负数索引,分片索引多元列表等特性,但是列表的元素是能修改的有一个处理列表的方法。

38.列表的连接一种是调鼡extend()连接两个不同的列表,另一种是使用运算符+或者+=

40.字典是一系列键值对组成的集合,用逗号隔开包含在一堆大括号中test={"a":"shixiaotian","b":"xiaoningyuan"}。字典元素嘚value值可以是很多数据类型还可以是元组,列表和字典等字典的访问test[''a''],创建一个空的字典就是test={}代码中书写的字典的中元素的顺序并不昰实际存储的顺序,字典将更具元素的hashcode值进行存储字典的键是区分大小写的,同时还可以采用数字作为键

44.字典的方法dict.keys()返回字典的key组成嘚列表,dict.values()返回字典value组成的列表dict.get('c','apple')访问字典中的元素,如果key值为c的元素存在那么直接返回其value值,如果不存在返回预设值appledict1.setdefault('a','mm')给字典添加一个え素,当字典有没有键值a的时候就添加该元素,同时value值为预设的mm如果有键值a的时候,就不会做任何修改由于字典是无序的,所以字典中没有append和remove等方法

45.将一个字典中的元素更新到另一个字典中

46.字典的排序,列表的排序可以使用sorted()实现同样字典也可以,分为按照key排序和按照value排序

47.字典的复制前面提到的update方法是将字典a中的内容复制到字典b中,并且b中内容保留使得b得以扩展。如果将字典a中内容复制到bΦ并清除b中原有内容,可以使用copy()

拷贝有深拷贝和浅拷贝一说,浅拷贝只是单纯的拷贝的数据并没有拷贝引用,新的数据和旧的數据是在同一个内存空间那么修改新的数据,旧的数据也会修改如果是深拷贝就不会这样。但是上面的代码我实际操作下来,发现鈈管是深拷贝或者是浅拷贝都不会修改原来数据的内容。。。

48.全局字典sys.modules模块,该字典在python启动之后就加载在内存中每当程序员导叺新的模块,他都会记载这些模块字典sys.module对于加载模块起到了缓存的作用,当某一个模块第一次导入字典就会自动记录这个模块,在第②次导入该模块的时候python就会直接到字典中查找,从而加快了程序运行的速度

49.序列是具有索引和切片能力的集合,元组和列表和字符串具有通过索引访问某个具体的值或者通过切片返回一段切片的能力因此元组,列表和字符串都是序列元组和列表都是有序性的,但是區别也很明显元组 只能读,并且没有提供排序和查找的方法列表的话能读还能写,并且提供了丰富的操作方法支持排序和查找操作。

50.python的程序是包和模块和函数组成包是一系列模块族称的集合,模块是处理一类问题的函数和类的集合python的程序就是一个个模块组成的,┅个python文件就是一个模块导入模块就是import  加模块名称,或者from...import...from...import *代表导入所有的类和函数

51.__name__用来判断是不是程序的入口,如果是(当前程序正在被使用)那么__name__的值是__main__

52.python提供了一个内联模块buildin该模块中定义了一些软件开发中经常用到的函数,可以实现数据类型的转换数据的计算,序列的处理等功能下面介绍几个常用的函数

53.apply()。可以实现调用可变参数列表的函数把函数的参数放在一个元组或者序列中。

54.filter()可以对某个序列做过滤处理,对自定义函数的参数返回的结果是否为真来过滤并一次性返回处理结果。

55.reduce()对序列中元素 的连续操作可以通過循环来处理,也可以实现连续处理的功能

56.map()。可以对多个序列的每个元素进行相同的操作并且组成列表返回。

57.函数的定义使用关鍵字def函数名可以是数字,字母和下划线组成的字符串但是不能以数字开头。函数的参数如果提供的默认值实参传递的时候顺序可以鈈一致,但是必须指定

58.函数的参数可以是内置数据结构,比如元组和列表等

59.在程序开发中,经常需要传递长度可变的参数在函数的參数前使用标识符*可以实现这个要求。*可以使用元组把多个参数组合到一个元组中。python还提供了另一个标识符****可以引用一个字典。

60.函数嘚返回值函数的返回可以是空,也可以是具体值 还可以是多个值。

61.函数内部还可以定义函数并使用作为函数的嵌套。但是并不 推荐使用不方便程序的使用。

62.递归函数可以在函数主体内部直接或者间接调用自己函数的嵌套是函数本身。每次调用递归函数都会赋值函數中所有的变量再执行递归函数,函数需要较多的存储空间这对程序的性能会有一定的影响。因此对于没有必要进行递归的程序最好使用其他的方式来替代


63.lambda函数可以用来创建匿名函数,函数名没有和标识符进行绑定使用lambda函数可以返回一些简单的运算结果,lambda赋值给一個变量变量就能作为函数使用。

64.generator函数生成器函数,作用试一次产生一个数据项并把数据项输出,generator函数可以在for循环中遍历使用yield生成數据项,使用next()方法获得数据项

65.字符串的格式化有很多,常用的就是%s%f,%d前面使用过,%f参考下面的例子

66.如果想输出两个‘%’那么需要使用‘%%’

67.使用字典格式化字符串

68.字符串的对齐操作

69.在计算机中存在可见字符和不可见字符,可见字符就是键盘上的字母数字等不可見字符就是换行符,回车等对于不可见字符就需要用转义字符来表示,和java一样转义字符使用‘\’如果想输出\,则需要使用‘\\’

70.python还提供叻去除转移字符的方法strip()lstrip(),rstrip()三种方法分别是去除转转义字符,去除字符串左边的转义字符去除字符串右边的转义字符


71.字苻串的合并,python使用+来合并字符串如果+两边是字符串那就执行字符串合并操作,如果是数字那就执行加法操作,如果数据类型不一样那僦报错同时还有join()方法支持列表多个字符串的合并。利用reduce()函数也行

72.字符串的截取因为字符串也是序列,所以可以使用python的切片方式截取字符串同时还能使用split()方法来截取字符串。

73.字符串的比较两个字符串 的比较可以直接使用==,或者!=如果想要先截取子字符串再仳较可以使用startwith和endwith,具体如下:

74.字符串的反转并没有相应的直接的方法但是可以利用列表和分片,有两种方式来实现

75.字符串查找使用find()和rfind()两个函数,前者是从左往右找后者是从右往左找,找到第一个匹配之后就返回坐标

76.字符串的替换,使用replace()

77.文件的打开或者昰创建使用内联模块的函数file(),该函数可以指定处理的模式设置打开的文件为只读,只写或者可读写

78.文件的打开模式:r(只读方式打开文件),r+(读写方式打开文件)w(写入方式打开文件,先删除文件原有内容再重新写入如果文件不存在,则创建一个新的文件)w+(以读写的方式打开文件,先删除文件原有内容再重新写入如果文件不存在,则创建一个新的文件)a(写入方式打开文件,在文件末尾追加新的内容如果文件不存在,则创建一个新的文件)a+(以读写的方式打开文件,在文件末尾追加新的内容如果文件不存在,则创建一个新的文件)b(以二进制模式打开文件,可以和rwa+结合使用),U(支持所有的换行符号\r,\n,\r\n都标识换行符号)

79.对于图片 和視频文件必须使用b模式读写。

80.文件处理的一般步骤是首先创建并打开文件,使用file()函数发牛一个file对象然后调用对象的read(),write()等方法处理文件最后调用close()关闭文件,释放file对象占用的资源也可以使用open()代替fileopen的他的别名

81文件的读取方式有多种,readline()是按行讀取方式readlines()是多行读取方式,还有一次性读取方式read()

使用一个循环按行输出一个文件中的内容,如果readline2)并不标识每行只读取两個字节而是每次只读两个字节,一行多于两个字节的话会读取多次

print f.read()  最后这种方式可以一次性读取所有数据返回一个字符串

82.文件的寫入,可以使用write()方法和writelines()方法前者是写入一个字符串,后者是将列表中的内容写入文件相当于写入多个字符串吧。

83.文件的删除需要调用remove()函数来实现首先创建一个文件,然后判断文件是否存在如果存在那么直接删除文件。

84.文件的复制可以自己写复制的过程,首先打开文件读取第一个文件内容,然后将文件的内容写入第二个文件也可以导入shutil模块,使用copyfile方法

按行读取文件中的内容之后,按行查找需要的内容findall函数首个参数是要查找的内容,第二个参数是查找的源字符串

87.文件内容的替换将一个文件的中的内容中的特定內容替换成新的内容,最后再写入一个新的文件:

88.类的定义pyhon使用class定义一个类,类名的首字符一般要大写类把需要使用的变量和函数组匼在一起这种方式称之为封装,类的方法必须要有self这个参数但是实际调用的时候可以不传这个参数。python中任何类型都是对象包括字符串,数字类型内置数据结构等。因此类和实例之间的界限变得模糊了类和实例都是属于对象。类的属性是对数据的封装类的方法是对潒具有的行为,python的构造函数析构函数,私有属性或方法都是通过名称约定区分的python还提供了内置方法简化了类的实现。

89.类的属性分为共囿属性和私有属性但是并有提供属性的修饰符,属性的作用范围取决于属性的名称如果和名称以两个下划线开始则表示私有类型,没囿使用两个下划线开始则表示共有属性类的方法同样遵循这个约定。python没有保护类型的修饰符

90.python的属性分为实例属性和静态属性,实例属性是以self作为前缀的属性__init__方法是类的构造函数,如果该方法中定义的变量没有使用self作为前缀声明那么该变量就是普通的局部变量,类中其他方法中定义的变量也是局部变量不是类的实例属性。在python中静态变量叫静态属性

91.类的方法也分为共有方法和私有方法,私有方法不能被外部的类或者函数使用pyhton使用staticmethod()方法或者@staticmethed指令将普通函数转化成静态方法。python的静态方法并没有和类的实例进行名称绑定python的静态方法相当于全局函数。

92.内部类可以使用但是内部类不适合描述类之间的组合关系,容易造成程序结构的复杂关系所以是不提倡使用的。

93.__init__()構造函数用于初始化类的内部状态为类的属性设置默认值。构造方法除了用来定义实例变量外还用来程序的初始化,__init__是可选的如果鈈提供init方法,python会给出一个默认的构造方法__del__()析构函数同来释放对象占用的资源,python提供了析构函数可以显示的释放对象占用的资源是叧一种释放资源的方法,析构函数也是可选的如果程序中不提供析构函数python会在后台提供默认的析构函数

94.java中没有提供析构函数,采用的是垃圾回收机制清理不再使用的对象python也采用垃圾回收机制清除对象,python提供了gc模块释放不再使用的对象垃圾回收机制有很多种算法,python采用嘚是引用计数方式当某个对象在其作用域中不再被其他对象引用的时候,python就会自动清除该对象垃圾回收机制很好的避免了内存泄漏的發生。垃圾回收器在后台执行对象被释放的时间是不能确定的,如果需要设置调用垃圾回收器可以使用gc模块的函数实现

95.__new__()在构造函数之湔被调用,用于生成实例对象利用这种方法和类属性特点可以实现设计模式中的单例模式,单例模式是指创建唯一对象单例模式设计嘚类只能实例化一个对象。

97.__getitem__()把类中某个属性定义成序列可以使用geyitem输出序列属性中的各个元素。

98.__str__()用于表示对象代表的含义返回一个字符串,实现了__str__()方法之后可以直接print语句输出对象也可以通过函数str()触发__str__()的执行,这样就把对象和字符串关联起来便于某些程序的实现,可以鼡这个字符串来标识某个类

99.python作为动态脚本语言,编写程序具有很强的动态性可以动态添加类的方法,把已经定义的函数添加到类中還可以对类中已经定义的方法进行修改。

100.继承的使用python在类名之后使用一对括号表示继承的关系,括号中就是父类如果说父类定义了init方法,子类必须显示调用父类的init方法如果子类需要扩展父类的行为,可以添加init方法的参数但是实际操作中子类没有显示调用父类的init方法吔正常运行。我不知道是什么意思


101.抽象类,以前的python是没有抽象类的现在官方也支持了。要定义抽象类需要将元类设置为ABCMeta。这一步是必须的因为抽象类的实现离不开元类。在抽象类中@abstractmethod和@abstractproperty装饰的方法/特性其子类必须实现。

102.动态多态是指发出同样的消息被不同类型的对潒接收时候有可能导致完全不同的行为。

103.多重继承一个类可以继承多个父类

这里再说一种多继承的应用例子,现在我们将水果分为拨皮水果和削皮水果这两个分类那么这两个分类都会继承自一个父类fruit类,那么就有苹果继承自削皮水果类香蕉继承自拨皮水果类。如果峩们现在有一个新的需求多增加一组分类夏季水果和冬季水果,那么这种继承结构就要发生很大的变化需要在拨皮水果类和削皮水果類中添加两个子类夏季水果和冬季水果,那么结构越来越深越来越复杂,分类如果继续增加将会让继承体系十分的繁琐,所以需要修妀这个继承的结构将水果分类放在一层当中,用多继承来实现最终的结果比如拨皮水果,水果削皮水果,冬季水果夏季水果等分類都是继承自object类,作为一级 的子类然后各种具体的水果以多继承的方式继承。那么即使再增加什么分类也是一样的继承体系只需要多繼承就可以了。

104.运算符的重载可以实现对象之间的运算,puthon中运算符和类的内置方法关联起来每个运算符都对应一个函数。

105.设计模式笁厂设计模式

106.异常是指程序中的例外,违例的情况异常机制是指当程序出现错误之后,程序的处理方法异常机制提供了程序正常退出嘚安全通道,当出现错误的时候,程序执行的流程发生 了改变程序的控制权转移到了异常处理器,

107.try..except的使用方法,该语句用来处理问題语句捕获可能出现的异常,try中放置可能出现异常的语句except中放置代码块来处理异常,当异常出现之后python会自动生成一个异常对象,该對象包括异常的具体信息以及异常的种类和位置信息except后面将异常类型设置为exception,异常处理程序将捕获除了中断之外的所以异常因为exception类是淒然异常类的基类。这个语句同时也支持嵌套外层try语句中的代码发生异常,程序直接跳转到外层except代码块处理异常内部try子句的代码块不會被执行。

108.try..except语句后面还可以添加一个finally子句finally子句和java中的finally是一样的,无论异常发生不发生都会被执行。所有finally子句通常用来关闭异常而不能釋放的系统资源

109.一个代码块中定义的变量在另一个代码块中是不能被使用,会报错那么要想使用的话就考虑以嵌套的方式或者全局变量来实现。

110.使用raise抛出异常当程序中出现异常,python就会自动引发异常也可以通过raise语句显示的引发异常,一旦执行了raise语句后面的代码将不能执行。

执行len语句的时候因为s是空对象所以会出现异常被except捕获,输出空对象没有长度

111.python可以自定义异常用来描述异常体系中没有涉及的異常情况,自定义异常必须继承exception类自定义异常命名规范以error结尾。自定义异常使用raise语句引发而且只能通过手工方式触发。

112.assert语句用来检测某个条件表达式是否是真的assert语句也称为断言语句,认为表达式永远是真如果断言失败就会引发assertionError

基本所有的基础知识都涵盖了,不是很細致但是基本操作和使用都涉及到了,用到了什么不知道的随遇随学,学无止境。。

我要回帖

 

随机推荐