欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python语言特性

程序员文章站 2022-07-02 21:23:38
...

基本语法

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. 面向对象编程对比


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

相关标签: python语法