python学习

目录

一  编码规范

二  python基础

1.基础

2.输入输出

三 判断和循环

四 字符串的使用

 五 列表和元组

1.列表

2.元组

六:字典和集合

1.字典

1.字典的创建:

2.字典的访问

3.字典的基本操作

2.集合

七 函数

1.定义函数

2 参数类型:

3 函数嵌套

4 变量的作用域

5 匿名函数 

6 模块

八 面对对象程序设计

1 类的定义和使用

2 类成员和实例成员

 3 封装

4 继承

1)单继承

 2 多继承

3 重写父类方法与调用父类方法

 5 多态

 6 类方法和静态方法

1)类方法

2)静态方法

 3 小结

九 文件操作

1)打开文件

2)文件关闭

 3)上下文管理语句with

 4)文件的读写

遍历文件所有行

复制一个文件到另外一个文件

4 文件的定位

5 定位到某个位置

 5)文件与文件夹操作

 十 异常


一  编码规范

 

1.注释

# 单行注释

三对引号 多行注释

2.

缩进:同一级别缩进量相同

二  python基础

1.基础

1.变量名字只能包括字母数字下划线,第一个字符只能是字母或者下划线

2.数据类型:

整形int  float浮点型 complex复数 ,布尔型 字符串

3.变量赋值可多个变量赋值 a=b=c=1或者a,b,c=1,2,3

4,运算符**幂    //整除  %取余    

注意:使用/ 时  两个操作数都为整数时,返回的也是整数,反之至少有一个浮点数

5.赋值运算符 += %=等等

6.关系运算符  == != 等,两侧必须为同一类型,字符串比较运算时,按照ASCII值进行比较,逐个字符比较 先大的大

7.逻辑运算符 and or not 

8.成员运算符 in    not in

9.身份运算符 is         is not

10.位运算符  & | ^ 

11.强制类型转换 如 int(x) 

2.输入输出

1.输出

1.print(”我们的帅哥是:“,lcl)

2.字符串格式化:使用百分号%

例如:print("a=%8.3f"%c)

3.使用format()

模板字符串.format(逗号分隔的参数)

例如print("a={0:05}".format(a))# 输出五位数字空位补0

输入:

input

例如 s=input("")  中间可加字作为提醒

三 判断和循环

注意:python不适用{}来分割代码 而是利用代码缩进和,冒号来分割

1.if else elif while  及其嵌套

2.for 变量 in 序列

例如:for x in "python"

3.for语句与range()函数:

range(start,stop,step#步长)

例如:for i in range(1,100):

4.break  跳出循环体   continue结束本次循环

四 字符串的使用

1.索引

2.分片 【start,end,step】

例如:逆序输出为:s[-1::-1]

3.序列相加 

例如:”hello"+"world"=helloworld

4.乘法表示 :重复n次

5.内建函数 len max min

6.字符串方法:

1)find: 在字符串中查找子串 成功返回第一个字符的索引,失败返回-1

例如:a=str.find("link",5,15)#在索引5到15的字符串中查找子串

2) count : 统计字符串中某个字串出现的次数

例如:b=str.count("is",1,6)

3)splitw

以指定字符为分隔符,从字符串左端开始将其分割成多个字符串,并返回包含分割结果的列表

默认空格

例如str。split(" ",3)#以空格为分隔符分割三次

4)join

用于将序列中的元素以指定的字符连接,生成一个新的字符串

例如:str=“this     is    nb  ”

str=str.split()#  为一个多个字符列表

st1r=" ".join(str)

5)replace

用于将字符串中的jiu字符替换成新字符

str.replace(old,new[,max]) max为替换不超过max次 默认为全部

6)strip

用于删除字符串两端的来内需的空白字符或者指定字符

str.strip([cahrs])

7.lower  大写转小写upper 小写转大写

8.isalnum   str.isalnum() 判断是否是字母和数字或者两者之一组成 是就返回true反之false

 五 列表和元组

1.列表

1)列表的长度和内容可变 增加替换删除  元素类型可不同  可包含字典元组等   属于序列类型 可进行索引    用[   ]表示

2)利用for while 进行遍历列表  for i in 列表名称

3)列表的基本操作

               1)append 在列表末尾添加新的元素 list.append(obj)    可在里面加一个列表但是整体进去作为一个元素

                2)extend 可在列表末尾一次性追加另一个序列的多个值 list2.extend(list3)

                3)insert 将指定对象插入到指定列表的指定位置  list.insert(index,obj)

                4)index 用于返回指定元素在列表中首次出现的位置,不在则抛出异常

                 5)count list.count(obj)计数

                6)del   根据索引删除表中元素例如del a[1:3]

                7)pop 用于移除列表中的一个元素  默认为最后一个

                8)remove 用于移除列表中某个值的第一个匹配项   list.remove(obj)

注意:只能删除列表中第一个匹配的元素 若要删除所有匹配的元素,需要用下循环语句实现

例如 x=[     ]

while “abc" int x:

        x.remove("abc”)

        9)分片赋值

        例如:x[2:]=[3,2,1]

        10)列表排序

        1.reverse()  将列表中的元素反向存放 x.reverse()

        2.sort()   对源列表进行排序(默认为升序)排序后覆盖原列表

                        list.sort([key=none][,reverse=False])

        3.sorted ()   与sort不同的是,返回新列表,不对源列表进行修改

                sorted(列表【,key=none】[,reverse=False])

2.元组

1)与列表类似,但是不能修改元组的元素,使用()表示

2)元组创建:可以直接省略圆括号,直接用逗号分割元素

在定义一个只有一个元素的元组,在元素后面必须加一个逗号例如x=(1,)

3)元组的基本操作

1.索引访问

2.元组的元素不能修改,但是可以进行连接组合  +

3.for 遍历

4.tuple()    以一个序列为参数,并把它转化为元组

六:字典和集合

1.字典

键值对形式存在,映射关系,健是任意不可变的数据 值可以任意值   用{}表示#健 值记得加引号

1.字典的创建:

1)直接赋值创建字典

变量名={键1:值一,.....}

2)使用内置函数dict()创建字典

3)使用fromkeys()方法创建字典

2.字典的访问

1)字典变量名【健】

2)get()   若不确定字典中是否有某个键,可通过get()方法获取  若存在则返回对应的值,若不存在则返回默认值

dict.get()key[,default=none])

key为要查找的键,default 定义默认值,当default为空时返回none

例如:info.get('age',18)

3.字典的基本操作

1.修改和添加  当以指定键为下标为字典元素赋值时,

若键不在,则创建一个新的键值对 反之修改其值

2.删除 

1)del  可根据键删除字典中的元素

例如 del  info["age"]

2)clear 用于清除字典中的所有元素

例如 info。clear()

3)pop() 用于获取指定的键的值,并将这个键值对从字典中移除

dict.pop(key[,default]) deefault为默认值,若无指定键,则返回默认值

4)popitem 随机获取一个键值对并将其删除

3.更新字典

dict.uodata(dict2)

4.复制字典

dict.copy()

例如:dict3=dict1.copy()

5.字典的遍历

dict.items() 以列表的形式返回可遍历的(键,值)元组  可用于遍历

dict.keys() 只遍历字典中的键返回所有的键

dict.values() 遍历所有的值

2.集合

无序组合,元素不可重复,且元素类型只能是固定类型

使用{}表示

1.集合的创建

只需要将逗号分隔的不同元素使用大括号括起来即可

set()函数会将列表,元组等其他元素数据转换为集合,若存在重复则删除

注意:对于一维数据的去重可以用集合来完成

2.集合的基本操作

s.add(x)        若不在则添加

s.updata(T)  合并T的元素到s

s.pop()   随即删除并返回一个元素,若集合为空返回异常

s.remove(x)  若x在集合中,移除该元素,若不存在,抛出异常

s.discard(x)  若x在集合中,移除该元素,若不存在,不报错

s.clear()   清空集合

3.集合运算

&  交集

|  并集

-  差集  在前而不在后的

^ 补集 返回s和t中的元素,但不包含两个都在的

<=  >= 子集 或相等返回TRUE

七 函数

1.定义函数

def 函数名(【形参列表】):    

                函数体

返回值用return    可以用函数返回多个值,多个值用元组类型保存   c= rerurn a,b 则c的类型是元组(a,b),可以采用下标的方式访问元组中的元素

2 参数类型:

固定数据类型:整数,浮点数,字符串,元组

可变数据类型: 列表,字典,集合

当参数类型为固定类型时,在函数内部修改形参的值,不会影响实参。其他则得到相应的修改

1)位置参数:就是实参和形参的位置顺序相同

2)默认值参数:在定义函数时,可以为函数的参数设置默认值,例如:def 函数名(型参数=默认值)

函数名._defaults_ 可以查看函数所有默认值参数的当前值 

注意:默认值参数必须出现在在函数形参列表的最右端

且多次调用并不为默认值参数传递值时,默认值参数只在定义时进行一次解释和初始化

如果在定义函数时的某个参数的默认值是一个变量,那么参数的默认值只依赖于函数定义时该变量的值

3)关键字参数:是指调用函数时的参数传递方式,是一种按参数名字传递值的方式,允许调用时参数的顺序与定义时不一样

例如:已经定义一个函数f(name,age)

f(age=50,name="runoob")

4)不定长参数:*args,**kwargs前者用来接收任意多个实参并将其放在一个元组中,后者用来接收类似于关键字参数一样显性赋值形式的多个实参并将其放在字典中。

3 函数嵌套

可以在函数内部定义另外一个函数,也可调用

4 变量的作用域

1)局部变量和全局变量

前者表示:定义在函数内部,只在函数内部使用。

例如函数的形参就属于局部变量 

在函数之外定义的变量为全局变量,在整个程序里面有效

2)global 和nonlocal关键字

当内部作用域想要使用外部作用域的变量时,可使用以上关键字

1.global

在函数内部修改一个定义在函数外的变量时,需要使用global关键字明确声明变量,在函数内部通过global关键字来声明或者定义全局变量.可分为两种情况:

1)一个变量已经在函数外定义,如果在函数内部需要使用该变量的值或者修改并返回函数外,可以在函数里面使用关键字global明确声该全局变量。

2)在函数内部直接使用global关键字将一个变量声明为全局变量,如果在函数外,没有定义该全局变量,在调用后,会创建新的全局变量

如果不使用global,当局部和全局变量重名时,认为是局部变量,

之前未被赋值 出错,或在函数内外都赋值

2.nonlocal

如果在一个嵌套的函数中修改嵌套作用域中的变量

5 匿名函数 

6 模块

1)模块的导入:

import 模块名 【 as 别名】

使用后调用函数时要加模块名 :    模块名.函数名

2)导入特定的函数:

from 模块名 import 函数名 【as 别名】

调用函数时不需要加模块名作为前缀

3)导入模块中所有函数

from 模块名  import *(降低代码的可读性了)

4)模块的创建:模块的名字解释文件名

5)_name_属性

八 面对对象程序设计

面对对象三大特性:封装,继承,多态

面向过程程序设计的核心是过程,即解决问题的步骤

1 类的定义和使用

类是抽象的,是一群具有相同特征和行为的事物的统称

例如字典这个类型就是一个类 但是某一个具体赋值的字典就是对象
1)类的定义:

事物的特征作为类中的变量。事物的行为作为类的方法,而对象是类的一个实例所以想创建一个对象,需要先创建一个类

class  类名:

        类体

注意:类名首字母一般大写
           类体一般包括变量的定义和方法的定义

            缩进

例如:定义类

class Car:

        price=122    #定义价格变量

        def run(self):        #定义行驶方法

                       print("123")

方法和函数的格式是一样的,主要区别在于,方法必须显式的声明一个self参数,而且位于参数列表的开头

2)创建类的对象

格式:对象名=类名()

创建完对象后,可以使用他来访问类中的变量和方法

格式:

对象名.类中的变量名

对象名.方法名(【参数】)

3)self参数

self相当于编号,由同一个类可以生成无数个对象,当一个对象的方法被调用时,对象会将自身的引用作为i一个参数传递给该方法

在类的方法中访问变量时,需要以self为前缀,但在外部通过对象调用对象方法时不需要传递该参数

4)

1)构造方法

构造方法的固定名称为_init_,当创建类的对象时,系统会自动调用构造方法

从而实现对对象进行初始化的操作

class Car:
    构造方法:
    def _init_(self):
            self.wheelNum=4
            self.colour='蓝色'
    #方法
    def run(self):
            print("{}个{}的车",self.wheelnum,self.colour)
bmw=Car()
bmw.run()               

2)带参构造

构造方法
 def _init_(self,wheelnum,colour):
    self.wheelnum=wheelnum
    self.colour=colour
 #方法
    def run(self):
            print("{}个{}的车",self.wheelnum,self.colour)
bmw=Car(4,'红色')
audi=Car(3,'白色')
bmw.run()
audi.run()

 5)析构方法

当需要删除一个对象来释放类所占的资源时,python会调用析构方法

固定名称:_del_()

程序结束自动调用该方法,也可以手动

#默认情况下,当对象不再被使用时,_del_

def _del_(self):
    print("析构方法已经被调用")

2 类成员和实例成员

类中定义的变量又称为数据成员,或者叫广义的属性 

可以说数据成员有两种:实例成员(实例属性)另一种是类成员(类属性)

实例成员一般是指在构造函数_init_中定义的,定义和使用时必须以self作为前缀,类成员是在类中所有方法之外定义的数据成员

两者的区别是:在主程序中(或者类的外部)实例成员属于实例(对象),只能通过对象名访问;而类成员(属性)属于类,可以通过类名或者对象名访问

注意:当类成员和实例成员的名字相同时,通过对象名访问成员时获得的是实例成员的值,通过类名访问成员时获取的是类成员的值

 3 封装

把客观事物封装成抽象的类,并规定类中的数据和方法只让可信的类或者对象操作

封装可分为两个层面:

1)前面介绍的对象名加”.",的方式访问内部成员和方法就是第一种层面

2)类中把某些成员和方法隐藏起来,或者定义为私有,只在类的内部使用,在类的外部无法访问,或留下少量接口(方法)供外部访问

1 私有属性

在准备私有化的数据成员或者方法的名字前面加两个下划线__即可

def __foo(self):
    print("form")

加了下划线__后的成员,无法在类中的外部被查看

#对于这一层面的封装,我们可以在类中定义一个方法(接口函数),在他内部访问被隐藏的属性和方法,然后在外部通过接口函数进行访问。

#实际上,在外部可以通过_类名_属性访问私有变量方法

4 继承

继承描述的是事物之间的从属关系

已有的,设计好的类称为父类或者基类,新设计的成为子类或者派生类

继承可分为单继承和多继承

1)单继承

class 子类名(父类名):

当子类只有一个父类时称为单继承

子类可以继承父类所有的公有成员和公有方法,但不能继承私有成员和方法

 2 多继承

指一个子类可以有多个父类 ,他继承了多个父类的特性

格式 

class 子类名(父类名1,父类名2。。。)

注意:如果两个父类中有同名的方法,调用时会先调用先继承类中的方法

3 重写父类方法与调用父类方法

子继承父后,子类的方法会覆盖父类中同名的方法,也称为重载

注意:如果需要在子类中调用父类的方法,可以使用内置函数super()或者通过

父类名.方法名()来实现

 5 多态

多态的概念依赖于继承

多态指一种事物具有多种形态,如一个父类有多个子类

向不同的对象发送同一条消息,不同的对象在接受时会产生不同的行为(即方法)

也就是说:每个对象可以用自己的方式去响应共同的消息(调用函数)

 6 类方法和静态方法

实例方法(公有和私有)都必须至少有一个名为self的参数 且实例方法只能通过对象名进行调用还有两种方法。

1)类方法

2)静态方法

 3 小结

九 文件操作

按数据组织形式不同,可以分为文本文件和二进制文件

1)打开文件

格式: 文件对象名 = open(文件名【,打开方式】)

若使用open函数打开文件时,只带一个文件名参数,默认以只读的形式打开文件,不存在时抛出异常

注意:写路径时注意斜杠问题,若文件和路径名为”c:\myfile"应该写成c:\\nyfile

2)文件关闭

格式:文件对象名.close()

 3)上下文管理语句with

with open(文件名【,打开方式】)as 文件对象名               #自动关闭

 4)文件的读写

1)写文件

1.write()用于向文件中写入指定字符串

文件对象名.write(str)

注意:write()方法不会自动在字符串的末尾添加换行符,因此,当输入多行时,需要在write()语句中包含换行符;最后关闭文件

注意:如果打开文件时,文件打开方式带“b“那么写入文件内容时,str(参数)要用encode方法转为字节流形式

file.write("Interface options".encode())

2.writelines()

用于向文件中写入一序列(列表或者元组)的字符串(可以是由迭代对象产生的,如一个字符串列表)

格式:文件对象名.writelines(sequence)

#也不会自动在列表后面增加换行符,需手动

2)写文件

1.read()

格式:文件对象名.read([size])

#注意光标移动

size为从文件中读取的字符数 返回从文件中返回的字符串   

2.readline()

从文件中读取整行包括\n字符

格式:文件对象名.readline([size]) #可规定几个字符

3 readlines()

用于读取所有行直到(EOF)结束并且返回列表,列表中每个元素为文件中的一行数据

格式: 

文件对象名.readlines()

遍历文件所有行

with open('testfdile.txt",'r')as file:

                for line in file:

                        print(line)

复制一个文件到另外一个文件

with open('testfdile.txt",'r')as file1,open('copy.txtt','w') as flie2:

        file.write(file.read())

4 文件的定位

tell()方法 返回文件的当前位置,位置指针当前位置

格式       文件对象名.tell()

5 定位到某个位置

seek() 用于移动文件位置指针到指定位置

文件对象名.seek(offset[,whence])

offset 表示偏移量

whence 可选默认为0 表示起始点   0 表示文件开始位置  1表示当前位置   2 表示文件末尾位置

注意:以文本你文件格式打开文件时,seek中的whence参数取值只能为0 

二进制的才可选  加b

 5)文件与文件夹操作

os模块

 os.path模块

 十 异常

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值