zoukankan      html  css  js  c++  java
  • 转: Python 运算符与用法

    +加两个对象相加

    3 + 5得到8。'a' + 'b'得到'ab'。

    (注意:6+'a'这样是错误的,但在PHP里这样是可以运行的)

    -减得到负数或是一个数减去另一个数
    -5.2得到一个负数。50 - 24得到26。
     
    *乘两个数相乘或是返回一个被重复若干次的字符串

    2 * 3得到6。'la' * 3得到'lalala'(但PHP里这样运算返值为0)。

    在PHP中要实现相同功能,有函数:

    str_repeat(),str_pad()

    **幂

    返回x的y次幂

    3 ** 4得到81(即3 * 3 * 3 * 3)
     
    /除x除以y
     
    4/3得到1(整数的除法得到整数结果)。
    4.0/3或4/3.0得到1.3333333(这里要特别注意,如2/4 得到是0而不是0.5,所以可以这样做float(2)/4得到正常的0.5,
    而在PHP中却不存在这情况)
     
    //取整除返回商的整数部分
    4 // 3.0得到1.0
     
    %取模返回除法的余数

    8%3得到2。-25.5%2.25得到1.5

    (在PHP中:-8%3 = -2  与 8%-3 = 2 )

    <<左移
    把一个数的比特向左移一定数目(每个数在内存中都表示为比特或二进制数字,即0和1)2 << 2得到8。——2按比特表示为10
     
    >>右移
    把一个数的比特向右移一定数目11 >> 1得到5。——11按比特表示为1011,向右移动1比特后得到101,即十进制的5。
     
    &按位与
    数的按位与5 & 3得到1。
     
    |按位或
    数的按位或5 | 3得到7。
     
    ^按位异或
    数的按位异或5 ^ 3得到6
     
    ~按位翻转
    x的按位翻转是-(x+1)~5得到6。
     
    <小于
    返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。5 < 3返回0(即False)而3 < 5返回1(即True)。比较可以被任意连接:3 < 5 < 7返回True。
     
    >大于返回
    x是否大于y5 > 3返回True。如果两个操作数都是数字,它们首先被转换为一个共同的类型。否则,它总是返回False。
     
    <=小于等于
    返回x是否小于等于yx = 3; y = 6; x <= y返回True。
     
    >=大于等于
    返回x是否大于等于yx = 4; y = 3; x >= y返回True。
     
    ==等于
    比较对象是否相等x = 2; y = 2; x == y返回True。x = 'str'; y = 'stR'; x == y返回False。x = 'str'; y = 'str'; x == y返回True。
     
    !=不等于
    比较两个对象是否不相等x = 2; y = 3; x != y返回True。not布尔“非”如果x为True,返回False。如果x为False,它返回True。x = True; not y返回False。and布尔“与”如果x为False,x and y返回False,否则它返回y的计算值。

    x = False; y = True; x and y,由于x是False,返回False。在这里,Python不会计算y,因为它知道这个表达式的值肯定是False(因为x是False)。这个现象称为短路计算

    or布尔“或”
    如果x是True,它返回True,否则它返回y的计算值。

    x = True; y = False; x or y返回True。短路计算在这里也适用。

    fc_lamp提醒你:1  Python的逻辑运算符里没有“!(非),&&(与),||(或)” 这三个表示符号(完全是英文上的表示)。

                              即 not,and,or

                             2  Python中的变量赋值操作不是一种存储操作。比如:a=5,这里仅是将创建并包含值5的新对象,用名称a来引用了而已。

     

    再看关于Bool值

    #coding:utf-8
    #True、任意非零数字、非空字符串、列表、元组或者字典都返回True
    #False、零、None、和空的列表、元组和字典都返回False
    #另外 is 运算符用于比较两个对象身份,type()函数则返回一个对象的类型,如list,dict,file,int
    #1和0的问题:我们知道python的数字类型有:bool,int,long,float,complex(复数)
    #而bool中的true和false就是分别映射了1和0,所以作值判断时:xx=1 if xx==True 是成立的。
    s = 'asdfs'
    if s:
        print(s)
    else:
        print('not true')
    #输出 asdfs
    
    s = {}
    if s:
        print(s)
    else:
        print('not true')
    #输出not true
    
    s = 0
    if s==False:
        print(s)
    else:
        print('not true')
    #输出0
    
    s =1
    if s==True:
        print(s)
    else:
        print('not true')
    #输出 1
        
    if type(s) is bool: #严格意义上 数字类型中的bool型
        print(s)
    else:
        print('not true')
    #输出not true

    以上可看出
    1 在python中空的列表 ([]),tuple(()),字典({}),字符串(''),零(0),还有None对象,在逻辑判断中都为假,其他的情况都为真。()

    对比PHP

    <?php
    class test
    {    
    }
    $a = new test();
    if($a){
        echo 'new test() bool true<br/>';
    }
    $a = array();
    if($a){
        echo 'array() bool true<br/>';
    }
    $a = null;
    if($a){
        echo 'null bool true<br/>';
    }
    $a=false;
    if($a){
        echo 'false bool true<br/>';
    }
    $a=0;
    if($a){
        echo '0 bool true<br/>';
    }
    $a='';
    if($a)
    {
        echo "'' bool true<br/>";
    }
    $a='0';
    if($a){
        echo "'0' bool true<br/>";
    }
    $a=0.0;
    if($a){
        echo "0.0 bool true<br/>";
    }
    
    $a='0.0';
    if($a){
        echo "'0.0' bool true<br/>";
    }

    结果:

    new test() bool true
    '0.0' bool true

    从上可看出在PHP中: 

    布尔值 FALSE 本身、

    整型值 0(零)、

    浮点型值 0.0(零)、

    空字符串,以及字符串 "0"、

    不包括任何元素的数组、

    不包括任何成员变量的对象(仅 PHP 4.0 适用,从例子中可看出空对象不再是FALSE)、

    特殊类型 NULL(包括尚未赋值的变量)、

    从没有任何标记(tags)的 XML 文档生成的 SimpleXML 对象

    值都是 FALSE

    2 is 运算符是比较对象地址,也就是说是否是同一对象。
    3 == 运算符比较两对象是否相等,但它们不一定引用的是同一对象。

     

    另外单独说说python的字符串运算符

      了解PHP的人知道,在PHP里字符串的连接运算符为(“.”),它返回其左右参数连接后的字符串。如:

    <?php
    
    $a = 55;
    
    $str = 'abc';
    
    $str .= 'def';
    
    $str .= $a; //在运算时,PHP自动把$a的类型转为了字符串类型
    
    $str = $str.'s99s';
    
    //在PHP里变量与字符串之间连接是通过点运算来实现连接的
    
    echo $str;
    
    但在python里,可能大家已从运算表里找到了,即 (“+”),但是与PHP不同的是两个对象相加,两个对象必须是同类型的,不同类型的两个对象是不能相加的。
    要实现像上面PHP代码里的运算,必须保证两对象类型一致。如:
    print('=============python字符串运算符================')
    
    numa = 3
    
    strs = 'This first'
    
    strs1 = strs,numa #输出值为:('This first',3)
    
    print(strs1)
    
    ######################
    
    #类型对象不匹配,无法正常运算
    
    #strs2 = strs+numa 
    
    #print(strs2)
    
    ######################
    
    strs3 = strs+str(numa) #改变numa的类型,使其成为字符串,或者 strs += str(numa)
    
    print(strs3) #输出为This first3
    
    #另外:如果strs = '6',则可进行:strs3 = int(strs)+numa这样的运算,输出为9
    python里的"列表解析"运算

    >>> l =[2,4,6,8]

    >>> newl =[i+1for i in l]
    >>> newl
    [3,5,7,9]

    #在字典(dict)里使用'列表解析'

    >>> d = {'a':1,'b':3,'f':6}
    >>> newd = dict([(k,v+2)for k,v in d.iteritems()])#先转成元组,再dict成字典
    >>> newd
    {'a':3,'b':5,'f':8}

    #d.items()与d.iteritems()

     

    >>>for i in d.items():
    print i


    ('a',1)
    ('b',3)
    ('f',6)
    >>>for k,v in d.iteritems():
    print k,v

    a 1
    b 3
    f 6


     

    python里的"三元"运算符

    python里没有类似"xx ? xx : xx"这样的三元运算符,可用:

    charset = 'utf8' if 'charset' not in param else param['charset'];

    这种方式来代替。

    参看:http://chroya.iteye.com/blog/726479

    Python的常见的类型转换

    函数                      描述

    int(x [,base ])                #将x转换为一个整数

    long(x [,base ])             #将x转换为一个长整数

    float(x )                         #将x转换到一个浮点数

    complex(real [,imag ])  #创建一个复数

    str(x )                           #将对象 x 转换为字符串

    repr(x )                        #将对象 x 转换为表达式字符串

    eval(str )                      #用来计算在字符串中的有效Python表达式,并返回一个对象

    tuple(s )                       #将序列 s 转换为一个元组

    list(s )                        #将序列 s 转换为一个列表

    chr(x )                         #将一个整数转换为一个字符

    unichr(x )                    #将一个整数转换为Unicode字符

    ord(x )                        #将一个字符转换为它的整数值

    hex(x )                        #将一个整数转换为一个十六进制字符串

    oct(x )                         #将一个整数转换为一个八进制字符串

    编码问题

    需要注意的是,中文在python里的存储方式是以编码后的形态存放的,

    所以要正常呈现中文应格式化形式输出,如:

    print('错误',)  输出:'xb4xedxcexf3'

    print('错误') 输出:错误

     多一个“,”号行为就不一样了。

     上面一个是元组输出,而后面一个是以字符串形式输出。

    更多编码问题参看: 1 《 python 中文编码问题》     2 《Python MySQL 数据库乱码解决方法》

                         

    另注:

    1 dir()函数 :

    你可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。

    当你为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表。

    2 del 
      用于删除一个变量,这类似于PHP里的unset()

    3 python的Bool值:True ,False

       isinstance('test',str)  类型检测函数

     
  • 相关阅读:
    单例模式(singleton)
    Unsupported major.minor version 51.0
    “万能数据库查询分析器”4.03发布,谨以此致我们终将逝去的青春
    和菜鸟一起学linux内核之初始化init篇
    PL/SQL备份oracle数据库
    java.lang.ClassCastException: org.apache.struts.taglib.bean.CookieTei
    DB Query Analyzer 4.03 is upgraded in ZOL
    Android应用程序资源的查找过程分析
    java.lang.IllegalArgumentException: Can't convert argument: null
    Dalvik虚拟机简要介绍和学习计划
  • 原文地址:https://www.cnblogs.com/youxin/p/3559699.html
Copyright © 2011-2022 走看看