python入门笔记

前言:

该笔记为空闲时间自学python时做的一些笔记,仅作为本人的学习记录,可能存在错误或不完整的地方。

python入门笔记

1.条件分支:

1.1基本结构

1.if………if…………if

2.If…else

3.If…elif………….elif………if

1.2三元操作符>>> x if x<y else y

表示如果x<y则为x,否则为y

2.列表>>>[ ] 可以同时包含各种数据类型

2.1添加元素:

\1. append() 只能添加一个元素,如:a.append(”aaa”)

2.extend() 可同时同时添加多个元素,但是要用列表添加,如:a.extend([“aaa”,45])

3.insert() 在第几个位置插入元素,如:a.insert(0,”aaaa”) 表示在列 表中的下表为0的位置插入数组“aaaa”

2.2删除元素:

\1. remove() 删除指定元素

\2. del[ ] 删除下表为?的元素,也可以直接+列表名字,即删除列表

\3. pop() 不带参数,即删除最后一个元素,并返回;带下表,即删除下标对应参数,并返回

2.3分片slice:

如:a[1:3], a[:3], a[1:]

List1 = list2[:]与list1= list2 都为复制列表,区别:切片为创建一个新的表,而‘=’为两个表为同一个表,操作一个表时,另一个表也会被操作,即两个表为同一个表。切片也可直接使用copy方法

2.4列表排序:

List,sort() 从小到大排序 *只能排序列表元素全为数字类型*

List,sort(reverse=True) 从大到小排序

List.reverse() 逆序排序(最后到最前,不按大小)

2.5列表操作符:

<,> 比较操作符,列表可以比较大小(列表内容为数字),从0开始比较,有一个大或小,即返回true

(+) 连接操作符,将两个列表连接

(*) 将列表复制三次

In 判断该元素/列表是否在该列表中(只影响一层,即列表中列表不能判断)

2.6列表推导式:

*[x*3 for x in range(10)] 表示对于10以内的数进行立方处理

Tips:print(end=” ”) 表示打印结果不换行而是空格来间隔,,“*“重复操作符,”+“连接操作符

3.元组>>>(,),,()内要有“,“号

4.字符串:

4.1、字符串处理方法

Capitalize() 将字符串首字母改为大写

Lower () 全改写为小写

Casefold() 将字符串所有字母改为小写

Center(width) 将字符串剧中,括号内为左右空的字符数

Count(sub[,start[,end]]) 计数字符串内出现某一个元素的次数

Encode(encoding=‘utf-8’,errors=‘strict’) 以指定的编码格式对字符串进行编码

Endswith(sub[,start[,end]]) 检查字符串是否以sub指定的子字符串结束,返回False、True

Expandtabs() 将字符串中的tab(\t)转换为空格,括号内不指定,默认为8个空格

Find(sub) 检查sub是否在字符串中,有返回其第一个元素所在的索引,否则返回-1

Index(sub) 和find一样,如果不存在,返回异常

isalnum() 检查字符串内是否都为字母或数字,返回True,False

isalpha() 检查字符串内是否至少包含一个字符并且所有字符都是字母,返回True,False

isdecimal() 判断字符串内只包含十进制数字,返回True,False

isdigit() 判断字符串内只包含数字,返回True,False

islower() 字符串内至少包含一个可区分大小写的字符,且都是小写字符,返回True,False

isupper() 判断是否都为大写

join(sub) 将字符串插入到sub的每一个字符之间

ljust(width) 左对齐,并在右边填充字符至width

lstrip() 去掉字符串左边的空格

partition(sub) 找到子字符串,并返回一个三元组,(pre,sub,fol),如果找不到,返回(‘原字符串’,‘’,‘‘)

replace(old,new[,count]) 将旧的字符串替换为新得字符串

……………………….

4.2 Format:

>>> ‘{0} ccc {1}{2}’.format(1,‘ghhg’,‘s’)

‘1 ccc ghhgs’ (0可以换成字母,但是后面括号内必须赋值;字母数字可以一起用但是数字必须在前面)

4.3格式化字符串:

>>> ‘%c’ % 98 #格式化字符及其ASCII码

‘b’

>>> ‘%d’ % (31.11) #格式化整数

‘31’

>>> ‘%o’ % (32) #格式化无符号八进制数

‘40’

>>> ‘%X’ % (32) #格式化无符号十六位进制数

‘20’

>>>’%f’ % (32.1) #格式化浮点数字,可指定小数点后的精度(默认六位)

‘32.100000’

4.4DATE转义字符:

%%

%号本身

%a

本地简化星期名称

%b

本地简化的月份名称

%c

本地相应的日期表示和时间表示

%d

月内中的一天(0-31)

%H

24小时制小时数(0-23)

%I

12小时制小时数(01-12)

%j

年内的一天(001-366)

%m

月份(01-12)

%p

本地A.M.或P.M.的等价符

%S

秒(00-59)

%U

一年中的星期数(00-53)星期天为星期的开始

%w

星期(0-6),星期天为星期的开始

%x

本地相应的日期表示

%y

两位数的年份表示(00-99)

%Z

当前时区的名称

5.序列:

5.1序列BIF

List() 将字符串或者元组转换为列表

Tuple() 将字符串或列表转换为元组

Str() 转化为字符串

Len() 返回长度

Max() 返回最大值,如果是字符可更具其ASCII码来转换,不可数字与字符进行比较

Min() 返回最小值,同上

Sum() 只能求数字类型的和

Sorted() 从小到大排序,只能纯数字或纯字符比较

Reversed() 将序列翻转

Enumerate() 返回各个元素并包含其索引的序列

Zip() 将两个序列组合

6.函数:

6.1概念:

1.创建函数:>>>def firstfoun(): #def + 函数名 + () + :

2.调用函数:>>> firstfoun() #函数名 + () ,,,括号内可加参数

3.返回:return

函数具有形参,实参;函数有关键字参数,默认参数

**收集参数:>>> def exp(*params): //**括号内表示未知参数数量,可在调用函数的时候输入参数(原理是将参数打包在一个元组中);如果又有收集参数,又有关键字参数,在调用时要加关键字。

Tips: 函数中参数顺序为:普通参数,收集参数,关键字参数,关键字收集参数,其顺序不能颠倒,颠倒会报错

全局变量,局部变量 在方法中不能直接修改全局变量(赋值)

改变全局变量关键字:global

函数嵌套,函数内部可以定义和调用函数;作用域在母函数内

闭包: nonlocal 声明可以将闭包中的外部局部变量运用到内部函数

匿名函数:>>>lambda x : x +3 #冒号前为参数,冒号后为返回值

Filter(function,iterable) 筛选根据第一个条件对第二个序列中的元素进行筛选,至筛选Ture >>> list(filter(lambda x: x%2,range (10))) 对10以内的奇数进行筛选

Map(function,iterable) 对序列中的每一个数进行加工

7.字典: {a:b,c:d }—大括号内为键值对 访问只需访问键,无序

7.1字典创建:

\1. dict2=dict(((1,‘a’),(2,‘b’)))

\2. dict2=dict(zz=‘bbbb’,cc=‘fffff’)

\3. dict1 = {1:‘a’,2:‘b’,3:‘c’}

7.2方法:

\1. fromkeys() 修改并创建新字典

如:>>> dict1=dict1.fromkeys((1,2,3),‘冲’)

>>> dict1

{1: ‘冲’, 2: ‘冲’, 3: ‘冲’}

\2. items() 返回每一个键值对

如:>>> for each in dict1.items():

print(each)

(1, ‘冲’)

(2, ‘冲’)

(3, ‘冲’)

8.集合: —{1,2,3} 大括号内没有映射关系,唯一,无序

创建集合:直接创建/set()

Frozenset

9.文件:open()

9.1文件打开模式

打开模式执行操作
‘r’以只读方式打开文件(默认)
‘w’以写入的方式打开文件,会覆盖已存在的文件
‘x’如果文件已经存在,使用此模式打开将引发异常
‘a’以写入模式打开,如果文件存在,则在末尾追加写入
‘b’以二进制模式打开文件
‘t’以文本模式打开(默认)
‘+’可读写模式(可添加到其他模式中使用)
‘U’通用换行符支持

9.2文件对象方法

文件对象方法执行操作
f.close()关闭文件
f.read([size=-1])从文件读取size个字符,当未给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
f.readline([size=-1])从文件中读取并返回一行(包括行结束符),如果有size有定义则返回size个字符
f.write(str)将字符串str写入文件
f.writelines(seq)向文件写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
f.seek(offset, from)在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
f.tell()返回当前在文件中的位置
f.truncate([size=file.tell()])截取文件到size个字节,默认是截取到文件指针当前位置

encoding=‘UTF-8’,可读取txt文件

9.3文件常见的读写模式
w 以写方式打开,
W 文件若存在,首先要清空,然后(重新)创建
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )

9.4读取文件内容
open 读取所有内容
使用open打开文件后一定要记得调用文件对象的close()方法。
file = open(‘thefile.txt’)
file.close( )

with open(‘ecord.txt’,‘a+’,encoding = ‘utf-8’) as f:
f.write(str+’\n’)
写完成自动关闭

写入数据
file_object = open(‘thefile.txt’, ‘w’)
file_object.write(all_the_text)
file_object.close( )
写文本文件
output = open(‘data’, ‘w’)

写二进制文件
output = open(‘data’, ‘wb’)
追加写文件
output = open(‘data’, ‘w+’)

写入多行
file.writelines(strings)

注意,调用writelines写入多行在性能上会比使用write一次性写入要高。

文件打开模式 w+ r+ a+ 区别和辨析
w+ 打开文件并读写:

1. 文件存在,则清空(也即写入空);

2. 文件不存在,则创建文件 ;

3. 文件流定位到开始位置, 所以read() 会得到空。
r+ 打开文件并读写:

1. 文件存在,打开文件,文件指针定位到文件开始位置;

2. 文件不存在, 则报错文件不存在。
a+ 打开文件并读写:

1. 文件存在,打开文件,文件指针定位到文件开始位置,但不清空;

2. 文件不存在,创建文件;

3. 打开后读取时,在文件开头位置,

4. 写入时,添加到文章末尾,并且指针位于添加后的末尾,所以再次读取会乱码。
另外:
 1. w 打开文件写入,也会清空文件,如果使用read(),则报错;a 打开文件添加,数据流添加到文件末尾,而不是w模式的清空后,添加到文件末尾。
 2. b可以附加到上述的字母后,形成rb, rb+, wb等等模式,针对二进制文件,比如exe, elf, jpeg格式的文件,进行文件操作; 在unix 类型的系统上,text格式与二进制的处理相同,但是非unix类型的系统上,换行格式不同,所以需要用加b模式来在指定是否是二进制。

10.模块:import导入

Import pickle 读取,存储文件,(将器转换为二进制)

\1. pickle.dump(a,b) 将a导入到文件b

\2. 对象名 = pickle load(文件名) 读取之前打开的文件

(当n次dump后,需要n次load才能将信息全部导出,可用循环至抛出异常)

11.异常处理:exception

11.1常见异常总结:

AssertionError 断言语句(assert)失败

AttributeError 尝试访问未知的对象属性

EOFError 用户输入文件末尾标志EOF(Ctrl+d)

FloatingPointError 浮点计算错误

GeneratorExit generator.close()方法被调用的时候

ImportError 导入模块失败的时候

IndexError 索引超出序列的范围

KeyError 字典中查找一个不存在的关键字

KeyboardInterrupt 用户输入中断键(Ctrl+c)

MemoryError 内存溢出(可通过删除对象释放内存)

NameError 尝试访问一个不存在的变量

NotImplementedError 尚未实现的方法

OSError 操作系统产生的异常(例如打开一个不存在的文件)

OverflowError 数值运算超出最大限制

ReferenceError 弱引用(weak reference)试图访问一个已经被垃圾回收机制回收了的对象

RuntimeError 一般的运行时错误

StopIteration 迭代器没有更多的值

SyntaxError Python的语法错误

IndentationError 缩进错误

TabError Tab和空格混合使用

SystemError Python编译器系统错误

SystemExit Python编译器进程被关闭

TypeError 不同类型间的无效操作

UnboundLocalError 访问一个未初始化的本地变量(NameError的子类)

UnicodeError Unicode相关的错误(ValueError的子类)

UnicodeEncodeError Unicode编码时的错误(UnicodeError的子类)

UnicodeDecodeError Unicode解码时的错误(UnicodeError的子类)

UnicodeTranslateError Unicode转换时的错误(UnicodeError的子类)

ValueError 传入无效的参数

ZeroDivisionError 除数为零

11.2异常处理:

1.

try:
具体代码

Except 错误类型 as xxx: # as xxx 将错误类型保存在xxx中,

处理方法

Finally:

无论如何都会执行的代码

Tips:>>>raise name (‘xxx错误’) #用户自己抛出的异常

12.类:class

12.1定义类:

>>class A_class:

​ #定义类内函数

​ def show(self): #self ,需要添加,相当于this

​ print(‘……’)

​ def _ init _(self,name): #构造函数,注意init 前后各两个下划线

​ self.name=name

init()只能返回none

12.2私有:

在变量名前面加两个下划线,如:_ _ a=123456

私有变量无法直接访问,可通过调用函数来实现,如:定义方法返回:return self._ _ a 来返回变量。或,直接: 对象名._ A_class_ _a 进行返回

12.3继承(可多继承)(纵向的关系)

12.4组合(横的的关系)

12.5super()

Super()调用父类方法只初始化一次

12.6 一些bif

1.Issubclass(class,classinfo) #判断class是否是classinfo的子类,返回true or false

2.Isinstance(object,classinfo) #判断object是否是classinfo的一个实例对象,返回true or false

3.hassattr(object,name) #判断object实例中是否有name属性,name要用引号

4.getattr(object,name,[default]) #同上,如果没有查找到则返回default

5.setattr(object,name[default]) #同上,如果没有查找到,则新建属性default

6.delattr(object,name) #删除name属性

7.x = property(fget,fset,fdel) #fget:得到类中属性的方法;fset:设置类中属性的方法;fdel:删除类中的属性的方法

如:

class A:

​ x=10

​ def get(self):

​ return self.x

​ def set(self,x):

​ self.x=x

​ def fdel(self):

​ del self.x

​ a = property(get,set,fdel)

aa = A()

>>> aa.get()

10

>>> aa.a

10

>>> aa.a=18

>>> aa.a

18

12.7 new

class Person(object):

def new(cls):

​ return object.new(cls) #类中最先被调用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值