Python语言特性

基本语法

python基本语法主要来自C、JAVA、HASKELL等其它语言,但只取最简单有用的部分,基本保持够用就好,  
 舍弃对性能和语言特性的追求。面向对象和C语言扩展接口等,能够让它保持简单好用的基础上,  
 又不失扩展和灵活性。
  1. 变量和表达式


    python逻辑块不像c等语言这样使用一对花括号来区分,而是采用缩进方式来区分,凡是对齐的语句都是平行的逻辑块,这是最大的区别之一。

#!/usr/bin/env python

def showMaxFactor(num):
    #此处缩进,代表新的代码块开始,相对前面的代码块"降"了一个等级
    count = num / 2
    #此处无缩进,与前面对齐,代表是同一个代码逻辑块,这样语法就减少了不必要的括号,方便阅读。
    while count > 1:
        if (num % count == 0): break
        print 'largest factor of %d is %d' % \
        (num, count)
        break
        count = count - 1
    else:
    print eachNum, 'is prime'
 变量和表达式等基本继承自c语言特性,主要区别是python变量无需事先声明,也不需要定义类型,  
 当赋值时候,自然就有了对应的类型。就像上面代码段的num、count等变量,并没有事先定义它,  
 也没有说明它的类型是什么,好处是方便吧,坏处嘛,
 可能缺少信息,容易出错吧?

2. 扩展数据类型


相对其它语言,python主要扩展的几种数据类型对象分别是:复数、列表、元组、字典,
这些类型对象理解起来不困难,选择合适好用的就行。由于都是类型对象,其实也就很容易扩展出来
很多类似的类型对象出来,在其它数据处理模块中,比如numpy、pandas等数据处理库中,
就有许多二维、三维,甚至N维的数据类型,或者叫对象封装吧。

列表解析,来自haskell语法,英文表达是:list comprehensions,是怎么的一个样子呢?
就是一个数学表达式的样子:
squared = [x ** 2 for x in range(4)]
还有个对应的生成器表达式,也是组合配对生成数据,来自于haskell语法。
3. 控制语句差异


 主要应该就是for语句,它更像是一个迭代算法,然后与之相关联的对象,是一个序列对象,  
 除了内置的列表、字符串等序列对象外,我们自己也可以实现相应的序列化类。
 如果要实现一个自己的可迭代对象,就要实现__iter__() 或者 __getitem__()其中一个方法。  
 可迭代对象:对象实现了一个__iter__方法,这个方法负责返回一个迭代器
 迭代器:内部实现了next(python3.x为__next__)方法,真正负责迭代的实现。  
 当迭代器内的元素用尽之后,任何的进一步调用都之后触发 StopIteration 异常,所以迭代器需要一个__iter方  

好像忘记另外一个内置控制算法了:切片!   这个操作在dataFrame里面经常使用它,  
也是所有序列对象类的一个通用操作。类似
`data[1:3]#取序列第1号位置到第3号位置之前的值,其它语法类似`

4. 函数、类、对象


 以函数式编程的观点来说,函数和表达式,以及操作符,都是函数,以OOP观点来说,  
 所有过程和操作都是类或者对象的成员函数,有对象的地方,与它们相结合就能够影响对象。
 而python有许多独立的内建函数,比如cmp().它没指明属于哪个类,  
 或者是否说能够支持比较大小的对象,都能够使用这个函数来处理。类似操作符+号,  
 也是等同这样一个函数。更进一步来说for语句也是这样的个内建函数。
那样就是说,能够被内建函数所处理的对象,必需要实现对应的特殊成员函数或者特殊成员变量才行,  
反正是特定的关联,与此种函数关联起来。

5. 异常处理


与其它语言无差别
6. 函数式编程


相比C语言的过程式函数,python函数有了一定的扩展,可以作为参数传递,也可以有柯里化过程,还可以有
函数式类似的map等过程操作。相对有个比较特别的函数是:生成器
生成器函数被调用时候能够保存之前调用的状态,下次调用时候能够继续之前的调用进行。应该有它的用处。
哈。。。关键字是yield
7. 面向对象编程对比


与其它面向对象编程语言无明显区别,概念都差不多,只是语法表现形式不太一样。比如私有成员是用下划线
静态成员函数是用函数装饰器来声明的。比较奇怪吧?不过没事,概念完整统一就行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值