廖雪峰python摘录3
1、if
判断条件还可以简写x。只要x
是非零数值、非空字符串、非空list等,就判断为True
,否则为False
。
2、这是因为input()
返回的数据类型是str
,str
不能直接和整数比较,必须先把str
转换成整数。Python提供了int()
函数来完成这件事情:
s = input('birth: ') birth = int(s) if birth < 2000: print('00前') else: print('00后')
或者 s>'2000' 也可以,需要类型一致才能比较。
要是int()
函数发现一个字符串并不是合法的数字时就会报错,程序就退出了。
4、Python的循环有两种,一种是for...in循环,依次把list或tuple中的每个元素迭代出来。所以for x in ...
循环就是把每个元素代入变量x
,然后执行缩进块的语句。
5、Python提供一个range()
函数,可以生成一个整数序列,再通过list()
函数可以转换为list。比如range(5)
生成的序列是从0开始小于5的整数
6、二种循环是while循环,只要条件满足,就不断循环,条件不满足时退出循环。比如我们要计算100以内所有奇数之和,可以用while循环。continue 继续循环。continue
的作用是提前结束本轮循环,并直接开始下一轮循环。不要滥用break
和continue
语句。break
和continue
会造成代码执行逻辑分叉过多,容易出错。大多数循环并不需要用到break
和continue
语句。
7、Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。
注意要用冒号! d={“Mike”:100,"Jack"::97}
8、要删除一个key,用pop(key)
方法,对应的value也会从dict中删除
9、
和list比较,dict有以下几个特点:
- 查找和插入的速度极快,不会随着key的增加而变慢;
- 需要占用大量的内存,内存浪费多。
而list相反:
- 查找和插入的时间随着元素的增加而增加;
- 占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法。v
10、在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key
11、set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作。&交 | 并
12、所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容。相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。
13、一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面)
也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上。
14、 定义默认参数要牢记一点:默认参数必须指向不变对象!我们在编写程序时,如果可以设计一个不变对象,那就尽量设计成不变对象。
15、定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*
号。在函数内部,参数numbers
接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数。
16、*nums
表示把nums
这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。
>>> nums = [1, 2, 3]
>>> calc(*nums)
14
17、可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。 它可以扩展函数的功能。
18、在Python中定义函数,可以用必选参数、默认参数、可变参数(*a:1,2,3,'a','b','c',限制列表格式)、关键字参数(**a;city='a',b='c',限制字典格式)和命名关键字参数(*,a:a='c'限制a),这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
19、如果一个函数在内部调用自身本身,这个函数就是递归函数。
20、Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。
21、
在Python中,代码不是越多越好,而是越少越好。代码不是越复杂越好,而是越简单越好。
基于这一思想,我们来介绍Python中非常有用的高级特性,1行代码能实现的功能,决不写5行代码。请始终牢记,代码越少,开发效率越高。
22、字符串'xxx'
也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串。
23、认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values()
,如果要同时迭代key和value,可以用for k, v in d.items()
。
(输出什么看.values() .items(),和for之后的无关)
24、由于字符串也是可迭代对象,因此,也可以作用于for
循环。任何可迭代对象都可以作用于for
循环,包括我们自定义的数据类型,只要符合迭代条件,就可以使用for
循环。