关于一门编程语言的学习要点,这仅是个人的一点看法。Python是一门面向对象的编程语言,需要明确哪些知识点呢?个人觉得主要有以下点:
1、基本的变量类型
2、控制流程
3、函数
4、类的定义和使用
5、库的使用(模块化编程的思路,在python里面叫模块,有些编程语言叫做框架)
6、内建数据结构的使用场景
7、自身提供的一些模块和函数
8、异常处理
上述只是集中于语言层面的知识点,在掌握上述内容之后就要明确语言的应用方向如网络编程、web开发和客户端等。之前写了三篇学习笔记,那些都是根据《Python简明教程》写的笔记,本篇文章的目的在于梳理之前所学并有所丰富,使思路更加清晰。以下按照重要程度依次降低的顺序来梳理。
一、基本变量的概念
1、变量的引用
x=123#创建一个int对象123,并增加对它的引用,当前的引用计数为1,x是命名空间指向对象123
下面比较两种情况:
y=x #直接把把变量x值赋值给变量y,并没有新建一个对象,而是把y也指向对象123。
y=x+1#将x引用的对象123进行操作(加运算)产生一个新的对象,然后赋值给变量y,则此时y与x指向不同的对象。
可见赋值表达式=的右面仅是变量名时就是变量命名空间的赋值,除此之外均是变量名参与运算的表达式,这样就会产生的新的对象。
2、增加变量引用的情形
(1)赋值
x=123
y=x
(2)作为函数参数
fun(x)
注意,这就是x的一个引用,因为实质上就是形参=x,可见与第一种场合相同。但是这里与c是不一样的,c里面是内容的拷贝。
(3)作为容器对象的一个成员
mylist=['111',x,'456']
3、减少对象的引用的情形
(1)变量被赋值外另一个对象
y=123
x=y
y=456#123现在就一个引用,因为原来y的引用已经结束了。
(2)函数的调用结束
函数内部变量的引用全部结束,释放内存空间
(3)del
使用del 变量名,会把变量引用结束
二、内建的数据结构
1、序列
序列就是这样一种类型,它的成员是有序排列的,可以通过下标访问一个或者多个成员。序列主要有字符串、列表和元组。针对序列一些专用的操作符。
(1)序列专有操作符
①成员关系操作符in (not in)
用于判断某个成员是否在序列中如
#!/usr/bin/python
list=['dog','cat','boy','girl']
zoo=('1','2','3')
if 'dog' in list:
print 'dog in list'
if 'man'not in list:
print'man not in list'
②切片操作符(索引操作符[],[:])
(1)[]
list=['111','222','333']
x=list[0]
print ['000','111','222'][2]#注意这种方式也是可以的
(2)[:]
[begin:end]#切出序列号从begin到end-1的元素,如果不写begin则是从0开始,如果不写end则是直到最后一个元素。
注意,end不一定非得比
对于s='abcde'
s[:]相当于s[0:5]注意与下面对比
(3)[::]
[begin:end:step]#最后一个参数是步长,如果step为2就是隔一个取数据。
注意,begin+step决定了索引值的变化走向,并且变化走向必须是线性地到达end否则不会执行。
如:
s[4:0:-1]#这是可行的,索引值的变化时线性的,4,3,2,1,0
s[0:3:-1]# 这是无用的,因为索引值的变化为0,-1,-2,不可能到3
另外,我们知道s[:]与s[0:4]是相同的,但是s[::-1]与s[0:5:-1]是不同的,s[::-1]实现了s的反转,结果为edcba,而s[0:5:-1]无意义。
因此,s[::-1]可以作为特例记下来专门用于实现反转,当然反转并非只用这一种实现,如s[-1:-6:-1]也是可以的。
关于序列的索引值必须线性到达end的结论,仅是个人编码实践中总结出来的,因为看到的资料中并没有明确说明他们的规律,如果搞不清楚规律就会弄的很乱,不清楚什么时候可行什么时候不可行。
③重复操作符*
s='123'
b=s*2#
b变为‘123123’
2、字符串
字符串的值是不可改变的,你不可能像针对列表一样,可以随意修改列表的元素,字符串不允许这么做,但是在实际工作中需要修改字符串的内容是很常见的,可以对原有字符串进行切片获得子串然后连接赋值给一个变量。
s='Hello Python'
s=s[:5]+','+s[6:]
s变为
Hello,Python'
阅读(709) | 评论(0) | 转发(0) |