python 基础总结

目录

数据类型

Number

整数

 浮点数

字符串

字符串的拼接

字符串的处理(8种常用)

 '本身也是字符的情况 

转义字符

 布尔值

布尔值可以用and、or和not运算。

补充

空值

注意事项

 List(列表)

列表函数

Tuple(元组)

dict(dictionary)

字典函数

 dict查找不到的情况

set(集合)

集合函数

函数

定义函数

参数检查

返回多个值

调用函数

函数的参数

位置参数

默认参数

可变参数

递归函数

IO文件读写 

读取文件

写文件

循环语句

for循环

for循环嵌套

while循环

while循环嵌套

 迭代器

异常处理

捕获异常try...except...

捕获多个异常


数据类型

不可变数据类型:Number、String、Tuple

可变数据:List、Dictionary、Setumber

Number

Number具体分为:int(整数)、float(浮点数即小数)、String(字符串)、bool(布尔值)

整数

Python可以处理任意大小的整数,当然包括负整数,表示方法与数学的写法一致。

允许在数字中间以_分隔

10_000_000_000和10000000000

 浮点数

浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的。浮点数可以用数学写法,如1.23,-9.01等等。

在Python中 科学计数法中把10用e替代。

字符串

字符串是以单引号'或双引号"括起来的任意文本。

字符串的拼接

用逗号拼接,则逗号位会出现空格。

用加号拼接,不会出现空格。如果想有空格,则应在其中加入空格

print("Hello","World")    #输出:Hello World
print("Hello"+"World")    #输出:HelloWorld
print("Hello"+" "+"World")    #输出:Hello World


字符串的处理(8种常用)

len():返回字符串的长度,即字符串中单个元素的个数

length=len(target_string)    #target-string为目标字符串变量
upper():将字符串中的所有字符都转换为大写

lower():将所有字符转换为小写

title():将字符串所有单词的首字母变成大写,而其他字母依然小写

new_string="Tom is good"
print(name_string.upper())    #输出:TOM IS GOOD
print(name_string.lower())    #输出:tom is good   
print(name_string.title())    #输出:Tom Is Good


strip():可以去除字符串两侧(不包含内部)全部的空格。使用该方法,也可以通过指定参数,去除两侧指定的特定字符

split():实现字符串分割。该方法根据提供的分隔符,将一个字符串分割为字符列表,如果不提供分隔符,则程序会默认把空格(制表、换行等)作为分隔符。

find():利用该方法可以在一个较长的字符串中查找子字符串。如果该字符串中,有一个或者多个子字符串,则该方法返回第一个子串所在位置的最左端索引,若没有找到符合条件的子串,则返回-1。

replace():用以替换给定字符串中的子串。

source_string.replace(old_string, new_string) 

 '本身也是字符的情况 

用""括起来

转义字符

转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是 \  。

当字符串里即既包含 ' 又包含 ",用转义字符

         特例:

                用r''表示''内部的字符串默认不转义

                 用'''...'''的格式表示多行内容

 布尔值

在Python中,可以直接用True、False表示布尔值(请注意大小写)

布尔值可以用and、or和not运算。

and运算是与运算,只有所有都为True,and运算结果才是True

or运算是或运算,只要其中有一个为True,or运算结果就是True

not运算是非运算,它是一个单目运算符,把True变成False,False变成True

补充

空值

None不能理解为0,因为0是有意义的,而None是一个特殊的空值。

注意事项

Python的语法:缩进方式(没有规定缩进是几个空格还是Tab,惯例为4个空格的缩进)

Python大小写敏感。


 List(列表)

        List是一种有序的集合,可以作为一个方括号内的逗号分隔值出现。List里面的元素的数据类型也可以不同,可以随时添加和删除其中的元素。List元素也可以是另一个List(但是另一个List只算一个元素,可以理解为一个二维数组)。

List中一个元素也没有,就是一个空的list,它的长度为0

        格式:List=['a','b','c']

        len(list)              #获得list元素的个数

列表函数

list.append(obj)             #在列表末尾添加新的对象
list.count(obj)              #统计某个元素在列表中出现的次数
list.extend(seq)             #在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj)              #从列表中找出某个值第一个匹配项的索引位置
list.pop()                   #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove()                #移除列表中某个值的第一个匹配项
list.reverse()               #反向列表中元素
list.sort(key=None,reverse=False)     #对原列表进行排序,True 降序,False 升序(默认)
list.clear()                 #清空列表
list.copy()                  #复制列表


Tuple(元组)

        tuple与list非常类似,但是一旦初始化就不能修改。

        其他获取元素的方法和list是一样的,但不能赋值成另外的元素。

        只有1个元素的tuple定义时必须加一个逗号,Python在显示只有1个元素的tuple时,也会加一个逗号,,以免你误解成数学计算意义上的括号。

        tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。

dict(dictionary)

        Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

d = {key1 : value1, key2 : value2 }

原理:先在字典的索引表里(比如部首表)查这个字对应的页码,然后直接翻到该页,找到这个字。

注意:dict内部存放的顺序和key放入的顺序是没有关系的

字典函数

radiansdict.clear()    #删除字典内所有元素
pop(key[,default])     #删除字典给定键 key 所对应的值,
                       #返回被删除的值。key值必须给出。 否则,返回default值


 dict查找不到的情况

        当查找不到时就会报错,所以有两种方法避免报错。

        一是通过in判断key是否存在:'' in list

        二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value

set(集合)

集合是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合

set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

注意: 建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

重复元素在set中自动被过滤

集合函数

s.add()             #为集合添加元素
s.clear()           #移除集合中的所有元素
s.copy()            #拷贝一个集合
s.remove()          #删除元素

函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。

定义函数

格式:

def 函数名():
    代码
空函数
如果想定义一个什么事也不做的空函数,可以用pass语句(pass可以用来作为占位符):

def nop():
    pass


参数检查

调用函数时,如果参数个数不对,Python解释器会自动检查出来,并抛出TypeError。但是如果参数类型不对,Python解释器就无法帮我们检查。

返回多个值

返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

调用函数

格式:

函数名()
每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了。当然了如果函数中执行到了return也会结束函数。

函数的参数


位置参数

例:power(x)    #x即为位置参数
当括号里有两个以上的参数时,实参要按照形参的顺序摆放,传入。

默认参数


默认参数可以简化函数的调用。最大的好处是能降低调用函数的难度。

def enroll(name,city='Beijing'):
    print('name:',name)
    print('city:',city)
enroll('Jim')


注意:

一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面);

二是如何设置默认参数。

当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。

可变参数


在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

要定义出这个函数,我们必须确定输入的参数。由于参数个数不确定,我们首先想到可以把a,b,c……作为一个list或tuple传进来。但是调用的时候,需要先组装出一个list或tuple。

定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数。

*nums表示把nums这个list的所有元素作为可变参数传进去。

递归函数


在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。

递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

使用递归函数需要注意防止栈溢出。解决递归调用栈溢出的方法是通过尾递归优化,事实上尾递归和循环的效果是一样的,所以,把循环看成是一种特殊的尾递归函数也是可以的。

尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。

IO文件读写 


       在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

读取文件


使用Python内置的open()函数,传入文件名和标示符,标识符'r'表示读。

f=open('F:\eclipse\eclipse\sy9T3.txt','r')


文件不存在则会抛出FileNotFoundError。

成功打开文件后,调用read()方法一次性读完文件的全部内容。

f.read();


最后调用close()方法关闭文件文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的。

f.close()


为了避免文件内容过多,反复调用read(size)方法,每次最多读取size个字节的内容。

其中readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。

IOError异常处理
由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们对异常提前进行处理:

方法一:

try...finally

try:
    f = open('/path/to/file', 'r')
    print(f.read())
finally:
    if f:
        f.close()


方法二:

引入with

with open('/path/to/file', 'r') as f:
    print(f.read())


 第二种方法代码更佳简洁,并且不必调用f.close()方法。

UnicodeDecodeError异常处理
read()时可能会抛出UnicodeDecodeError(encoding不管是用utf8、gb2312、gbk编码方式都不行)

解决办法:

改为以二进制的方式读取即可:open('xxx.xsl','rb')

​f=open('F:\eclipse\eclipse\sy9T3.txt','rb')
f.read()


写文件


写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件:

f=open('F:\eclipse\eclipse\sy.txt','w')
f.write("I love Python!")
f.close()


进行完上面的操作后,点开文件

注:1.只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。

       2.以'w'模式写入文件时,如果文件已存在,会直接覆盖(相当于删掉后新写入一个文件)。

可以传入'a'以追加(append)模式写入 追加到文件末尾

f=open('F:\eclipse\eclipse\sy.txt','a')
f.write("end")
f.close()

循环语句

for循环


for x in ...循环就是把每个元素代入变量x,然后执行缩进块的语句。

for each in range(3):
    print(each)

0

1

Python提供一个range()函数,可以生成一个整数序列,再通过list()函数可以转换为list

list=['eat','sleep','study']
for act in list:
    print("正在",act)

正在 eat
正在 sleep
正在 study

range(101)就可以生成0-100的整数序列

for循环嵌套

for iteration_var in sequence:  
    for iteration_var in sequence:  
        循环语句


while循环


只要条件满足,就不断循环,条件不满足时退出循环。

while i<3:    #判断条件
    print(i)    #循环语句
    i=i+1

0

1

2

在循环中,break语句可以提前退出循环

在循环过程中,也可以通过continue语句,跳过当前的这次循环,直接开始下一次循环

用Ctrl+C退出程序,或者强制结束Python进程

while循环嵌套

while 判断条件:  
    while 判断条件:  
        循环语句 

 
迭代器


迭代器用来循环访问一系列元素,它不仅可以迭代序列,也可以迭代不是序列但是表现出序列行为的对象。迭代器很适用于迭代一些无法预先知道元素总数的巨大的集合。迭代器提供了一个统一的访问集合的接口,定义iter()方法对象,就可以使用迭代器访问。

可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。next()函数访问每一个对象,直到对象访问完毕,返回一个StopIteration异常。使用isinstance()可以判断一个对象是否是Iterator对象。

所有的Iterable都可以通过iter()函数转化为Iterator。

异常处理

捕获异常
try...except...

try:
    print("....")
except IOError:
    pass


try中放的是可能产生异常的代码。当产生错误时,跳转到except中运行七处理异常的方法。

捕获多个异常

如果想通过一次except捕获到多个异常可以用一个元组的方式

try:
    print("...")    #代码
except (IOError,NameError):
    pass


或者针对不同的异常进行不同的处理

try:
    ptint("....")
except NameError:
    print("nameerror")
except IOError:
    print("IOError")


注:父类的异常要放到其子类的后面,否则永远不会有子类异常处理

另外,还可以使用try...except...else语句,当try中的语句没有发生异常时,else中的代码就会被执行。还可以再else后面加上finally,finally中的语句,不管try中有没有发生有异常都会执行。

自定义异常
自定义异常类继承自 Exception 类,可以直接继承,或者间接继承。
 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值