美文网首页人生苦短,我用Python
年薪40W大佬Python学习笔记-《think Python》

年薪40W大佬Python学习笔记-《think Python》

作者: 宇哥聊AI | 来源:发表于2018-10-12 17:59 被阅读25次

    引言

    之前使用过python进行编程,但是没有系统的学习过python的语法及其特性,计划从think Python这本书开始学习。本次笔记包含第一章到第十一章的内容,因为这些内容是之前看过的,也是比较基础的内容,所以只写一些我觉得需要记忆或是比较特别的地方。

    C1. 编程的方式

    说实话没什么好说的,都是对编程入门者的知识科普吧

    写一些需要记的python代码规范好了

    缩进统一使用4个空格来代替tab,我用的是sublime编辑器,在sublime的设置文件添加即可

    "tab_size": 4,

    "translate_tabs_to_spaces": true,

    每行代码长度最多120个字符,建议最多80

    有关空格:

    二元运算符前后加空格

    参数列表的 " , " 后要加空格

    左括号右和右括号左不加空格

    C2. 变量、表达式和语句

    python中 ** 是 指数运算, ^ 是位的异或运算

    C4. 接口设计

    这一章叫做接口设计,其实就是对代码进行封装时函数及其参数的设计,如何设计出适合的函数。

    本书给出了一种方法:

    先实现相对具体的函数,书中的例子是画正方形square函数

    def square(t):

        for i in range(4):

            fd(t, 100)

            lt(t)

    再增加参数,增强泛化能力,书中进行了两步泛化

    def square(t, length):

        for i in range(4):

            fd(t, length)

            lt(t)

    def polygon(t, n, length):

        angle = 360.0 / n

        for i in range(n):

            fd(t, length)

            lt(t, angle)

    当有新的需求出现时,考虑是否需要封装新的函数进行重构

    书中出现了画圆弧的需求,发现有代码重复,提取出polyline函数

    def polyline(t, n, length, angle):

    for i in range(n):

    fd(t, length)

    lt(t, angle

    用polyline函数重构polygon函数

    def polygon(t, n, length):

    angle = 360.0 / n

    polyline(t, n, length, angle)

    下面是一些概念的定义和理解:

    如果需要Python方面的入门知识可以点击这个链接获取入门资料

    封装:将代码打包到一个函数中

    泛化:给函数增加一个变量,增强函数的泛化能力

    重构:将A函数中的完成相对独立功能或复用较多的代码段封装成函数B后,用新生成的函数B重新实现A

    C5. 条件语句和递归

    文中给出了我之前写递归程序时总结的一种方法的较为正式的叫法:信心的飞跃。意思是当你编写递归函数时,用递归函数的时候要确信这个函数时可用的,否则总会忍不住进去查看函数的逻辑,从而自己陷入递归之中。

    C8. 字符串

    文中有一个python的切片的理解感觉挺有意思的,贴上来:

    fruit[1:4] 就是index中1到4之间的字符串ana

    还有一点,字符串是不可变的,fruit[3] = ‘d’ 是不允许的

    字符串和list的互相转化

    >>> list('abc')

    ['a', 'b', 'c']

    >>> ''.join(t)

    'abc'

    >>> 'abc'.split()

    ['abc']

    >>> str(['a','b','c'])

    ['a','b','c']

    C9. 字符串处理

    常用的一个字符串处理方法strip( )

    str.strip([chars])

    strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。chars是字符序列,从开头向后以及结尾向前,去除存在于chars中的字符,直到第一个不在chars中的字符为止。

    C10. 列表

    常用列表操作:

    生成一个新的空列表

    t = []

    列表添加新元素到队尾

    append是将list1作为list的一个元素加进去,extend是将list1的所有元素加到list中。

    list.append(list1)

    list.extend(list1)

    删除列表元素

    list.pop(index)

    del list[index]

    list.remove(value)

    列表需要注意的地方

    列表是按引用传递:作为参数传递给函数的列表若在函数中被改变,调用者会看到改变

    需要区分调用list内置函数时改变了list的对象;

    调用运算符和切片时没有改变原来的list对象,而是生成返回了新的list对象,需要赋值操作符来获取这个新的list对象。

    C11. 字典

    常用字典操作

    d = dict()  # 生成空字典

    bool_value1 = (x in d)  # 检查x是否在d的键值列表中

    booL_value2 = (x in d.values())  # 检查x是否在d的值列表中

    d = {'a':1, 'b':3}

    d.get('b', 0)  # 3 get提供一个没有对应键时的缺省值

    d.get('c', 0)  # 0

    文中提到要在函数中给全局变量重新赋值,需要有global关键字的声明

    如果全局变量是可变的,修改全局变量时不需要声明

    相关文章

      网友评论

        本文标题:年薪40W大佬Python学习笔记-《think Python》

        本文链接:https://www.haomeiwen.com/subject/vbbgaftx.html