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
相关文章
|
4天前
|
存储 Python Perl
python正则语法
本文介绍了正则表达式的基础知识及其在 Python 中的应用。首先解释了为什么要使用正则表达式,通过一个判断手机号的示例展示了正则表达式的简洁性。接着详细介绍了 `re` 模块的常用方法,如 `match()`、`search()`、`findall()`、`finditer()` 等,并讲解了正则表达式的基本语法,包括匹配单个字符、数字、锚字符和限定符等。最后,文章还探讨了正则表达式的高级特性,如分组、编译和贪婪与非贪婪模式。
9 2
|
7天前
|
数据采集 机器学习/深度学习 人工智能
Python编程入门:从基础到实战
【10月更文挑战第24天】本文将带你进入Python的世界,从最基础的语法开始,逐步深入到实际的项目应用。我们将一起探索Python的强大功能和灵活性,无论你是编程新手还是有经验的开发者,都能在这篇文章中找到有价值的内容。让我们一起开启Python的奇妙之旅吧!
|
9天前
|
数据采集 存储 数据库
Python中实现简单爬虫的入门指南
【10月更文挑战第22天】本文将带你进入Python爬虫的世界,从基础概念到实战操作,一步步指导你如何使用Python编写一个简单的网络爬虫。我们将不展示代码示例,而是通过详细的步骤描述和逻辑讲解,帮助你理解爬虫的工作原理和开发过程。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你打开一扇通往数据收集新世界的大门。
|
7天前
|
测试技术 开发者 Python
探索Python中的装饰器:从入门到实践
【10月更文挑战第24天】 在Python的世界里,装饰器是一个既神秘又强大的工具。它们就像是程序的“隐形斗篷”,能在不改变原有代码结构的情况下,增加新的功能。本篇文章将带你走进装饰器的世界,从基础概念出发,通过实际例子,逐步深入到装饰器的高级应用,让你的代码更加优雅和高效。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往高效编程的大门。
|
9天前
|
存储 人工智能 数据挖掘
Python编程入门:构建你的第一个程序
【10月更文挑战第22天】编程,这个听起来高深莫测的词汇,实际上就像搭积木一样简单有趣。本文将带你走进Python的世界,用最浅显的语言和实例,让你轻松掌握编写第一个Python程序的方法。无论你是编程新手还是希望了解Python的爱好者,这篇文章都将是你的理想起点。让我们一起开始这段奇妙的编程之旅吧!
14 3
|
8天前
|
机器学习/深度学习 人工智能 算法
机器学习基础:使用Python和Scikit-learn入门
机器学习基础:使用Python和Scikit-learn入门
20 1
|
10天前
|
存储 程序员 开发者
Python编程入门:从零开始掌握基础语法
【10月更文挑战第21天】本文将带你走进Python的世界,通过浅显易懂的语言和实例,让你快速了解并掌握Python的基础语法。无论你是编程新手还是想学习一门新的编程语言,这篇文章都将是你的不二之选。我们将一起探索变量、数据类型、运算符、控制结构、函数等基本概念,并通过实际代码示例加深理解。准备好了吗?让我们开始吧!
|
1天前
|
开发者 Python
探索Python中的装饰器:从入门到实战
【10月更文挑战第30天】本文将深入浅出地介绍Python中一个强大而有趣的特性——装饰器。我们将通过实际代码示例,一步步揭示装饰器如何简化代码、增强函数功能并保持代码的可读性。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往更高效编程的大门。
|
10天前
|
数据采集 机器学习/深度学习 数据可视化
深入浅出:用Python进行数据分析的入门指南
【10月更文挑战第21天】 在信息爆炸的时代,掌握数据分析技能就像拥有一把钥匙,能够解锁隐藏在庞大数据集背后的秘密。本文将引导你通过Python语言,学习如何从零开始进行数据分析。我们将一起探索数据的收集、处理、分析和可视化等步骤,并最终学会如何利用数据讲故事。无论你是编程新手还是希望提升数据分析能力的专业人士,这篇文章都将为你提供一条清晰的学习路径。
|
11天前
|
调度 开发者 Python
探索Python中的异步编程:从入门到精通
在这个快节奏的技术时代,异步编程成为了提升应用性能的关键。本文将带你深入Python的异步编程世界,从基础概念到高级技巧,一探究竟。我们将一起学习如何利用Python的asyncio库来构建高效、响应迅速的异步应用。摘要部分,我们将以一个独特的视角,用一个简短的故事来吸引读者的兴趣,而不是传统的介绍性文字。