Python的基础知识
0、重点
1.输入、输出
print()
age=input('请输入数字')
age=int(age)
a=int(input("请输入数字"))
file=open('a.txt','r')
print(file.readlines())
file.close()
一、基础知识
类型查看:type(a)
lst[1,'hello']
lst1=list()
lst=[]
scores={'张三':100,'李四':98,'王五':45}
print(scores)
print(scores['张三'])
d={}
d1=dict()
t=('python',60,'hello')
t1=(9,)
t2=()
t3=tuple()
s={1,2,3,4,5,5,6,7,7}
print(s)
1.输出函数:print()
print(520)
print('hello')
print("hello")
str4=“人生苦短
我用Python”
print(3+1)
fp=open('D:/shuju/Demo/wenjian/text.txt','a+')
print('hello',file=fp)
fp.close()
print("hello","world",'nihao')
name='张三'
age=15
print('我叫'+name+'今年,'+str(age)+'岁')
2.转义字符
| |
---|
\n | 换行 | \t | 水平制表符 | \r | 回车、 | \b | 退路,回退一个字符 | \ | 转义字符 | r | 使用原字符 |
print('hello\\world')
print(r'hello\world')
3.Python中的标识符和保留字
1.标识符
(1)标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字;
2.保留字
4.变量的定义和使用
1.变量由三部分组成:标识、类型、值
2.当多次赋值以后,变量名会指向新的空间
name="玛丽"
print(name)
5.数据类型
1.常见的数据类型
- 整数类型 int
- 浮点类型 float
- 布尔类型 bool True,False
- 字符串类型 str
2.数据类型转换
a=15
b="zhangsan"
c=True
str(a) a="15"
6.注释
'''
2.多行注释
'''
二、函数、运算符、优先级
1.输入函数 input()
1.介绍
- 作用:接受来自用户的输入
- 返回值类型:输入值得类型为 str
- 值的存储:使用=对输入的值进行存储
a=input("你想要输入什么数字")
print(a,type(a))
a=int(a)
print(a,type(a))
a=int(input("你想要输入什么数字"))
2.运算符
1.算术运算符
print(11/2)
print(11//5)
print(11%5)
print(3**2)
print(9//-4)
print(9%-4)
2.赋值运算符(从右到左)
-
支持链式赋值:a=b=c=d=2
a+=b
a,b,c=20,30,40
3.比较运算符
a,b=10,20
print('a>10吗?',a>b)
a=10
b=10
print(a==b)
print(a is b)
lst1=[11,22,33,44]
lst2=[11,22,33,44]
print(lst1==lst2)
print(lst1 is lst2)
4.布尔运算符
5.位运算符
&:按位 与 ,相同为1,不同为0
| :按位或 ,只有同为0时才为0
6.运算符的优先级
三、结构
1.程序的组织结构
1.顺序结构
2.选择结构(if)
3.循环结构(while、for-in)
2.顺序结构
3.选择结构
1.语法结构
**if 条件表达式1: **
? 条件执行体1
elif 条件表达式2:
? 条件执行体2
elif 条件表达式3:
? 条件执行体3
else:
? 条件执行体4
a=int(input('请输入成绩'))
if a>=90 and a<=100:
print("A")
elif a>=80 and a<90:
print("B")
elif a>=70 and a<80:
print("C")
elif a>=60 and a<70:
print("D")
elif a>100 and a<0:
print("成绩有误")
else:
print("E")
2.pass直接通过
a=int(input('输入:'))
if a>10:
pass
else
pass
4.循环结构
(1)while循环
1.语法结构
while 条件表达式:
? 条件执行体(循环体)
a=1
while a<10:
print(a)
a+=1
(2)for-in 循环
1.语法结构
for 自定义的变量 in 可迭代对象:
? 条件执行体(循环体)
b='item'
for a in b:
print(a)
for a in 'item':
print(a)
for _ in range(5):
print("人生苦短")
for
(3)break和continue
if a>100:
break
while a<10:
if a>5:
break
for item in range(1,51):
if item%5!=0:
continue
print(item)
(4)else与for、while的搭配使用
1.for、while循环结束完以后,在执行else(在没碰到break),碰到break,就不用执行else
5.内置函数(range函数的使用)
1.range( )的三种创建方式
(1)只有一个参数(小括号中只给了一个数)
r=range(10)
print(r)
print(list(r))
(2)给两个参数
r=range(1,10)
(3)给了三个参数
r=range(1,10,2)
print(list(r))
print(10 in r
四、列表
1.列表的创建 使用 [ ]
lst=['hello','world',98]
print(lst[0])
print(lst[-3])
lst2=list(['hello','world',987])
2.列表的查询操作
lst=['hello','world',98,'hello']
print(lst.index('hello'))
print(lst.index('hello',1,4))
lst=[10,20,'python','hello']
print(10 in lst)
print(10 in lst)
for item in lst:
print(item)
3.列表元素的增删改
3.1增 append( ) ,extend( ) ,insert ( ) ,切片
lst=[10,20,30]
lst2=[40,50,60]
lst.append(100)
print("添加元素之后",lst)
lst.append(lst2)
lst.extend(lst)
lst.insert(1,90)
3.2 元素的删除
lst=[10,20,30,40,50,30]
lst.remove(30)
lst.pop(1)
lst.pop()
new_lst=lst[1:3]
lst[1:3]=[]
lst.clear()
del lst
3.3 列表元素的修改
lst=[10,20,30,40,50,30]
lst[2]=100
lst[1:3]=[200,300,400]
print(lst)
3.4 列表排序
lst=[10,20,30,40,50,8]
lst.sort()
lst.sort(reverse=False)
lst.sort(reverse=True)
new_list=sorted(lst)
print(new_list)
new_list=sorted(lst,reverse=True)
print(new_list)
3.5 生成列表
lst=[i for i in range(1,10)]
print(lst)
lst=[i*i for i in range(1,10)]
print(lst)
五. 字典
1、字典的定义
- Python内置的数据结构之一,与列表一样是一个可变序列
- 以键值对的方式存储数据,字典是一个无序的序列
scores={'张三':100,'李四':98,'王五':45}
-
字典的实现原理
- 字典的实现原理与查字典类似,查字典是先根据部首或拼音查找应的页码,Python中的字典是根据key查找value所在的位置
2.字典的创建
scores={'张三':100,'李四':98,'王五':45}
print(scores)
3.字典的常用操作
3.1字典中元素获取
scores={'张三':100,'李四':98,'王五':45}
print(scores['张三'])
print(scores.get('张三'))
print(scores.get('张五'))
3.2 key的判断、字典元素的删除、新增
scores={'张三':100,'李四':98,'王五':45}
print('张三' in scores)
print('张三' not in scores)
del scores['张三']
print(scores)
scores.clear()
scores['礼拜']=90
3.3 获取字典视图
scores={'张三':100,'李四':98,'王五':45}
keys=scores.keys()
print(keys)
print(type(keys))
print(list(keys))
values=scores.values()
print(values)
print(type(values))
print(list(values))
items=scores.items()
print(items)
print(type(items))
print(list(items))
'''
dict_keys(['张三', '李四', '王五'])
<class 'dict_keys'>
['张三', '李四', '王五']
dict_values([100, 98, 45])
<class 'dict_values'>
[100, 98, 45]
dict_items([('张三', 100), ('李四', 98), ('王五', 45)])
<class 'dict_items'>
[('张三', 100), ('李四', 98), ('王五', 45)]
'''
3.4字典元素的遍历
scores={'张三':100,'李四':98,'王五':45}
for item in scores:
print(item)
'''
张三
李四
王五
'''
for item in scores:
print(item,scores[item],scores.get(item))
'''
张三 100 100
李四 98 98
王五 45 45
'''
3.5、内置函数生成字典
items=['a','b','c']
prices=[100,20,30]
d={items:prices for items,prices in zip(items,prices)}
print(d)
d={items.upper():prices for items,prices in zip(items,prices)}
4、字典的总结
六、元组
1、元组的创建方式
2.元组的含义
3.元组的运用
1.元组中的元素是不可以修改的,但是元组中的列表可以修改
t=(10,[20,30,40],50)
print(t)
t[1].append(100)
4.元组的遍历
t=(10,[20,30,40],50)
print(t[0])
print(t[1])
for item in t:
print(item)
'''
10
[20, 30, 40]
50
'''
七、集合
1.什么集合
2.集合的创建
s={1,2,3,4,5,5,6,7,7}
print(s)
s1=set(range(6))
print(s1)
s2=set([1,2,3,4,4,4,5,5])
print(s2)
s3=set((1,2,3,858,65))
print(s3)
s4=set('python')
print(s4)
s5=set({12,4,34,55})
print(s5)
s7=set()
3.集合的相关操作
3.1集合的判断操作
s={10,20,30,401,60}
print(10 in s)
print(80 in s)
print(10 not in s)
3.2 集合元素的新增操作
s={10,20,30,401,60}
s.add(800)
print(s)
s.update({200,400,600})
s.update((1,2,3))
s.update([11,21,13])
3.3 集合元素的删除
s.remove(10)
s.discard(10)
s.pop()
s.clear()
4.集合和集合之间的关系
4.1、集合是否相等
s1={10,20,30,40}
s2={20,10,40,30}
s3={1,2,3,4,5}
print(s1==s2)
print(s1!=s2)
print(s1==s3)
4.2、一个集合是否另一个集合子集
s1={10,20,30,40}
s2={20,10,40}
print(s2.issubset(s1))
4.2、一个集合是否另一个集合超集
s1={10,20,30,40}
s2={20,10,40}
s3={1}
print(s1.issuperset(s2))
print(s1.issuperset(s3))
4.3 两个集合是否没有交集
s1={10,20,30,40}
s2={20,10,40}
s3={1}
print(s1.isdisjoint(s2))
print(s1.isdisjoint(s3))
5.集合的操作
s1={10,20,30,40}
s2={20,10,40,50,60}
print(s1.intersection(s2))
print(s1 & s2)
print(s1.union(s2))
print(s1 | s2)
print(s1.difference(s2))
print(s1 - s2)
print(s1.symmetric_difference(s2))
print(s1 ^ s2)
6. 集合生成式
7. 元组和集合总结
八、字符串
1. 字符串的驻留机制
a='python'
b="python"
c='''python'''
print(a,id(a))
print(b,id(b))
print(c,id(c))
'''
python 2127053081200
python 2127053081200
python 2127053081200
'''
2.字符串的常用操作
2.1字符串的查询操作
s='hello,hello'
print(s.index('lo'))
print(s.rindex('lo'))
print(s.find('lo'))
print(s.rfind('lo'))
2.2 字符串的大小写转换操作方法
a='hello,python'
a=a.upper()
print(a)
a1='HELLO,PYTHON'
a1=a1.lower()
print(a1)
a2='Hello,Python'
a2=a2.swapcase()
print(a2)
a3='hello,Python'
a3=a3.capitalize()
print(a3)
a3='hello,Python,you,are very good'
a3=a3.title()
print(a3)
2.3 字符串内容对齐操作方法
s='hello,python'
print(s.center(20,'*'))
print(s.center(20))
print(s.ljust(20,'*'))
print(s.ljust(15))
print(s.rjust(20,'*'))
print(s.rjust(15))
print(s.zfill(20))
2.4字符串的劈分
s='hello world Python'
lst=s.split()
print(lst)
s1='hello|world|Python'
lst1=s1.split()
print(lst1)
s1='hello|world|Python'
lst1=s1.split(sep='|')
print(lst1)
s1='hello|world|Python'
lst1=s1.split(sep='|',maxsplit=1)
print(lst1)
s='hello|world|Python'
lst=s.rsplit(sep='|',maxsplit=1)
print(lst)
2.5判断字符串操作的方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dtOJ9R0T-1637664838180)(E:\markdown学习\python\图片\31.png)]
print(1,'hello'.isidentifier())
s.isspace()
s.isalpha()
s.isdecimal()
print('123四'.isdecimal())
s.isnumeric()
print('123四'.isnumeric())
s.isalnum()
2.6 字符串的替换和合并
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3ksdgbrZ-1637664838181)(E:\markdown学习\python\图片\32.png)]
s='helo,python,python,python'
print(s.replace('python','JAVA'))
print(s.replace('python','JAVA',2))
lst=['hello','java','python']
print("|".join(lst))
print(''.join(lst))
t=('hello','java','python')
print(' '.join(t))
print('*'.join('python'))
3.字符串的比较操作
- 运算符: >, >=, <, <=, ==, !=
- 比较规则:首先比较两个字符串中的第一个字符,如果相等则继续比较下一个字符,依次比较下去,直到两个字符串中的字符不相等时,其比较结果就是两个字符串的比较结果,两个字符串中的所有后续字符将不再被比较
- 比较原理:两个字符进行比较时,比较的是其ordinal value(原始值),调用内置函数ord可以得到指定字符的ordinal value。与内置函数ord对应的是内置函数chr,调用内置函数chr时指定ordinal value可以得到其对应的字符
print('applr'>'app')
print('applr'>'bann')
print(ord('a'))
print(chr(97))
4.字符串的切片操作
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6ROLNlN4-1637664838182)(E:\markdown学习\python\图片\33.png)]
s='hello.python'
s1=s[:5]
s2=s[6:]
str=s1+'!'+s2
print(str)
print(s[1:5:1])
print(s[0:5:2])
5.格式化字符串
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3qLo7pdY-1637664838182)(E:\markdown学习\python\图片\34.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rt1n0b6B-1637664838182)(E:\markdown学习\python\图片\35.png)]
5.1.输出的形势
name='张三'
age=20
print('我叫%s,今年%d岁'%(name,age))
print('我叫{0},今年{1}岁'.format(name,age))
print(f'我叫{name},今年{age}岁')
5.2.宽度和精度
print('%10d'% 90)
print('%f'% 3.1415926)
print('%.3f'% 3.1415926)
print('%10.3f'% 3.1415926)
print('{0}'.format(3.1415926))
print('{0:.3}'.format(3.1415926))
print('{:.3f}'.format(3.1415926))
print('{:10.3f}'.format(3.1415926))
6. 字符串的编码转化
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g9bAYxay-1637664838183)(E:\markdown学习\python\图片\36.png)]
s='天天向上'
print(s.encode(encoding='GBK'))
print(s.encode(encoding='UTF-8'))
byte=s.encode(encoding='GBK')
print(byte.decode(encoding='GBK'))
7.总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jaBzK0o8-1637664838183)(E:\markdown学习\python\图片\37.png)]
九、函数
1.函数的创建和调用
def calc(a,b):
c=a+b
return c
a=calc(10,20)
print(a)
2.函数的参数传递
-
位置实参 根据形参对应的位置进行实参传递 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aiQxrSR3-1637664838184)(E:\markdown学习\python\图片\38.png)] -
关键字实参 根据形参名称进行实参传递 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SEX1HxDS-1637664838184)(E:\markdown学习\python\图片\39.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZEx2CNNq-1637664838185)(E:\markdown学习\python\图片\40.png)]
在函数调用过程中,进行参数的传递
? 如果是不可变对象,在函数体的修改不会影响实参的值,例如arg1修改为100,不会影响n1的值
? 如果是可变对象,在函数体的修改会影响实参的值,例如arg2的修改,append(10),会影响n2的值
def fun(arg1,arg2):
print("arg1",arg1)
print("arg2", arg2)
arg1=100
arg2.append(10)
print("arg1", arg1)
print("arg2", arg2)
n1=11
n2=[101,20]
fun(n1,n2)
print(n1)
print(n2)
'''
arg1 11
arg2 [101, 20]
arg1 100
arg2 [101, 20, 10]
11
[101, 20, 10]
'''
3.函数返回值
-
函数返回多个值时,结果为元组 函数的返回值 (1)如果函数没有返回值【函数执行完毕之后,不需要给调用处提供数据】return可以省略不写 (2)函数的返回值,如果是1个,直接返回类型 (3)函数的返回值,如果是多个,返回的结果为元组 def fun(num):
odd=[]
even=[]
for i in num:
if i%2:
odd.append(i)
else:
even.append(i)
return odd,even
lst=[10,29,34,23,44,53,55]
print(fun(lst))
def fun1():
return 'helloi','world'
print(fun1())
4.函数的参数定义
- 函数定义默认值参数
函数定义时,给形参设置默认值,只有与默认值不符的时候才需要传递实参
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-My7o3X9x-1637664838185)(E:\markdown学习\python\图片\41.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X0DnfupH-1637664838186)(E:\markdown学习\python\图片\42.png)]
2.个数可变的位置参数(输出的是:元组)
def fun(*args):
print(args)
print(args[0])
fun(10)
fun(80,20)
fun(150,20,50,50)
3.个数可变的关键字形参 (输出的:字典)
def fun(**args):
print(args)
fun(a=10)
fun(a=80,b=20)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YzdjaBpJ-1637664838186)(E:\markdown学习\python\图片\43.png)]
4.1、函数的参数总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mUbgpQIu-1637664838187)(E:\markdown学习\python\图片\44.png)]
fun(10,20,30)
lst=[11,22,33]
fun(*lst)
fun(a=100,b=200,c=300)
dic={'a':111,'b':222,'c':333}
fun(**dic)
def fun(a,b,*,c,d):
5.变量的作用域
- 程序代码能访问该变量的区域
- 根据变量的有效范围可分为
- 局部变量
在函数内定义并使用的变量,只在函数内部有效,局部变量使用global声明,这个变量就会就成全局变量 - 全局变量
函数体外定义的变量,可作用于函数内外
name='小李'
def fun6(a,b):
c=a+b
print(c)
global age
age=20
fun6(7,8)
print(age)
6.递归函数
def fun(a):
if a==1:
return 1
else:
return a*fun(a-1)
print(fun(6))
7.函数总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x1SaVEG8-1637664838187)(E:\markdown学习\python\图片\45.png)]
十、Bug
1、Bug的由来及分类
1.1、常见类型
-
粗心导致的语法错误SyntaxError 1.输入类型默认为 str -
粗心导致错误的自查宝典 1、漏了末尾的冒号,如if语句,循环语句,else子句等 2、缩进错误,该缩进的没缩进,不该缩进的瞎缩进 3、把英文符号写成中文符号,比如说:引号,冒号,括号 4、字符串拼接的时候,把字符串和数字拼在一起 5、没有**定义变量,**比如说while的循环条件的变量 6、**"==”比较运算符和”=”**赋值运算符的混用
-
知识不熟练导致的错误 (1)索引越界问题IndexError ```python
lst=[11,22,33,44]
print([4]) #越界
```
(2) append()方法的使用掌握不熟练 lst=[]
lst.append("a")
print (lst)
1.2常见的异常类型
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ibWrQFpP-1637664838188)(E:\markdown学习\python\图片\50.png)]
2、不同异常类型的处理方式和异常处理机制
捕获异常
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dwZRm0fA-1637664838188)(E:\markdown学习\python\图片\49.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6TRWcQUw-1637664838188)(E:\markdown学习\python\图片\46.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2kaYBh5A-1637664838189)(E:\markdown学习\python\图片\47.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tHOtrK3U-1637664838189)(E:\markdown学习\python\图片\48.png)]
3、PyCharm的调试机制
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jPCZD9hB-1637664838190)(E:\markdown学习\python\图片\52.png)]
4、总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fLB3L48k-1637664838190)(E:\markdown学习\python\图片\53.png)]
十一、类和对象
1、两大编程思想
| 面向过程 | 面向对象 |
---|
区别 | 事物比较简单,可以用线性的思维去解决 | 事情比较复杂,使用简单的线性思维无法解决 | 共同点 | 面向过程和面向对象都是解决实际问题的一种思维方式 | | | 二者相辅相成,并不是对立的解决复杂问题,通过面向对象方式便于我们从宏观上把握事物之间复杂的关系、方便我们分析整个系统; | 具体到微观操作,仍然使用面向过程方式来处理 |
2、类和对象的创建
-
类 类别,分门别类,物以类聚,人类,鸟类,动物类,植物类… -
类是多个类似事物组成的群体的统称。能够帮助我们快速理解和判断事物的性质 -
数据类型 不同的数据类型属于不同的类 使用内置函数查看数据类型 print(type (100)) <class ‘int’> print(type (99)) <class ‘int’> print(type(520)) <class int’> -
对象 100、99、520都是int类之下包含的相似的不同个例,这个个例专业数语称为实例或对象
2.1 类的创建
-
创建类的语法 clss Student:
pass
-
类的组成
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d9COnDlj-1637664838191)(E:\markdown学习\python\图片\54.png)]
class Student:
native_pace='吉林'
def __init__(self,name,age):
self.name=name
self.age=age
def eat(self):
print('')
@staticmethod
def method():
print('静态方法')
@classmethod
def cm(cls):
print('类方法')
def drink():
print("这就是函数")
stu1=Student('张三',20)
stu1.eat()
print(stu1.name)
print(stu1.age)
print("--------------------")
Student.eat(stu1)
print(Student.native_pace)
stu2=Student('张三',20)
stu3=Student('李四',30)
print(stu2.native_pace)
print(stu3.native_pace)
Student.native_pace='天津'
print(stu2.native_pace)
print(stu3.native_pace)
print("-------类方法的使用-------------")
Student.cm()
print("-------静态方法的使用-------------")
Student.method()
2.2 对象的创建
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mAcC7KfV-1637664838192)(E:\markdown学习\python\图片\56.png)]
3、类对象与类属性
- 类属性:类中方法外的变量称为类属性,被该类的所有对象所共享
- 类方法:使用@classmethod修饰的方法,使用类名直接访问的方法
- 静态方法:使用@staticmethod修饰的主法,使用类名直接访问的方法
print(Student.native_place)
Student.cm()
Student.sm()
4、类方法与静态方法
4.1 动态绑定属性和方法
- Python是动态语言,在创建对象之后,可以动态地绑定属性和方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-szr6ZwI8-1637664838192)(E:\markdown学习\python\图片\57.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hJ7zxYcw-1637664838192)(E:\markdown学习\python\图片\58.png)]
class Student:
def __init__(self,name,age):
self.name=name
self.age=age
def eat(self):
print(self.name+'在吃饭')
stu1=Student('张三',20)
stu2=Student('李四',30)
print('------为stu2动态绑定性别属性----------')
stu2.gender='女'
print(stu1.name,stu1.age)
print(stu2.name,stu2.age,stu2.gender)
print('----------------')
stu1.eat()
stu2.eat()
def show():
print('定义在类之外的,称为函数')
stu1.show=show
stu1.show()
5、总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-59KvtiSF-1637664838193)(E:\markdown学习\python\图片\59.png)]
两种调用方式
stu=Student
stu.eat()
Student.eat(stu)
十二、面向对象的特征(封装、继承、多态)
1、封装
1.1面向对象的三大特征
-
**封装:**提高程序的安全性
- 将数据(属性)和行为(方法)包装到类对象中。在方法内部对属性进行操作,在
类对象的外部调用方法。这样,无需关心方法内部的具体实现细节,从而隔离了复杂度。 - 在Python中没有专门的修饰符用于属性的私有,如果该属性不希望在类对象外部被访问,前边使用两个"_”。
-
继承:提高代码的复用性 -
多态:提高程序的可扩展性和可维护性 1.封装 class Student:
def __init__(self,name,age):
self.name=name
self.__age=age #在类的外部不可以被使用,但在类的内部可以使用
def show(self):
print(self.name,self.__age)
stu=Student('张三',20)
stu.show() #张三 20
#在类的外使用name与age
print(stu.name)
#print(stu.__age) #这样不可以直接使用
print(stu._Student__age) #在类的外部可以通过_Student__age进行访问
2、继承
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WSIY1ejf-1637664838193)(E:\markdown学习\python\图片\60.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YK1SR7dy-1637664838194)(E:\markdown学习\python\图片\61.png)]
class A(object):
pass
class B(object):
pass
class C(A,B):
pass
3、方法重写
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KptcK87i-1637664838194)(E:\markdown学习\python\图片\62.png)]
4、object类
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-btXOja60-1637664838194)(E:\markdown学习\python\图片\63.png)]
5、多态
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HPbdIySj-1637664838195)(E:\markdown学习\python\图片\64.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S0nHGX0n-1637664838195)(E:\markdown学习\python\图片\65.png)]
6、特殊方法和特殊属性
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HYLT1Ze8-1637664838196)(E:\markdown学习\python\图片\66.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o9vK8du0-1637664838196)(E:\markdown学习\python\图片\68.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-heSz97N3-1637664838199)(E:\markdown学习\python\图片\69.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wtPsL8BP-1637664838199)(E:\markdown学习\python\图片\70.png)]
十三、类的赋值与浅拷贝
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9h0n7E4d-1637664838200)(E:\markdown学习\python\图片\72.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3OVdaHKN-1637664838200)(E:\markdown学习\python\图片\71.png)]
十四、模块
1.什么是模块
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QAZnBX0y-1637664838200)(E:\markdown学习\python\图片\73.png)]
2.模块的导入(自定义模块)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TzeqqyNL-1637664838201)(file:///C:\Users\hp\AppData\Roaming\Tencent\Users\943234357\QQ\WinTemp\RichOle\IQO`2FF06FMCH9X26~C70[E.png)]
import math
print (math.pi)
from math import pi
3.以主程序形式运行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vLHQxt0e-1637664838201)(C:\Users\hp\AppData\Roaming\Typora\typora-user-images\image-20211111210528147.png)]
4.python中的包
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hCje3ewH-1637664838202)(C:\Users\hp\AppData\Roaming\Typora\typora-user-images\image-20211111211032959.png)]
import 包名.模块名 as 别名
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DyIA1jvG-1637664838202)(C:\Users\hp\AppData\Roaming\Typora\typora-user-images\image-20211111211727322.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mu4Gxat7-1637664838202)(E:\markdown学习\python\图片\74.png)]
5、python中常用的内置模块
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NMgNFDSN-1637664838203)(E:\markdown学习\python\图片\75.png)]
6.第三方模块的安装及使用
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yj4NJFje-1637664838203)(E:\markdown学习\python\图片\76.png)]
7、总结
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fmSbygMx-1637664838203)(E:\markdown学习\python\图片\77.png)]
十五、文件
1、编码格式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u0YZ1p2v-1637664838204)(E:\markdown学习\python\图片\78.png)]
2、文件读写原理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UelcRkyg-1637664838204)(E:\markdown学习\python\图片\79.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-by0fySRx-1637664838205)(E:\markdown学习\python\图片\80.png)]
3.常用的文件打开模式
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wSjM1eVL-1637664838205)(E:\markdown学习\python\图片\81.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8No9NwHP-1637664838205)(E:\markdown学习\python\图片\82.png)]
4.文件对象的常用方法
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-84yMq4iq-1637664838206)(E:\markdown学习\python\图片\83.png)]
5.with语句
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QBYnrkcP-1637664838206)(E:\markdown学习\python\图片\84.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xXAEzcGH-1637664838206)(E:\markdown学习\python\图片\85.png)]
6、os模块
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gJVxcQdU-1637664838207)(E:\markdown学习\python\图片\86.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1ZGUDsX6-1637664838207)(E:\markdown学习\python\图片\87.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ExnpjFMY-1637664838208)(E:\markdown学习\python\图片\88.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-soBvi0Do-1637664838209)(E:\markdown学习\python\图片\89.png)]
|