python从入门到实践知识点总结_python编程从入门到实践2的说明:基础知识(2)第7-11章,Python,学习,笔记,整理,篇,下,711...

第7章 用户输入和while循环(结合编写交互式程序)

7.1 函数input()的工作原理

message=input(“清晰易懂的提示”)

暂停程序运行,等待用户输入,返回字符串(可用int()等转换)

*结合while循环可大量填充字典等数据结构

7.2 while循环简介

while 指定条件:

不断运行直至不满足指定条件;需避免死循环

若要求满足多个条件才可继续运行,可定义一个布尔变量(“

标志

”),判断是否处于活动状态

break语句

:直接退出for/while循环

continue语句

:忽略余下代码,返回循环开头,判断是否继续

7.3 使用while循环来处理列表和字典(收集、存储并组织大量输入)

for循环中不应修改列表,while循环可遍历+修改

结合pop()移动列表元素

结合remove()删除所有指定值

结合input()使用用户输入填充字典

第8章 函数

函数

:带名字的代码块,可提高代码效率,更易维护和排除故障,并可在不同程序中重用

8.1 定义函数

定义

def 函数名(形参):

调用

函数名(实参)

*使用

描述性

函数名,增加可读性

8.2 传递实参

(1)

位置实参

:实参形参顺序相同

(2)

关键字实参

:无需考虑顺序,传递名称-值对,如type=“dog”

形参可指定

默认值

,优先级低于显式提供的实参;有默认值的形参需放在最后列出

默认值设置为空字符串时,可将该参数视为

可选值

,从而让函数简化处理不同情形

提供的实参个数或类型不符合要求时,会

引发错误

8.3 返回值return(简化主程序)

可返回任何类型的值,包括列表和字典

8.4 传递列表

永久性修改,高效处理大量数据;传递[:]副本可禁止修改,但会降低效率,慎用

*每个函数只应负责一项具体工作,有助于将复杂任务划分为一系列步骤

8.5 传递任意数量的实参

*形参名:创建一个空元组,接收任意数量实参值

**形参名:创建一个空字典,接收任意数量实参键-值对

两者均需放在最后,封装余下的实参

8.6 将函数存储在模块(独立文件)中

导入

整个模块

(句点表示法调用):

import 模块名 (as 别名)

导入

特定函数

(直接调用):

from 模块名 import 函数名 (as 别名)

导入模块中所有函数(

不推荐

):

from 模块名 import *

8.7 函数编写指南

描述性名称;只用小写字母和下划线;编写文档字符串;默认值和关键字的=两边无需空格

代码顺序:(程序注释+)import语句+主体代码

第9章 类

面向

对象

编程:编写类,定义通用行为,再基于类创建对象(实例化)

9.1 创建和使用类

# 类名称首字母大写

# 实例名首字母小写

class Dog():

'''类的说明'''

# 方法:类中的函数

# 属性:类中以self为前缀的变量

# __init__特殊方法,实例化时自动运行;__默认方法前后均有两个下划线__

# self是指向实例本身的引用,自动传递,让实例访问类中的属性和方法(句点表示法)

def __init__(self, name):

self.name = name

def other_method(self):

# 创建实例

my_dog = Dog(“a”)

# 访问属性,无括号

my_dog.name

# 调用方法,有括号

my_dog.other_method()

9.2 使用类和实例

属性

必须指定

初始值

(0或空值也可,和变量一个道理):

(1)实例化时传递实参赋值,__init __()括号里需包含相应形参

(2)在类的内部指定默认值,__init __()括号里无需包含相应形参,直接self.attr=value即可

修改

属性的值:直接访问修改;编写更新属性的方法修改

9.3 继承

子类=父类(超类)+新的属性和方法

,与父类同文件且父类在先

class 父类名():

class 其他类():

class 子类名(父类名):

def __init__(self,形参):

# super()将父类与子类关联起来

super().__init__(形参)

self.新属性=初始值

# 将实例用作属性,便于将大类拆分为多个协同工作的小类

self.other_attri=其他类()

def 新方法(self):

# 重写方法

def 父类同名方法(self):

*类可以模拟实物,建模方法无对错之分,只有效率高低之分

9.4 导入类(存储在模块中,与导入函数类似):

导入

整个模块

(句点表示法调用):

import 模块名 (as 别名)

导入

特定类

(直接调用):

from 模块名 import 类名1(,类名2,……)

导入模块中所有类(

不推荐

):

from 模块名 import *

9.5 Python标准库:一组模块

如:

collections.OrderedDict:记录键-值对添加顺序(使用OrderedDict()调用,而非花括号)

random模块:生成随机数

math数学模块

9.6 类编码风格

类名

:OrderedDict(驼峰命名法)

实例名/模块名

:ordered_dict

函数、类、模块均需

文档字符串

先import

标准库

模块,再空行+

自定义

模块

第10章 文件和异常

10.1 从文件中读取数据(返回字符串)

# 使用任何文件前均需打开

# 使用with可在无需访问后自动关闭文件,比手动open()+close()方便

# open()返回的对象仅在with代码块内可用

# filename=当前目录下的文件名/相对or绝对文件路径(Windows系统需使用r+反斜杠\)

# 当字符串较长或较复杂时,往往先将其存储在一个变量中,再将变量传递给函数

with open(filename) as f:

data = f.read().rstrip() # read()返回包含全部内容的字符串,且末尾有空行

for line in f: # for循环逐行读取

lines = f.readlines() # 逐行读取并存入列表

10.2 写入文件(字符串格式)

# mode包括:r读取,w写入,a附加,r+读写,省略=默认只读

with open(filename, mode) as f:

f.write(data) # 需手动添加换行符\n等设置格式

10.3 异常(一种管理错误的特殊的类)

使用

try-except(-else)代码块

处理

try:

# 可能引发异常的代码

except 异常名:

# 处理异常的代码

# 或直接pass(什么也不做;或充当占位符,留待之后编写)

else:

# try没问题后才能执行的代码

异常

:ZeroDivisionError、FileNotFoundError等等

优点

:使程序免于崩溃,能够继续运行,更健壮;控制与用户分享错误信息的程度

10.4 存储数据(json模块)

JSON

(JavaScript Object Notation),在编程语言间通用

存储

:json.dump(data,f_obj)

读取

:json.load(f_obj)

*

重构

:将代码划分为一系列完成具体工作的函数,简化代码结构,使代码更清晰易懂、易维护扩展

第11章 测试代码(unittest模块)

11.1 测试函数

单元测试

:核实函数某一个方面没问题

测试用例

:一组单元测试,核实函数各种情形下没问题;全覆盖很难,一般针对

重要行为

编写测试即可

import unittest

from 模块名 import 需测试的函数名

class 最好与测试函数相关且包含Test的类名(unittest.TestCase):

# 必须test_开头,方法才将自动调用;长没事,描述清楚即可

def test_测试内容(self):

a = 需测试的函数()

# 断言方法之一

self.assertEqual(实际值a,期望值b)

# 运行测试

unittest.main()

输出结果

(1)句点/E/F=通过一个测试/测试引发错误/测试导致断言失败

(2)OK(FAILED)=(未)通过所有测试

11.2 测试类

测试类与测试函数类似,测试的是类中方法的行为

6种断言方法

assertEqual(a,b)、assertNotEqual(a,b)

assertTrue(x)、assertFalse(x)

assertIn(item,list)、assertNotIn(item,list)

测试类需要在每个测试方法中创建实例;使用setUp()可只创建一次,并在所有方法中使用;Python先运行setUp(),再运行test_打头方法

def setUp(self):

# 可一次性创建一系列实例并设置属性

self.实例名=类()

self.属性名=value

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值