Think Python 2ed 笔记(二)

Think Python 2ed 中文版网址

第六章  有返回值的函数

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]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容