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
相关文章
|
14天前
|
数据采集 存储 XML
Python爬虫定义入门知识
Python爬虫是用于自动化抓取互联网数据的程序。其基本概念包括爬虫、请求、响应和解析。常用库有Requests、BeautifulSoup、Scrapy和Selenium。工作流程包括发送请求、接收响应、解析数据和存储数据。注意事项包括遵守Robots协议、避免过度请求、处理异常和确保数据合法性。Python爬虫强大而灵活,但使用时需遵守法律法规。
|
11天前
|
机器学习/深度学习 人工智能 TensorFlow
人工智能浪潮下的自我修养:从Python编程入门到深度学习实践
【10月更文挑战第39天】本文旨在为初学者提供一条清晰的道路,从Python基础语法的掌握到深度学习领域的探索。我们将通过简明扼要的语言和实际代码示例,引导读者逐步构建起对人工智能技术的理解和应用能力。文章不仅涵盖Python编程的基础,还将深入探讨深度学习的核心概念、工具和实战技巧,帮助读者在AI的浪潮中找到自己的位置。
|
11天前
|
机器学习/深度学习 数据挖掘 Python
Python编程入门——从零开始构建你的第一个程序
【10月更文挑战第39天】本文将带你走进Python的世界,通过简单易懂的语言和实际的代码示例,让你快速掌握Python的基础语法。无论你是编程新手还是想学习新语言的老手,这篇文章都能为你提供有价值的信息。我们将从变量、数据类型、控制结构等基本概念入手,逐步过渡到函数、模块等高级特性,最后通过一个综合示例来巩固所学知识。让我们一起开启Python编程之旅吧!
|
11天前
|
存储 Python
Python编程入门:打造你的第一个程序
【10月更文挑战第39天】在数字时代的浪潮中,掌握编程技能如同掌握了一门新时代的语言。本文将引导你步入Python编程的奇妙世界,从零基础出发,一步步构建你的第一个程序。我们将探索编程的基本概念,通过简单示例理解变量、数据类型和控制结构,最终实现一个简单的猜数字游戏。这不仅是一段代码的旅程,更是逻辑思维和问题解决能力的锻炼之旅。准备好了吗?让我们开始吧!
|
1天前
|
设计模式 缓存 开发者
Python中的装饰器:从入门到实践####
本文深入探讨了Python中强大的元编程工具——装饰器,它能够以简洁优雅的方式扩展函数或方法的功能。通过具体实例和逐步解析,文章不仅介绍了装饰器的基本原理、常见用法及高级应用,还揭示了其背后的设计理念与实现机制,旨在帮助读者从理论到实战全面掌握这一技术,提升代码的可读性、可维护性和复用性。 ####
|
11天前
|
设计模式 缓存 开发框架
Python中的装饰器:从入门到实践####
本文深入探讨了Python中装饰器的工作原理与应用,通过具体案例展示了如何利用装饰器增强函数功能、提高代码复用性和可读性。读者将学习到装饰器的基本概念、实现方法及其在实际项目开发中的实用技巧。 ####
22 3
|
14天前
|
机器学习/深度学习 数据采集 数据可视化
Python在数据科学中的应用:从入门到实践
本文旨在为读者提供一个Python在数据科学领域应用的全面概览。我们将从Python的基础语法开始,逐步深入到数据处理、分析和可视化的高级技术。文章不仅涵盖了Python中常用的数据科学库,如NumPy、Pandas和Matplotlib,还探讨了机器学习库Scikit-learn的使用。通过实际案例分析,本文将展示如何利用Python进行数据清洗、特征工程、模型训练和结果评估。此外,我们还将探讨Python在大数据处理中的应用,以及如何通过集成学习和深度学习技术来提升数据分析的准确性和效率。
|
13天前
|
机器学习/深度学习 数据挖掘 开发者
Python编程入门:理解基础语法与编写第一个程序
【10月更文挑战第37天】本文旨在为初学者提供Python编程的初步了解,通过简明的语言和直观的例子,引导读者掌握Python的基础语法,并完成一个简单的程序。我们将从变量、数据类型到控制结构,逐步展开讲解,确保即使是编程新手也能轻松跟上。文章末尾附有完整代码示例,供读者参考和实践。
|
13天前
|
人工智能 数据挖掘 程序员
Python编程入门:从零到英雄
【10月更文挑战第37天】本文将引导你走进Python编程的世界,无论你是初学者还是有一定基础的开发者,都能从中受益。我们将从最基础的语法开始讲解,逐步深入到更复杂的主题,如数据结构、面向对象编程和网络编程等。通过本文的学习,你将能够编写出自己的Python程序,实现各种功能。让我们一起踏上Python编程之旅吧!
|
7天前
|
机器学习/深度学习 存储 数据挖掘
Python 编程入门:理解变量、数据类型和基本运算
【10月更文挑战第43天】在编程的海洋中,Python是一艘易于驾驭的小船。本文将带你启航,探索Python编程的基础:变量的声明与使用、丰富的数据类型以及如何通过基本运算符来操作它们。我们将从浅显易懂的例子出发,逐步深入到代码示例,确保即使是零基础的读者也能跟上步伐。准备好了吗?让我们开始吧!
17 0
下一篇
无影云桌面