zoukankan      html  css  js  c++  java
  • python3新特点

    #xiaodeng
    #python 3
    
    
    #1、编码方式和性能
    '''
    1、py3运行效率更快
    2、默认源文件编码ASCII变为UTF-8,以前文件前加入的coding=utf-8不再需要
    3、针对unicode的处理有了明显的改善,效率明显提升
    '''
    
    
    #2、数据类型和基本运算
    '''
    1、int和long进行了统一,统一为int
    2、True、False、None都是关键词
    3、必须以b'...'表示二进制数据,可以使用u'..'表示字符串,不加u也表示字符串
    4、移除<>不等号,使用“!=”表示不等号关系
        1)2!=3
        2)2<>3 #出现语法错误
    5、调整除法符号‘/’的用法,只返回浮点数,要返回整数要使用“//”
    6、py3运算对数据的类型要求更加的严格
    '''
    
    def foo(test=None):
        if test is None:
            print (test)
    foo()
    
    
    print (5/2)   #浮点数
    print (5//2)   #整数
    print (1/3)
    
    #4、print和exec用法
    '''
    1、print是一个函数,不再是一个语句,其中不需要用空格,后面打印的内容需要有括号括起来
    2、exec函数用法发生变化
    '''
    
    def foo():
        _local=locals()
        exec('a=4',globals(),_local)
        a=_local['a']
        print(a)
    foo()
    
    #5、input、bin、oct和for循环
    '''
    1、raw_input统一为input
        在py2中用法为:
        1)a=raw_input('请输入:')
           print a
        2)a=input('请输入:')  #接收一个有效的表达式,如:2+3,而不能单独接收3
           print a
    2、for循环的变量不再泄露在全局变量中,此bug已修复
        1)Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
        Type "copyright", "credits" or "license()" for more information.
        >>> i=8
        >>> print [i for i in range(5)]
        [0, 1, 2, 3, 4]
        >>> print i
        4   #按照道理来讲for循环中的i与最外面的i=8的i是不同的,但是这里。。。。。
        >>>
    
        2)
        i=6
        print([i for i in range(5)])#结果为[0, 1, 2, 3, 4]
        print(i)#结果i=6
    '''
    #6、a=input('请输入:')#这里不再需要一个有效的表达式,他的用法和raw_input相同
    #print(a)
    
    
    #7、range和dict的变化
    '''
    1、在python2中,range火xrange会创建一个列表。常出现在for循环、字典、列表中,但是py3中xrange改名为range,在python3中使用
    使用xrange会触发错误。同时range返回的是可迭代对象而不再是列表形式,要想使range的结果得到一个list数据必须要使用list(range(5))
    2、字典内的dict.iterkeys(),dict.itervalues(),dict.iteritems()被keys() and values() and items()所替代
    他们的返回结果类似于集的可迭代对象,而不是键值对的列表。从而在不进行键和值条目复制的情况下就能对其执行set操作
    
    '''
    
    a=range(6)
    print(a)#result:range(0,6)对象,不是列表
    print(list(a))#result:[0, 1, 2, 3, 4, 5]
    for i in range(6):
        print(i)
    
    #print(xrange(5))   #报错:提示为name"xrange" is'not defined
    
    #dict案例
    d={'name':"iaodeng",'sex':28}
    print(d.items())
    print(type(d.items()))      #<class 'dict_items'>
    #返回结果                   dict_items([('name', 'iaodeng'), ('sex', 28)])
    #这里不再是列表形式
    '''
    Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> d={'name':"iaodeng",'sex':28}
    >>> print d
    {'name': 'iaodeng', 'sex': 28}
    >>> print d.items()
    [('name', 'iaodeng'), ('sex', 28)]
    >>> print d.iteritems()                 #返回一个可迭代对象
    <dictionary-itemiterator object at 0x0275E930>
    >>> for i in d.iteritems():print i
    ('name', 'iaodeng')
    ('sex', 28)
    >>>
    '''
    print('xiaodeng:    d.keys():',d.keys())    #xiaodeng:    d.keys(): dict_keys(['name', 'sex'])
    print(type(d.keys()))#<class 'dict_items'>
    
    #values()同理
    
    
    print("既然是可迭代对象,那么还可以进行下面操作")
    for i  in d.items():
        print(i)
    for key in d.keys():
        print(key)
    print("values用法同理")
    print('用list将可迭代对象转化为list数据')
    print(list(d.values()))
    
    
    #7、python3具有单一的str类型,其类型相当于python2的unicode,python3所有的字符串都是unicode
    #新增bytes类型
    a=b"china"
    print(type(a))  #<class 'bytes'>
    #str和tytes对象都可以使用encode和decode来进行转化
    s=a.decode()
    print(s)        #china 字符串类型
    s=s.encode()
    print(s)        #b"china",   tytes字节类型
    
    
    
    
    #8、输入和输出
    a=open('test.txt','w')
    a.write("write in something")
    a.close()
    b=open("test.txt","r")
    print(b.read())         #note:注意加括号
    """
    1、如果要对文本执行任何I/O操作,python3会强制用户使用文本模式,打开文件,如果不想使用默认编码utf-8
    通常需要指明所需的编码
    2、如果对二进制数据进行I/O操作,必须使用二进制模式打开文件或进行读写操作
        eg:
            f=open("test1.txt","wb+")   #二进制追加模式
            f.write(b"w love fengmei")      #必须加b,以bytes对象的形式进行写入
            f.close()
        file=open(filename,mode)
        mode:
        r:只读模式
        w:只写,如果文件已存在则会进行覆盖操作,所以格外小心,如果文件不存在则创建新的文件
        a:打开文件用于追加,只写如果文件不存在则创建
        b:二进制,不能单独使用
        经过演变会有很多形式
    """
    
    
    #9、迭代器
    """
    1、range在python3中返回颗迭代对象二不是列表,最大限度节约内存
    2、zip(),map(),filter(),key(),value()返回的均是可迭代对象
    """
    
    #10、异常错误处理
    """
    1、必须使用关键词as,try 和except NameError as e语句
    2、案例:
        python 2
        try:
            something
        except NameError,err:
            print err
    
        python3
        try:
            something
        except NameError as err:
            print(err)
    3、raise触发语法用法的变化,python3只接受带括号的
        1)raise IOError,"file error"        #出现语法错误
        2)raise IOError("file error")
    """
    
    #11、面向对象
    """
    1、需要单独深入学习
    """
    
    #12、模块的变动
  • 相关阅读:
    iOS数据持久化—FMDB框架的简单介绍
    iOS数据持久化—SQLite常用的函数
    多段图动态规划dp
    Cucumber测试驱动开发
    敏捷开发XP
    Android 小票打印USB
    TextInputLayout 用法
    Snackbar 提醒
    PermissionDispatcher 运行时权限框架
    Tinker 热修复
  • 原文地址:https://www.cnblogs.com/dengyg200891/p/5347897.html
Copyright © 2011-2022 走看看