前言
Howdy,又好久没有更新了,这段时间一边在适应着新的工作,也赶上过年,在家里的空余时间也多拿来锻炼了,并不是不想写Blog,反而对我来说写这些东西也能使我感到放松愉快。其实这一段在脑海里构思了很多想写出来的内容,但最终中能落地多少,We will see it. 这一篇聊聊什么呢?没错,还是Python。机缘巧合的浏览到了GeekTime的课程推送,我就抱着试一试的态度,花了几十块钱报了个Geektime上的课《Python核心技术与实战》
Introduction
花了几天的时间,简单上了下来,这门课并不是为了初学者而准备的,但也没有高深到哪里去。对于我来说,既有对旧知识的查缺补漏,也接触到了一些新的知识。 对于有编程背景的同学还是很友好的,内容肯定不能copy&paste了,还是老规矩,写一点summary吧
《Python核心技术与实践》
我的天,这篇文章从二月底开始创建,但现在4/17号才有重新提起笔来(其实是敲键盘啦)总之拖欠了很久,这样很不好!
1. List and Tuple
特点:
- 支持索引与切片[-1]/[1:3]
- 支持嵌套
- 列表的数据类型可以不一致
Tuple:静态(immutable)
List: 非静态(mutable)— 数值可变2. Set and Dict
特点 - 集合不支持索引操作,其本质是哈希表
- 字典储存了(哈希值,key,value)
- 集合没有key和value的配对
- 字典和集合有性能时间复杂度的优势
3. 条件与循环
遍临列表元素与索引1
2
3
4list=[0,1,2,3,4]
for index, item in enumerate(list):
if index >=0
print(item)4. 匿名函数
- lambda
- map
1
2
3my_list=(1,3,5,7,9)
new_list=map(lambda x:x+1, my_list)
print(new_list) - filter
字典值的升序1
2dict={'b': 1, 'a': 2, 'c': 10}
print(sorted(d.items(),key=lambda x:x[1]))5. OOP
面向对象在之前的文章里也提到过很多了,例如抽象,封装,继承,和多态。这里只写一些新的points - 在继承中,子集的构造函数需要显示父集已经构造的函数
- 在子集中可以重新定义父类中已经构造的函数
- self.context = context #开头的属性是私有属性
- 多重继承
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26class A():
def __init__(self):
print('enter A')
print('leave A')
class B(A):
def __init__(self):
print('enter B')
super().__init__()
print('leave B')
class C(A):
def __init__(self):
print('enter C')
super().__init__()
print('leave C')
class D(B, C):
def __init__(self):
print('enter D')
super(D,self).__init__() #既继承B也继承C
print("*****")
C.__init__(self) #只继承function C
print('leave D')
D()6. 异常操作
- 文件流操作
- 数据库连接
其他
- Python 中不需要指定函数参数的输入类型