Python语法小白入门(四)

简介: Python语法小白入门

13.封装继承多态

01.封装

  • 封装:提高程序的安全性,将数据(属性)和行为(方法)包装到类对象中。
  • 继承:提高代码的复用性
  • 多态:提高程序的可扩展性和可维护性
    封装的实现:
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()
#在类的外面使用name与age
print(dir(stu))
print(stu._Student__age)

02.继承

继承:

  • 如果一个类没有继承任何类,则默认继承object
  • Python支持多继承
  • 定义子类时,必须在其构造函数中调用父类的构造函数
class  子类类名 (父类1,父类2):
       pass
class Person(object):
    def __init__(self,name,age):
         self.name=name
         self.age=age
    def info(self):
        print(self.name,self.age)
class Student(Person):
    def __init__(self,name,age,stu_no):
        super().__init__(name,age)
        self.stu_no=stu_no
class Teacher(Person):
    def __init__(self,name,age,teachofyear):
        super().__init__(name,age)
        self.teachofyear=teachofyear
stu=Student('张三',20,'1001')
teacher=Teacher('李四',34,23)
stu.info()
teacher.info()

03.方法重写

class Teacher(Person):
    def __init__(self,name,age,teachofyear):
        super().__init__(name,age)
        self.teachofyear=teachofyear
    def info(self):
        super().info()
        print('教龄是'+self.teachofyear)

04.Object类


Object类:


object类是所有类的父类,因此所有类都有object类的属性和方法。

内置函数dir()可以查看指定对象所有属性

Object有一个_str_()方法,用于返回一个对于"对象的描述",对应于内置函数str()经常用于print()方法,帮我们查看对象的信息,所以我们经常会对__str__()进行重写


05.多态的实现


多态:多态就是‘具有多种形态’,它指的是:即便不知道一个变量所引用的对象到底是什么类型,仍然可以通过这个变量调用方法,在运行过程中根据变量所引用对象的类型,动态决定调用哪个对象中的方法。


class Animal(object):
    def eat(self):
        print('动物会吃')
class Dog(Animal):
    def eat(self):
        print('狗吃骨头...')
class Cat(Animal):
    def eat(self):
        print('猫吃鱼...')
class Person:
    def eat(self):
        print('人吃五谷杂粮')
#定义一个函数
def fun(obj):
    obj.eat()
#开始调用函数
fun(Cat())
fun(Dog())
fun(Animal())

06.特殊属性


  • dict:获得类对象或实例对象所绑定的所有属性和方法的字典


x.__dict__


特殊方法:

  • len():通过重写_len_()方法,让内置函数len()的参数可以是自定义类型
  • add():通过重写_add_()方法,可使用自定义对象具有"+"功能
  • new():用于创建对象
  • init():对创建的对象进行初始化


07.类的赋值与浅拷贝

#变量的赋值
class CPU:
    pass
cpu1=CPU()
cpu2=cpu1

变量的赋值操作:只是形成两个变量,实际上还是指向同一个对象

浅拷贝:Python拷贝一般都是浅拷贝,拷贝时,对象包含的子对象内容不拷贝,因此,源对象与拷贝对象会引用同一个子对象

#类的浅拷贝
disk=Disk()
computer =Computer(cpu1,disk)
#浅拷贝
import copy
computer2=copy.copy(computer)
  • 深拷贝:使用copy模块的deepcopy函数,递归拷贝对象中包含的子对象,源对象和拷贝对象所有的子对象也不相同


#深拷贝
computer3=copy.deepcopy(computer)


14.模块和包


01.模块


模块:


模块英文为Modules

函数与模块的关系(一个模块中可以包含Nduoge函数)

在Python中一个扩展名为.py的文件就是一个模块

使用模块的好处:方便其它程序和脚本的导入并使用

避免函数名和变量名冲突

提高代码的可维护性

提高代码的可重用性


02.模块的导入


创建模块:新建一个.py文件,名称尽量不要与Python自带的标准模块名称相同

导入模块:import 模块名

from 模块名称 import 函数/变量/类


import math #关于数学运算
print(math.pi)
from math import pi
print(pi)

03.Python中的包


包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下

作用:代码规范、避免模块名称冲突

包与目录的区别:包含__init__.py文件的目录称为包

目录里通常不包含_init_.py文件

包的导入

import 包名.模块名

使用from … import可以导入包,模块,变量等等


04.Python中常用的内容模块


sys:与Python解释器及其环境操作相关的标准库

time:提供与时间相关的各种函数的标准库

os:提供了访问操作系统服务功能的标准库

calendar:提供与日期相关的各种函数的标准库

urllib:用于读取来自网上(服务器)的数据标准库

json :用于使用JSON序列化和反序列化对象

re :用于在字符串中执行正则表达式匹配和替换

math:提供标准算数运算函数的标准库

decimal:用于进行精准控制运算精度、有效数位和四舍五入操作的十进制运算

logging:提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能


05.第三方模块的安装及使用


pip install 模块名


import 模块名


import time
import schedule
def job():
    print('哈哈-----')
schedule.every(3).seconds.do(job)
while True:
    schedule.run_pending()
    time.sleep(1)


15.文件读写


01.编码格式介绍


  • 常见的字符编码格式
    Python的解释器使用的是Unicode(内存)
    .py文件在磁盘上使用UTF-8存储(外存)


02.文件读写的原理


  • 文件的读写俗称"IO操作"
  • 内置函数open()创建文件对象


file=open('a.txt','r')
print(file.readlines())//结果是一个列表
file.close()


03.常用的文件打开模式


文件的类型:

文本文件:存储的是普通“字符”文本,默认为unicode字符集,可以使用记事本程序打开

二进制文件:把数据内容用“字节”进行存储,无法用记事本打开,必须使用专用的软件打开,举例:MP3音频文件,jpg图片,doc文档等

r:以只读模式打开文件,文件的指针会放在文件的开头

w:以只写模式打开文件,如果文件不存在则创建,如果文件存在,则覆盖原有内容,文件指针放在文件的开头

a:以追加模式打开文件,如果文件不存在则创建,文件指针在文件开头,如果文件存在,则在文件末尾追加内容,文件指针在原文件末尾

b:以二进制方式打开文件,不能单独使用,需要与共它模式一起使用,rb,或者wb

+:以读写方式打开文件,不能单独使用,需要与其它模式一起使用,a+


04.文件对象常用方法


read([size]):从文件中读取size个字节或字符的内容返回。若省略[size],则读取到文件末尾,即一次读取文件所有内容

readline():从文本文件中读取一行内容

readlines():把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回

write(str):将字符串str内容写入文件

writelines(s_list):将字符串列表s_list写入文本文件,不添加换行符

seek(offset[,whence]):把文件指针移动到新的位置,offset


05.with语句(上下文管理器)


with语句可以自动管理上下文资源,无论什么原因跳出with块,都能保证文件正确的关闭,以此来达到释放资源的目的。


with open('a.txt','r') as file :
    print(file.read())


文件的复制:


with open('logo.png','rb') as src_file:
    with open('copy2logo.png','wb') as target_file:
        target_file.write(src_file.read())


06.os模块的常用函数


  • os模块是Python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。
  • os模块与os.path模块对于目录或文件进行操作
import os
os.system('notepad.exe')
#直接调用可执行文件
os.startfile('C://qq.exe')


getcwd():返回当前的工作目录

listdir(path):返回指定路径下的文件和目录信息

mkdir(path[,mode]):创建目录

makedirs(path1/path2…[,mode]):创建多级目录

rmdir(path):删除目录

removedirs(path1/path2…):删除多级目录

chdir(path):将path设置为当前工作目录

os.path模块操作目录相关函数:


abspath(path):用于获取文件或目录的绝对路径

exists(path):用于判断文件或目录是否存在,如果存在返回True,否则返回False

join(path,name):将目录与目录或者文件名拼接起来

splitext():分离文件名和扩展名

basename(path):从一个目录提取文件名

dirname(path):从一个路径中提取文件路径,不包括文件名

isdir(path):用于判断是否为路径


16.学生信息管理系统


功能:


添加学生及成绩信息

将学生信息保存到文件中

修改和删除学生信息

查询学生细腻些

根据学生成绩进行排序

统计学生的总分


01.项目打包


安装第三方模块


pip install PyInstaller


  • 执行打包操作


pyinstaller  -F E:\video\studentsys\stusystem.py
相关文章
|
11月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
1146 7
|
12月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
684 1
|
11月前
|
Cloud Native 算法 API
Python API接口实战指南:从入门到精通
🌟蒋星熠Jaxonic,技术宇宙的星际旅人。深耕API开发,以Python为舟,探索RESTful、GraphQL等接口奥秘。擅长requests、aiohttp实战,专注性能优化与架构设计,用代码连接万物,谱写极客诗篇。
2027 1
Python API接口实战指南:从入门到精通
|
11月前
|
存储 Java 调度
Python定时任务实战:APScheduler从入门到精通
APScheduler是Python强大的定时任务框架,通过触发器、执行器、任务存储和调度器四大组件,灵活实现各类周期性任务。支持内存、数据库、Redis等持久化存储,适用于Web集成、数据抓取、邮件发送等场景,解决传统sleep循环的诸多缺陷,助力构建稳定可靠的自动化系统。(238字)
1763 1
|
12月前
|
调度 数据库 Python
Python异步编程入门:asyncio让并发变得更简单
Python异步编程入门:asyncio让并发变得更简单
542 5
|
数据采集 存储 XML
Python爬虫入门(1)
在互联网时代,数据成为宝贵资源,Python凭借简洁语法和丰富库支持,成为编写网络爬虫的首选。本文介绍Python爬虫基础,涵盖请求发送、内容解析、数据存储等核心环节,并提供环境配置及实战示例,助你快速入门并掌握数据抓取技巧。
|
大数据 数据处理 数据安全/隐私保护
Python3 迭代器与生成器详解:从入门到实践
简介:本文深入解析Python中处理数据序列的利器——迭代器与生成器。通过通俗语言与实战案例,讲解其核心原理、自定义实现及大数据处理中的高效应用。
551 0
|
存储 缓存 安全
Python字典:从入门到精通的实用指南
Python字典如瑞士军刀般强大,以键值对实现高效数据存储与查找,广泛应用于配置管理、缓存、统计等场景。本文详解字典基础、进阶技巧、实战应用与常见陷阱,助你掌握这一核心数据结构,写出更高效、优雅的Python代码。
416 0
|
数据挖掘 数据处理 C++
Python Lambda:从入门到实战的轻量级函数指南
本文通过10个典型场景,详解Python中Lambda匿名函数的用法。Lambda适用于数据处理、排序、条件筛选、事件绑定等简洁逻辑,能提升代码简洁性和开发效率。同时提醒避免在复杂逻辑中过度使用。掌握Lambda,助你写出更高效的Python代码。
788 0
|
数据采集 Web App开发 JSON
Python爬虫基本原理与HTTP协议详解:从入门到实践
本文介绍了Python爬虫的核心知识,涵盖HTTP协议基础、请求与响应流程、常用库(如requests、BeautifulSoup)、反爬应对策略及实战案例(如爬取豆瓣电影Top250),帮助读者系统掌握数据采集技能。
923 0

推荐镜像

更多