当前位置 主页 > 网站技术 > 代码类 >

    Python基本语法之运算符功能与用法详解

    栏目:代码类 时间:2019-10-22 12:07

    本文实例讲述了Python基本语法之运算符功能与用法。分享给大家供大家参考,具体如下:

    前言

    在前面的博文介绍了Python的数据结构之后,接下来结合Python操作符来对Python程序中的数据进行处理。操作符/运算符的使用,可简洁地表示内建类型的对象处理。主要是对程序中的数据进行逻辑操作、算术操作、比较操作等动作行为,本质是将在程序中会非常常用的程序操作封装成成类或函数后,再以字符的形式调用,使执行程序语言更加简洁和符合国际化。

    软件环境

    操作系统 UbuntuKylin 14.04 软件 Python 2.7.6 IPython 4.0.0

    身份运算符

    身份运算符用来判断两个变量的引用对象是否指向同一个内存对象,即id(varibale1) ?= id(variable2)。
    is:判断两个标识符是不是引用自一个对象
    is not:判断两个标识符是不是引用自不同对象
    需要注意的是: is 和 == 的意义并不相同。

    In [11]: [] == []
    Out[11]: True
    In [12]: [] is []
    Out[12]: False
    
    

    概括性而言,is 是判断两个变量是否引用同一个对象,而 == 则是判断两个变量引用的对象的值是否一致。要很好的理解两者间的区别需要从Python对象的三要素说起。

    Python对象的三要素:id、type、value

    id:是对象的唯一标识,是对象在内存中的存储地址。 type:是对象的数据类型 value:是对象的值,是对象在内存中存放的数据。

    其中is的判断依据是对象的id,== 的判断依据是对象value,例如:

    In [25]: name1 = {'fan':'jmilk'}
    In [26]: name2 = name1.copy()
    In [27]: name1 == name2
    Out[27]: True
    In [28]: name1 is name2
    Out[28]: False
    In [29]: id(name1),id(name2)
    Out[29]: (140197805793640, 140197805796720)
    
    

    上述例子,name2是name1调用copy( )函数后返回的一个新的对象,所以两者的id( )不相等,而两个变量在内存和中的vale却是相等的。

    算术运算符

    Operator Description
    +\- 加\减,其中'+'可以重载为连接符,连接两个字符或字符串
    *\** 乘\求平,其中*可以重载为重复
    /\%\// 除\求余\取整除,其中%可以重载为格式化,取整除返回商的整数部分

    **注:**Python除法需要注意的方面(Python 2.x版本,3.x版本不存在此问题)

    1.Python中int型的数值相除,只能得到int型不会返回小数。若返回值需要精确到小数时,有两种方法。

    方法一:除数或被除数需要有一者为float型数值。

    In [75]: float(1)/2
    Out[75]: 0.5
    
    

    方法二:import未来支持的语言特征division(精确除法)

    Python的'/'除法默认使用截断除(Truncating Division),导入division模块后,Python才会默认使用精确除法。当导入了精确除后,若想再使用截断除,可以使用取整除'//',同时也被成为地板除。

    In [92]: %%file testFloat.py
    from __future__ import division
    a = 1
    b = 2
    print a/b
      ....: print a//b
      ....:
    Overwriting testFloat.py
    In [93]: run testFloat.py
    0.5
    0
    
    

    随便介绍两个内建函数round(number[, ndigits])、divmod(x, y)