《笨办法学Python》 第25课手记

《笨办法学Python》 第25课手记

本节课内容较多,如果不理解可以先尝试做正确,然后再来理解。我们的学习已经由最初的简单向复杂转变了,希望你能咬牙坚持下来,只要能没有遗漏的学到最后,相信我们都能掌握好Python。同时通过这么长时间的学习,我理解了很多人喜欢Python的原因。因为相较与C家族,Python真的有一种简洁的美感,而且易懂。

原代码如下:

def break_words(stuff):
   """This function break up words for us."""
   words = stuff.split(' ')
   return words

def sort_words(words):
   """sorts the words."""
   return sorted(words)

def print_first_word(words):
   """prints the first word after popping it off."""
   word = words.pop(0)
   print word

def print_last_word(words):
   """Prints the last word after popping it off."""
   word = words.pop(-1)
   print word

def sort_sentence(sentence):
   """Takes in a full sentence and returns the sorted words."""
   words = break_words(sentence)
   return sort_words(words)

def print_first_and_last(sentence):
   """Prints the first and last words of the sentence."""
   words = break_words(sentence)
   print_first_word(words)
   print_last_word(words)

def print_first_and_last_sorted(sentence):
   """Sorted the words then prints the first and last one."""
   words = sort_sentence(sentence)
   print_first_word(words)
   print_last_word(words)

这段代码定义了7个函数,里面用”“”括起来的英文解释了每个函数的功能。

而且在命令行界面输入help(函数名)可以调出”“”里面的内容,因此可以看做是帮助文档。由此可以窥见预定义函数可能也是以该种形式定义的。

这段代码涉及的新的用法:

def sort_sentence(sentence):
   """Takes in a full sentence and returns the sorted words."""
   words = break_words(sentence)
   return sort_words(words)

在一个函数的定义中调用了另一个函数,注意调用的函数必须是先前定义的,即遵循先定义再调用的顺序。这里不同于C语言可以先写一个函数声明,然后可以将函数定义写到后面的做法。

这里的7个函数实际上组成了一个模组,这和我们过去使用sys模组类似,但sys是预先就定义好的,ex25这个模组,是我们自己手动定义的。是不是感觉很棒呢!你现在已经可以自己定义模组了呢!

结果如下:

(>>>是你手动输入的内容,其他的是解释器输出的内容)

在这里面有两处与书中给出的结果不一样的地方:

1.

这是因为我将words打成了wrods而引起的错误,如果你是对的,则不会出现图片中的内容。

2.

这里的^D是在键盘上按下Ctrl+D的意思,但这里出错是因为Windows Power Shell环境下退出是Ctrl+Z,所以^Z才是正确用法。当出现PS C:\Users\你电脑的用户名时,说明当前处于无任何操作状态,在这里表示成功退出。

以该种方式运行之后,ex25.py所在文件夹会自动生成一个叫ex25.pyc的文件

本节课涉及的知识:

1.stuff.split(’ ‘),以空格为标志分割字符串,默认全部分割,可以在括号里”后面指定参数以使解释器按规定次数分割。

比如stuff.split(”,1)只分割一次,分割结果是’All’和’good things come to those who wait.’

2.sorted(words),以字母表顺序为依据将words变量所包含的字符串中的英文单词进行排序,英文句号在该过程中将被舍弃。

3.word = words.pop(0),弹出一个元素后关闭,括号内的参数表示弹出元素的位置。0代表第一个,-1代表最后一个。暂不清楚单位是不是之前类似的字节,之前碰到位置参数时,数字代表的是第几个字节数。请记住这种用法,也记住这个疑问。稍后再碰到一些具体的例子就能理解了。

4.用法:先排序,在输出第一个或者最后一个,是求最值的常用方法,SQL语言中可以先将SC表中的Grade降序排序,然后输出第一个求最高分。也请记住这种用法。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Redis源码学习系列

Redis源码学习之字典

在字典结构体中,包含了一组字典函数(dictType),通过封装的方法处理对应的操作,通常在字典初始化的时候对其进行配置。

37510
来自专栏蓝天

sed 学习笔记(转)

声明:这些代码只是为了学习和理解sed命令而为之,并不代表问题的唯一解或最佳解,希望各位拍砖

8720
来自专栏小白的技术客栈

Python基础语法-流程控制

今天讲解Python的流程控制,流程控制也比较简单,小白不想整的很复杂,以免让大家看了有一种望“文”生怯的想法。 程序控制结构 通常的程序设计语言有三种控制结构...

31760
来自专栏Coding01

链式编程

链式编程或者链式写法,是将多个方法 (函数) 通过点号 (.) 或者 (->)等符号链接在一起成为一句代码,这样不仅可以增强代码的可读性,而且每次链接,都是对对...

11430
来自专栏对角另一面

lodash源码分析之数组的差集

本文为读 lodash 源码的第十七篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash

14140
来自专栏灯塔大数据

每周学点大数据 | No.23 外排序(二)

No.23期 外排序(二) Mr. 王:接下来我们用一个例子对磁盘归并排序进行说明。先来约定讨论的参数:N=24,M=8,B=2。 小可:嗯,一共有2...

36660
来自专栏SDNLAB

Open vSwitch系列之数据结构解析深入分析ofpbuf

上一篇我们分析了hmap,hamp可以说是Open vSwitch中基石结构,很多Open vSwitch中数据结构都依赖hmap。本篇我们来分析一下ofpbu...

39280
来自专栏闻道于事

Java异常处理中的恢复模型

30240
来自专栏夏时

PHP 常用函数大全

65720
来自专栏数说戏聊

04.字段抽取/拆分&记录抽取1.字段抽取2.字段拆分3.记录抽取

9920

扫码关注云+社区

领取腾讯云代金券