python语法速通

<1>创建类

class NameOfClass:............1

def init(self):............2

def ways(self):............3

1行前者是关键字表示类,后者采用pascal命名法(单词首字母大写)

普通变量时下划线命名法(只能含有数字,字母和下划线,变量名不能以数字下划线开头)

2行表示构造函数,注意有两个下划线,self表示对象自身,可以将属性值绑定在实例对象上

如self.name="Tom",如果写成name="Tom",python会识别为给普通的name变量赋值,不会将这个值看做是对象的属性

3行表示定义类的方法,self的作用是在方法里面去获取或修改和对象绑定的属性

python 复制代码
class Student:
    def __init__(self,name,student_id):
        self.name=name
        self.student_id=student_id
        self.grades={"语文":0,"数学":0,"英语":0}
    def set_grade(self,course,grade):
        if course in self.grades:
            self.grades[course]=grade
     def print_grades(self):
        print(f"学生{self.name},学号:{self.student_id}的成绩为:")
        for course in self.grades:
            print(f"{course}:{self.grades[course]}分")
s1=Student("a","001")
print(s1.name)
s2=Student("b","002")
s2.set_grades("数学",100)
print(s2.grades)
s2.print_grades()

<2>类继承

python 复制代码
class Mammal:
    def __init__(self,name,sex):
        self.name=name
        self.sex=sex
        self.num_eyes=2
    def breathe(self):
        print(self.name+"在呼吸......")
    def poop(self):
        print(self.name+"在拉屎......")
class Human(Mammal):
    def __init__(self,name,sex):
        super().__init__(name,sex)
        self.has_tail=False
    def read(self):
        print(self.name+"在阅读......")
class Cat(Mammal):
    def __init__(self,name,sex):
        super().__init__(name,sex)
        self.has_tail=True
    def scratch_sofa(self):
        print(self.name+"在抓沙发......")

其中Human是子类,Mammal是父类,在调用方法时,优先看自己有没有,如果有用自己的,如果没有往上找父类的同名方法

python 复制代码
class Employee:
    def __init__(self,name,id)
        self.name=name
        self.id=id
    def print_info(self)
        print(f"员工姓名:{self.name},员工id:{self.id}")
class FullTimeEmployee(Employ):
    def __init__(self,name,id,monthly_salary)
        super().__init__(name,id)
        self.monthly_salary=monthly_salary
    def fcalculate(self)
        return self.monthly_salary
class PartTimeEmployee(Employ):
    def __init__(self,name,id,daily_salary,work_days)
        super().__init__(name,id)
        self.daily_salary=daily_salary
        self.work_days=work_days
    def pcalculate(self)
        return self.daily_salary*self.work_days
zs=FullTimeEmployee("zs","1001",3000)
ls=PartTimeEmployee("ls","1002",50,18)
zs.print_inf0()
ls.print_inf0()
print(zs.fcalculate())
print(ls.pcalculate())

<3>文件操作

f=open(".\data.txt","r",encoding="utf-8")......1

print(f.read())......2

print(f.read(10))......3

print(f.readline())......4

print(f.readlines())......5

f.close()......6

with open(".\data.txt") as f:......7

print(f.read())

1.打开文件读 open("文件的相对路径或者绝对路径","r"),如下想要打开文件写的话,把r改成w(如果文件不存在会帮你创建,如果文件原本有内容,执行写操作后会将原本内容清空,如果不想清空原来的内容,就将w换成a,a为附加模式。或者写成r+w,支持读写功能,并且是追加内容),不写时默认为读取,encording为文件的编码方式

2.当执行完一次print(f.read())后,会打印出文本的所有内容。但是如果执行两次print(f.read()),第二次会读取空字符串并打印,因为文件会记录之前读取到的位置

3.会读取第1-10个字节的文件内容

4.会读取一行文件内容并打印

5.readlines会读取全部文件内容,并把每行作为列表元素返回

6.关闭文件,释放资源

7.在缩进块内的内容执行完后,文件会自动关闭

<4>异常类型

(1)常见的错误类型

1.IndexError 索引错误,产生了长度范围之外的索引

2.ZeroDivisionError 除零错误

3.FileNotFoundError 找不到文件错误,文件不存在

4.TypeError 类型错误,如让两个字符串做乘法

5.IndentationError 缩进错误

6.ImportError 导入模块错误

7.ArithmeticError 计算错误

8.SyntaxError 语法错误

9.ValueError 值错误

10.KeyError 键错误

11.AttributeError 属性错误

(2)捕捉异常

try: 有可能产生错误代码

......

except: 产生其他错误时会运行

......

else: 没有错误会运行

......

finally: 无论错误与否都会执行

......

<5>测试

unittest是一个常用的单元测试的测试库(Python自带)

测试在my_calculator.py文件中的my_adder函数

python 复制代码
def my_adder(x,y):
    return x+y

测试用例

python 复制代码
import unittest
from my_calculator import my_adder
class TestMyadder(unittest.TestCase):
    def test_positive_with_positive(self):  #函数名必须以text_开头
        self.assertEqual(my_adder(5,3),8)
    def test_negative_with_positive(self):
        self.assertEqual(my_adder(-5,-3),-2)

写好测试用例后在编辑器终端输入python -m unittest表示运行unittest这个库,这个库会自动搜索所有继承了unittest库里TestCase类的子类,运行他们所有以test_开头的方法,然后展示测试结果

unittest.TestCase类的常见测试方法

|---------------------|-------------------|
| 方法 | 类似于 |
| assertEqual(A,B) | assert A==B |
| assertTrue(A) | assert A is True |
| assertIn(A,B) | assert A in B |
| assertNotEqual(A,B) | assert A!=B |
| assertFalse(A) | assert A is False |
| assertNotIn(A,B) | assert A not in B |

<6>高阶函数和匿名函数

函数是可以传入函数的,直接传入函数名即可无需传入参数,这样的函数成为高阶函数

calculate(add)

也可以传入匿名函数

calculate(lambda a,b:a+b),冒号前面是传入匿名函数的参数,冒号后面是要返回的结果

匿名函数可以定义好后被直接调用

(lambda a,b:a+b)(2,3)

相关推荐
山土成旧客7 小时前
【Python学习打卡-Day20】打开机器学习黑箱:从“数据形状”到SHAP值的深度解析
python·学习·机器学习
@小码农7 小时前
6547网题库:2025年9月 Python等级考试(四级)真题及答案
开发语言·python
@我本楚狂人7 小时前
Python MCP实战:构建 FastAPI 服务端与客户端示例&MCP客户端调用
开发语言·python·fastapi
艾上编程7 小时前
第二章——数据分析场景之Python自动化统计分析:高效挖掘数据价值
python·数据分析·自动化
轻竹办公PPT7 小时前
上传PDF直接生成PPT,适合工作汇报和总结场景
python·pdf·powerpoint
爬山算法7 小时前
Netty(11) Netty的心跳机制是什么?为什么需要它?
开发语言·python
java1234_小锋7 小时前
[免费]基于Python的Flask+Vue3在线图书(图书借阅)管理系统【论文+源码+SQL脚本】
python·python毕业设计·图书借阅·在线图书
派大鑫wink7 小时前
Python 大数据毕业设计:电影票房可视化分析系统(Flask+Echarts + 爬虫实战)
大数据·python·课程设计
JAVA+C语言7 小时前
Python+Django 核心介绍
开发语言·python·django