由于公司的服务器端用的是Python,所以决定抽点时间熟悉一下,也好在以后的工作中能和其他同事有比较好的配合。

我主要是把Python和其他语言(特别是Javascript和c#,因为我熟悉)一些不一样的特性列出来。

首先说一下对Python的大体印象,Python和Javascript一样是解释性的语言,也是弱类型的语言。同时也是面向对象的一种语言,一切皆是对象:甚至字符串,变量,函数,都是对象。Python的设计也非常酷,用起来很灵活,习惯使用Javascript的人,一定会爱上Python 

  1. 没有大括号,靠缩进来控制代码块的开始与结束。语句结束不用分号,但一行中有多个语句,用分号隔开。
  2. // 运算符和 ** 运算符
    //特殊的除法运算(千万别以为是注释代码的,Python的代码注释用#),运算符对整型和浮点型都会取整。如:2.0//3.0=0   **是就幂,如:2**3 表示2的3次方。
  3. 不等号有两种写法 != 和<>
  4. 逻辑操作符的关键字是 and or not
  5. 三引号(三个连续的单引号或者双引号)中的特殊字符自动转义
  6. Python中没有数组,只有列表,但其特性跟js中的数组一样,也就是长度可变的数组。
  7. 列表可以用引号(:)来获取元素
    如:a = [0,1,2,3]   a[1:4] =[1,2,3]   a[:3]=[0,1,2]   a[1:] = [1,2,3]
  8. for 循环就相当于c#中的foreach ,有一个range函数来提供索引.
    #遍历数组
    a = [1,2,3]
    for(item in a):
        print item
    #另外一个例子
    for eachNum in range(3)
        print eachNum
    这里 range(obj1,obj2)为内建函数。obj1不提供默认为0,obj2不提供默认为1,返回一个从obj1到obj2的数组
  9. 可以多元赋值
    x,y= 1,2  等价于  x=1 y=2      x,y = y,x   交换x和y的值(很好很强大,哈哈)
  10. 布尔值为False的对象有
    None(相当于js中的null),False,所有值为0的数,空字符串''(注:'0'为True),空元组(),空列表[],空字典{}
  11. 多个比较操作符可以在同一行中进行
    3<4<5  等同于(3<4 and 4<5)
  12. 用 is 来判断两个变量是否指向同一个对象。
    a is b 等同于id(a) is id(b)      id()是获取对象的内存编号。但是要注意的是 Python为了提高性能会对整型和字符串类型进行缓存。但对浮点型不会。
    例如 a =2 ;b = 2; a is b  返回True,a=2.0;b=2.0 a is b 返回False
  13. 逻辑操作符的优先级 not 高于 and  高于 or
  14. 几个标准内建函数
    type(obj) 获取obj的类型,类似Javascript中的type of
    str(obj) 将obj 转换为 字符串类型
    repr(obj)是奖obj 序列化,转换为字符串,但是可以通过eval()还原,所以obj == eval(repr(obj))
  15. 与Javascript一样,Python 不支持方法和函数的重载(弱类型语言的特点)
  16. 字符串和列表、元组统称为序列,可以进行 in 、not in、+、*操作
    obj in seq  判断obj 元素是否包含在seq中,在返回True,不在返回False
    + 操作符可以把两个序列连接起来。  [1,2,3] +[4,5,6] == [1,2,3,4,5,6]
    * 操作符把一个序列拷贝多分。  [1,2]* 2 == [1,2,1,2]
  17. 列表的下标可以是负数,负数标识从结束点往左找。
    [1,2,3][-2]==2

今天先到这里,未完待续

12/29 更正:感谢butterinsect ,我确实没有弄清楚,python是强类型的语言,确切的说是,python是隐式类型的强类型语言。也就是说,在声明变量的时候,不需要显式说明它的类型,但是在Python里,是有明确的类型的概念,而且不同类型的对象不能相互替代和操作,比如:

>>> 10 + '20'

会出现错误 TypeError: unsupported operand type(s) for +: 'int' and 'str'