python中的变量以及类型
类型:数字、列表、布尔、元组、字典、字符串
可以使用type(变量的名字)查看变量的类型
标识符和关键字
标识符:是自己定义的,如变量名、函数名等
标识符由字母、数字、下划线组成,且数字不能开头
python中标识符区分大小写
关键字:python中具有特殊功能的标识符,就是关键字
可以在Python Shell通过以下命令进行查看当前系统中python的关键字
import keyword
keword.kwlist
格式化输出
常用的格式化符号
%c 字符
%s 字符串
%d 有符号十进制整数
%u 无符号十进制整数
%o 八进制整数
%x 十六进制整数(小写字母0x)
%X 十六进制整数(大写字母0X)
%f 浮点数
%e 科学计数法(小写'e')
%E 科学计数法(大写“E”)
%g %f和%e 的简写
%G %f和%E的简写
换行输出
\n后的内容会在另外一行显示
运算符
运算符 描述 实例
+ 加 两个对象相加 a + b 输出结果 30
- 减 得到负数或是一个数减去另一个数 a - b 输出结果 -10
* 乘 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
/ 除 b / a 输出结果 2
// 取整除 返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
% 取余 返回除法的余数 b % a 输出结果 0
** 指数 a**b 为10的20次方, 输出结果 100000000000000000000
常用数据类型转换
int(x [,base ]) 将x转换为一个整数
float(x ) 将x转换为一个浮点数
complex(real [,imag ]) 创建一个复数,real为实部,imag为虚部
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组 l
ist(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个Unicode字符
ord(x ) 将一个字符转换为它的ASCII整数值
hex(x ) 将一个整数转换为一个十六进制字符串 oct(x ) 将一个整数转换为一个八进制字符串 bin(x ) 将一个整数转换为一个二进制字符串
if判断语句
if、elif、else
循环
-
while循环
-
for循环 临时变量 in 列表或字符串等可迭代变量
-
break和contiune
- break 打断循环
- contiune 用来结束本次循环紧接着执行下一次循环
下标和切片
-
下标
列表、元组、字符串支持下标 python下标是从零开始的
-
切片
切片是指对操作的对象截取其中一部分的操作,字符串、元组、列表都支持切片操作
切片的语法:[起始:结束:步长] 选区的区间从起始位开始到结束位的前一位结束,步长表示间隔
python字符串快速逆置[::-1]
字符串的常见操作
- find
检测 str 是否包含在 mystr中,如果是返回开始的索引值,否则返回-1
mystr.find(str, start=0, end=len(mystr))
- index
跟find()方法一样,只不过如果str不在 mystr中会报一个异常.
mystr.index(str, start=0, end=len(mystr))
- count
返回 str在start和end之间 在 mystr里面出现的次数
mystr.count(str, start=0, end=len(mystr))
- replace
把 mystr 中的 str1 替换成 str2,如果 count 指定,则替换不超过 count 次.
mystr.replace(str1, str2, mystr.count(str1))
- split
以 str 为分隔符切片 mystr,如果 maxsplit有指定值,则仅分隔 maxsplit 个子字符串
mystr.split(str=" ", 2)
- capitalize
把字符串的第一个字符大写
mystr.capitalize()
- title
把字符串的每个单词首字母大写
a = "hello itcast"
a.title()
'Hello Itcast'
- startswith
检查字符串是否是以 hello 开头, 是则返回 True,否则返回 False
mystr.startswith(hello)
- endswith
检查字符串是否以obj结束,如果是返回True,否则返回 False.
mystr.endswith(obj)
- lower
转换 mystr 中所有大写字符为小写
mystr.lower()
- upper
转换 mystr 中的小写字母为大写
mystr.upper()
- ljust
返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
mystr.ljust(width)
- rjust
返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
mystr.rjust(width)
- center
返回一个原字符串居中,并使用空格填充至长度 width 的新字符串
mystr.center(width)
- lstrip
删除 mystr 左边的空白字符
mystr.lstrip()
- rstrip
删除 mystr 字符串末尾的空白字符
mystr.rstrip()
- strip
删除mystr字符串两端的空白字符
- rfind
类似于 find()函数,不过是从右边开始查找.
mystr.rfind(str, start=0,end=len(mystr) )
- rindex
类似于 index(),不过是从右边开始.
mystr.rindex( str, start=0,end=len(mystr))
- partition
把mystr以str分割成三部分,str前,str和str后
mystr.partition(str)
- rpartition
类似于 partition()函数,不过是从右边开始.
mystr.rpartition(str)
- splitlines
按照行分隔,返回一个包含各行作为元素的列表
mystr.splitlines()
- isalpha
如果 mystr 所有字符都是字母 则返回 True,否则返回 False
mystr.isalpha()
- isdigit
如果 mystr 只包含数字则返回 True 否则返回 False.
mystr.isdigit()
- isalnum
如果 mystr 所有字符都是字母或数字则返回 True,否则返回 False
mystr.isalnum()
- isspace
如果 mystr 中只包含空格,则返回 True,否则返回 False.
mystr.isspace()
- join
mystr 中每个元素后面插入str,构造出一个新的字符串
mystr.join(str)
列表
-
添加元素
append
extend 可以将另一集合中的元素逐一添加到列表中
insertinsert(index, object) 在指定位置index前插入元素object
-
修改元素
修改元素的时候,要通过下标来确定要修改的是哪个元素,然后才能进行修改
-
查找元素
in、not in、index、count
-
删除元素
del 根据下标进行删除
pop 删除最后一个元素
remove 根据元素的值进行删除
-
排序序(sort, reverse)
sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到 小。 reverse方法是将list逆置。
元组
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括 号。
python中不允许修改元组的数据,包括不能删除其中的元素。
字典
-
查看元素
除了使用key查找数据,还可以使用get来获取数据
info = {'name':'吴彦祖','age':18} print(info['age']) # 获取年龄 # print(info['sex']) # 获取不存在的key,会发生异常 print(info.get('sex')) # 获取不存在的key,获取到空的内容,不会出现异常
-
修改元素
字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改
-
添加元素
如果在使用 变量名['键'] = 数据 时,这个“键”在字典中,不存在,那么就会新增这个元素
-
删除元素
del 删除指定的元素
clear 清空整个字典
-
常见操作
len() 测量字典中键值对的个数
keys返回一个包含字典所有key的列表
values返回一个包含字典所有value的值
items返回一个包含所有(键,值)元组的列表
enumerate()函数用于一个可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标
函数定义和调用
- 4种函数类型 无参数 无返回值 无参数 有返回值 有参数 无返回值 有参数 有返回值
全局变量和局部变量
-
缺省参数 调用函数时,缺省参数的值如果没有传入,则取默认值。
-
不定长参数
加了星号()的变量args会存放所有未命名的变量参数,args为元组 而加*的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典.
如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到 args的后面, 但如果 有*kwargs的话,**kwargs必须是最后的
可变和不可变类型
所谓可变类型与不可变类型是指:数据能够直接进行修改,如果能直接修改那么就是可变,否 则是不可变
可变类型有: 列表、字典、集合
不可变类型有: 数字、字符串、元组
递归函数
-
什么是递归函数
如果一个函数内部不调用其他的函数,而是自己本身的话,这个函数就是递归函数
匿名函数
用lambda关键词能创建小型匿名函数,省略了def声明函数的标准步骤
Lambda函数能接收任何数量的参数但只能返回一个表达式的值 匿名函数不能直接调用print,因为lambda需要一个表达式
列表推导式
所谓的列表推导式,就是指的轻量级循环创建列表
set、list、tuple
set是集合类型
set、list、tuple之间可以相互转换
使用set可以完成list中快速去除重复元素的功能
文件操作
-
打开文件
在python,使用open函数,可以打开一个已经存在的文件,或者创建一个新文件 open(文件名,访问模式)
-
关闭文件
close()
-
文件的读写
write()
read(num) num表示要从文件中读取数据的长度
readlines按行的方式一次性读取整个文件,并返回一个列表,每一行是一个元素
readline()
文件的相关操作
有些时候,需要对文件进行重命名、删除等一些操作,python的os模块中都有这么功能
-
文件重命名
os模块中的rename()可以完成对文件的重命名操作 rename(需要修改的文件名, 新的文件名)
-
删除文件
os模块中的remove()可以完成对文件的删除操作 remove(待删除的文件名)
-
创建文件夹
import os
os.mkdir("张三")
- 获取当前目录
import os
os.getcwd()
- 改变默认目录
import os
os.chdir("../")
- 获取文件目录
import os
os.listdir("./")
- 删除文件夹
import os
os.rmdir("张三")
类和对象
-
类的构成
1 类的名称:类名
2 类的属性:一组数据
3 类的方法:允许对其进行操作的方法
继承介绍
-
单继承:子类只继承一个父类
子类在继承的时候,在定义类时,小括号()中为父类的名字 父类的属性、方法,会被继承给子类
-
多继承:子类继承多个父类
多继承可以继承多个父类,也继承了所有父类的属性和方法 注意:如果多个父类中有同名的 属性和方法,则默认使用第一个父类的属性和方法(根据类 的魔法属性mro的顺序来查找) 多个父类中,不重名的属性和方法,不会有任何影响。
-
多层继承:
-
重写 :当子类里的方法与父类的方法同名时 则使用子类的方法
若父类方法仍有价值则手动调用
重写的三种方式
父类名.父类方法(self,参数)
super().父类方法() 只在phtyon中可用
super(子类,self).父类方法
面向对象的三大特性:封装、继承、多态
多态:父类方法工作的地方 子类也能使用 不同的子类产生不同的执行效果
类方法 @classmethod装饰器 使用类属性
静态方法 @staticmethod 可以使用我们自己定义的参数
实例方法 第一个形参是 self
类属性 实例对象和类对象均可访问
实例属性 类队像不能访问