Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104045
  • 博文数量: 30
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 402
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-22 11:09
个人简介

摸着石头过河

文章分类

全部博文(30)

文章存档

2015年(2)

2014年(28)

我的朋友

分类: LINUX

2014-11-24 15:31:12

     关于一门编程语言的学习要点,这仅是个人的一点看法。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'


                   
      
阅读(707) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~