第六章  有返回值的函数

1. 返回值:没有返回值的函数返回None

2. 增量式开发:增量式开发的目标,是通过每次只增加和测试少量代码,来避免长时间的调试。该函数的最终版不会在运行时显示任何东西,仅仅返回一个值。 我们之前写的print语句在调试时是很有用的,不过在函数能够正确运行之后,你就该删了它们。 我们称这样的代码为脚手架代码(scaffolding), 因为它对程序的构建很有用,但不是最终产品的一部分。

当你刚开始的时候,最好每次只加入一两行代码。 随着经验见长,你会发现自己可以编写、调试更大的代码块了。 无论哪种方式,增量式开发都能节省你大量的调试时间。这种开发方式的关键是:

从一个能运行的程序开始,并且每次只增加少量改动。无论你何时遇到错误,都能够清楚定位错误的源头。

用临时变量存储中间值,这样你就能显示并检查它们。

一旦程序正确运行,你要删除一些脚手架代码,或者将多条语句组成复合表达式,但是前提是不会影响程序的可读性。

3. 组合:从一个函数调用另一个函数

4. 布尔函数:布尔函数通常被用于条件语句中

5. 监护人、调试

第七章 迭代

1. while语句:在计算机程序中,重复也被称为**迭代(iteration)**

2. break:有些时候循环执行到一半你才知道循环该结束了。这种情况下,你可以使用break语句 来跳出循环。while循环的这种写法很常见,因为你可以在循环的任何地方判断条件 (而不只是在循环开始),而且你可以积极地表达终止条件(“当出现这个情况是终止”), 而不是消极地表示(“继续运行直到出现这个情况”)。

第八章 字符串

1. 字符串是一个序列:由字符组成的序列

2. len

3. 使用for循环遍历

4. 字符串切片

5. 字符串方法:.upper    .find

6. in 运算符:是一个布尔运算符

第十章 列表

1. 列表是一个序列:[  ],一个列表在另一个列表中,称为**嵌套(nested)列表**,即[…[..]..],嵌套的列表本身还是被看作一个单个元素

2. 列表是可变的:list[0]=333可以索引赋值

3. 遍历列表:for…in list

4. 列表操作:+运算拼接多个列表;*运算以给定次数重复一个列表

5. 列表切片:list[1:2]   list[:]

6. 列表方法:list.append()将元素添加到结尾;list1.extend(list2)将一个列表添加到目标列表中;list.sort()对列表中元素进行排列

7. 映射、筛选和归并:sum(list)求和(称为“归并”)

8. 剔除元素:list.pop(1)将list中索引为1的值从list中剔除,返回值是该剔除值;del list[1:2]直接删除;list.remove(‘b’)在不知道’b’的索引的情况下,将该值从list中剔除。

9. 列表和字符串:list = list(string),list()函数将字符串分割成单独的字符存入列表中;string.split(分隔符)按照分隔符将string变成列表;’分隔符’.join(list)用分隔符将list组成字符串

10. 对象和值、别名、列表参数(!!注意理解!!)

粗心地使用列表(以及其他可变对象)会导致长时间的调试。 下面列举一些常见的陷阱以及避免它们的方法:

大多数的列表方法会对参数进行修改,然后返回None。这和字符串方法相反,后者保留原始的字符串并返回一个新的字符串。

如果你习惯这样写字符串代码:

word=word.strip()

那么你很可能会写出下面的列表代码:

t=t.sort()# 错误!

因为sort返回None,所以你的下一个对t执行的操作很可能会失败。

在使用list方法和操作符之前,你应该仔细阅读文档,然后在交互模式下测试。

选择一种写法,坚持下去。

列表的一个问题就是有太多方法可以做同样的事情。 例如,要删除列表中的一个元素,你可以使用pop、remove、del甚至是切片赋值。

要添加一个元素,你可以使用append方法或者 + 运算符。假设t是一个列表,x是一个列表元素,以下这些写法都是正确的:

t.append(x)t=t+[x]t+=[x]

而这些是错误的:

t.append([x])# 错误!t=t.append(x)# 错误!t+[x]# 错误!t=t+x# 错误!

在交互模式下尝试每一个例子,保证你明白它们做了什么。 注意只有最后一个会导致运行时错误;其他的都是合乎规范的的,但结果却是错的。

通过创建拷贝来避免别名.

如果你要使用类似sort这样的方法来修改参数, 但同时有要保留原列表,你可以创建一个拷贝。

>>>t=[3,1,2]>>>t2=t[:]>>>t2.sort()>>>t[3, 1, 2]>>>t2[1, 2, 3]

在这个例子中,你还可以使用内置函数sorted,它将返回一个新的已排序的列表,原列表将保持不变。

>>>t2=sorted(t)>>>t[3, 1, 2]>>>t2[1, 2, 3]

think python 2ed_Think Python 2ed 笔记(二)相关推荐

  1. (Python入门)学习笔记二,Python学习路线图

    (Python入门)学习笔记二,Python学习路线图 千里之行始于足下,谋定而后动,冰冻三尺非一日之寒.之所以说这三句话,就是对于下面整理的路线图,即不让自己感觉路途的遥远而感到达到巅峰神界的遥遥无 ...

  2. python图像处理《数字图像处理与python实现》读书笔记二:空间滤波

    文章目录 重要! 第三章 空间滤波 概览 3.1 空间滤波基础 3.1.1 空间滤波的机理 3.1.2 空间滤波器模板 3.2 平滑处理 3.2.1 平滑线性空间滤波器 3.2.2 统计排序滤波器 3 ...

  3. 《编程小白的第一本python入门书》笔记 二

     第四章  函数的魔法 4.1 重新认识函数 a. Python 中所谓的使用函数,就是把你要处理的对象放到一个名字后面的括号里. b.官网中对各个函数的介绍:https://docs.python. ...

  4. python安装caffe_Caffe安装笔记二:Caffe安装过程

    下面开始正题,caffe的安装过程.因为出问题很多,所以实际上我是尝试了python2和python3两种python的接口.下面一并放出来. 1.安装build-essential sudo apt ...

  5. Python基础函数学习笔记(二)

    一:格式化打印输出: 一个输出时: area = 20.15 print "The area of the circle is %f sq cm."%area 两个输出时: rab ...

  6. python3.4学习笔记(二十一) python实现指定字符串补全空格、前面填充0的方法

    python3.4学习笔记(二十一) python实现指定字符串补全空格.前面填充0的方法 Python zfill()方法返回指定长度的字符串,原字符串右对齐,前面填充0. zfill()方法语法: ...

  7. 《Python cookbook》笔记二

    <Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...

  8. 无敌python爬虫教程学习笔记(二)

    系列文章目录 无敌python爬虫教程学习笔记(一) 无敌python爬虫教程学习笔记(二) 无敌python爬虫教程学习笔记(三) 无敌python爬虫教程学习笔记(四) 手刃一个小爬虫 系列文章目 ...

  9. GUI的演化和python编程——Python学习笔记之二十二

    GUI的演化和python编程--Python学习笔记之二十二 写完了有关长寿的两篇博文,本该去完成哥德尔那个命题六的.对计算机图形界面的好奇,让我把注意力暂时离开那个高度抽象难读的哥德尔,给转到计算 ...

最新文章

  1. 服务器架设笔记——打通MySQL和Apache
  2. 【ACM】杭电OJ 2027
  3. 《多核与GPU编程:工具、方法及实践》----1.5 并行程序性能的预测与测量
  4. CNN理解比较好的文章
  5. 第十天:SwiftGoodAsOldPhones
  6. 每日一题丨2020.05.27
  7. Python3 configparser值为多行时配置文件书写格式
  8. 孙鑫VC学习笔记:第九讲 界面修改,工具栏,状态栏,启动画面的制作
  9. 用matlab实现女声变男声步骤,男变女声、女变男声、如何实现变声效果?
  10. 10827 - Maximum sum on a torus
  11. 好的商城系统都是这个样子的
  12. Ae效果控件快速参考:抠像
  13. ZJOI2019一轮停课刷题记录
  14. 转移到ios下载安卓_转移到iOS下载_转移到iOS怎么用_转移到iOS安卓版下载_转移到iOS app_易玩网...
  15. 传统渲染与DLSS2.0的对比
  16. 数字图像处理 实验指导书
  17. CEC2017基础函数说明Python版本
  18. 安卓HttpURLConnection 进行http请求(传递数据 获取数据 主线程禁止网络请求)以get方式为例
  19. 让每一天有意义,一生的学习软件推荐
  20. npm安装插件速度太慢怎么办?

热门文章

  1. java用户注册代码解析_java springmvc 注册中央调度器代码解析
  2. java 设计方法_java 中如何处理设计一个方法
  3. java 判断是linux系统_java判断是window系统还是Linux系统,并获取其IP地址及文件上传 | 学步园...
  4. python 绘制功率谱密度图 plt.psd
  5. 私有private成员和保护protected成员的区别
  6. Android数据存储之sharedpreferences与Content Provider
  7. Extract Superclass(提炼超类)
  8. bat脚本如何自动输入y_在Mac如何写一个相对自动的翻译脚本
  9. PID控制器开发笔记之八:带死区的PID控制器的实现
  10. 归档和解档-Archiver