《Think Python》第16章学习笔记
2024-10-13 00:52:42
《Think Python》第16章学习笔记
目录
16.1 Time
无
16.2 纯函数(Pure functions)
纯函数不会对传入的参数(实参)做任何修改。
16.3 修改器(Modifiers)
与纯函数相反,修改器将会修改作为参数的对象。
一般而言,只要是合理的情况下,推荐使用纯函数,只有修改器有令人信服的优势时才使用修改器。这样的编程方式可以称为函数式编程风格(functional programming style)。
16.4 原型 vs. 方案(Prototyping versus planning)
无
16.5 调试(Debugging)
某些必须为真的条件,比如某个变量的值必须大于 0,这样的要求称之为不变式(invariants)。
在函数的开头,你应该检查传入的参数(实参)以保证它们是有效的,如果是无效的,可以使用 raise
语句抛出异常:
def valid_time(t):
if t.second < 0 or t.minute < 0 or t.hour < 0:
return False
if t.second >= 60 or t.minute >= 60 or t.hour >= 24:
return False
return True
def add_time(t1, t2):
if not valid_time(t1) or not valid_time(t2):
raise ValueError("Invalid Time object!!!")
seconds = time_to_int(t1) + time_to_int(t2)
return int_to_time(seconds)
或者,也可以使用 assert
语句来检查已知的不变式,如果不变式的值为 False
,则会抛出异常:
def add_time(t1, t2):
assert valid_time(t1) and valid_time(t2)
seconds = time_to_int(t1) + time_to_int(t2)
return int_to_time(seconds)
assert
语句非常有用,因为它区分了处理正常条件的代码和检查错误的代码。
最新文章
- 各种报错各种坑 webpack让我在学习的过程中一度想要放弃
- Debian7.7 wheezy 中源码安装emacs24
- MyEclipse自动提示
- hdu1248
- TCP三次握手中,为什么需要第三次握手?
- rxjava切换线程避免重复代码
- 怎么让 Lua 5.3.4 支持中文变量名和中文函数名
- 2018蓝桥杯 省赛B题(明码)
- unity3d-物理引擎
- TCP/IP协议、HTTP协议
- 宏(define)与常量(const)
- windows下vim中文乱码处理
- 第207天:HTTP协议头字段详解大全
- 【Pollard-rho算法】【DFS】poj2429 GCD &; LCM Inverse
- mysql内存参数整理和条调优以及内存统计
- Spark中RDD的常用操作(Python)
- Linux中Kibana部署
- vi编辑图
- Eloquent ORM模型中添加自定义值
- 【译】理解Spring MVC Model Attribute 和 Session Attribute
热门文章
- [Elixir005] 查看指定数据的详细信息 i helper
- win server 2012 R2 你需要先安装 对应于 KB2919355 的更新
- 学习React前端框架,报错 &#39;render&#39; is not defined no-undef
- linux 配置msyql
- 【题解】 洛谷P2340 奶牛会展
- 201621123023《Java程序设计》第10周学习总结
- 546. Remove Boxes
- Net Manager测试连接测试没有成功,用户权限问题,以管理员身份运行后测试成功
- NOI2019省选模拟赛 第五场
- iOS没你想的那么安全?