之前使用过python进行编程,但是没有系统的学习过python的语法及其特性,计划从think Python这本书开始学习。本次笔记包含第一章到第十一章的内容,因为这些内容是之前看过的,也是比较基础的内容,所以只写一些我觉得需要记忆或是比较特别的地方。
说实话没什么好说的,都是对编程入门者的知识科普吧
写一些需要记的python代码规范好了
"tab_size": 4,
"translate_tabs_to_spaces": true,
python中 ** 是 指数运算, ^ 是位的异或运算
这一章叫做接口设计,其实就是对代码进行封装时函数及其参数的设计,如何设计出适合的函数。
本书给出了一种方法:
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)
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)
下面是一些概念的定义和理解:
封装:将代码打包到一个函数中
泛化:给函数增加一个变量,增强函数的泛化能力
重构:将A函数中的完成相对独立功能或复用较多的代码段封装成函数B后,用新生成的函数B重新实现A
文中给出了我之前写递归程序时总结的一种方法的较为正式的叫法:信心的飞跃。意思是当你编写递归函数时,用递归函数的时候要确信这个函数时可用的,否则总会忍不住进去查看函数的逻辑,从而自己陷入递归之中。
文中有一个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']
常用的一个字符串处理方法strip( )
str.strip([chars])
strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列。chars是字符序列,从开头向后以及结尾向前,去除存在于chars中的字符,直到第一个不在chars中的字符为止。
生成一个新的空列表
t = []
列表添加新元素到队尾
append是将list1作为list的一个元素加进去,extend是将list1的所有元素加到list中。
list.append(list1)
list.extend(list1)
删除列表元素
list.pop(index)
del list[index]
list.remove(value)
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关键字的声明
如果全局变量是可变的,修改全局变量时不需要声明