`
jythoner
  • 浏览: 609033 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Python3.0与Python2.X的区别

阅读更多
正在阅读最新版的《A byte of Python》。发现Python3.0在某些地方还是有些改变的。准备慢慢的体会,与老版本的《A byte of Python》做对比,最后再去查阅官方网站的文档。

1.
如果你下载的是最新版的Python,就会发现所有书中的Hello World例子将不再正确。
Old:
print "Hello World!" #打印字符串
New:
print("Hello World!")
将字符串放到括号中print出来,这种写法对于我这种学习Java出身的人来说,很是亲切啊:)

2.
Old:
guess = int(raw_input('Enter an integer : ')) #读取键盘输入的方法
New:
guess = int(input('Enter an integer : '))
方法名变得更加容易记!

3.
加入了一个新的nonlocal statement,非局部变量,它的范围介于global和local之间,主要用于函数嵌套,用法如下:
#!/usr/bin/python
# Filename: func_nonlocal.py

def func_outer():
    x = 2
    print('x is', x)
    def func_inner():
        nonlocal x
        x = 5
    func_inner()
    print('Changed local x to', x)
func_outer()

4.
VarArgs parameters,不知道这个翻译成什么比较妥当?先看例子:
#!/usr/bin/python
# Filename: total.py
def total(initial=5, *numbers, **keywords):
    count = initial
    for number in numbers:
        count += number
    for key in keywords:
        count += keywords[key]
    return count
print(total(10, 1, 2, 3, vegetables=50, fruits=100))

当在参数前面使用*标识的时候,所有的位置参数(1,2,3)作为一个list传递。
当在参数前面使用**标识的时候,所有的关键参数(vegetables=50, fruits=100)作为一个dictionary传递。

5.
关于Packages的话题,我没看懂。。。哪位大虾帮忙讲解下?

6.
在数据结构中,多了一种类型:set
Set是一种无序的简单对象的集合,当我们关心一个对象是否在一个集合中存在,而顺序和出现的次数是次要的时候,可以使用set。

7.
关于os.sep方法,(set是separator,分隔符的缩写)
作者的一个很晕菜的例子:
Old:
target_dir = '/mnt/e/backup/'
target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'
New:
target_dir = 'E:\\Backup'
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip'
os.sep的功能是自动辨别操作系统,给出不同的分隔符,Windows上是\\,Linux上是/,原理我是明白了,功能也很不错,但是作者的例子。。。。只有一处使用了os.sep,其他的地方还是老的写法啊(E:\\)

8.
可以使用@修饰符声明一个类方法:
    @classmethod
    def howMany(klass):
        '''Prints the current population.'''
        print('We have {0:d} robots.'.format(Robot.population))

9.
可以将以个类用Metaclasses的方式声明为抽象类抽象方法
from abc import *

class SchoolMember(metaclass=ABCMeta):
    '''Represents any school member.'''
    def __init__(self, name, age):
        self.name = name
        self.age = age
        print('(Initialized SchoolMember: {0})'.format(self.name))

    @abstractmethod
    def tell(self):
        '''Tell my details.'''
print('Name:"{0}" Age:"{1}"'.format(self.name, self.age), end=" ")
        #pass

10.
文件读写的模式又增加了两种:文本本件('t')二进制文件('b')。

11.将打开文件的操作放到使用with语句修饰的方法中,书上说好处是让我们更专注于文件操作,让代码看起来不凌乱,我一时间还不能体会with的好处,希望大家指点。
#!/usr/bin/python
# Filename: using_with.py
from contextlib import context
@contextmanager
def opened(filename, mode="r")
    f = open(filename, mode)
    try:
        yield f
    finally:
        f.close()

with opened("poem.txt") as f:
    for line in f:
        print(line, end='')

12.python3.0中添加了logging module,给我的感觉类似于Java中的log4j,直接看代码:
import os, platform, logging
if platform.platform().startswith('Windows'):
logging_file = os.path.join(os.getenv('HOMEDRIVE'),
os.getenv('HOMEPATH'), 'test.log')
else:
    logging_file = os.path.join(os.getenv('HOME'), 'test.log')
logging.basicConfig(
    level=logging.DEBUG,
    format='%(asctime)s : %(levelname)s : %(message)s',
    filename = logging_file,
    filemode = 'w',
)
logging.debug("Start of the program")
logging.info("Doing something")
logging.warning("Dying now")

6
0
分享到:
评论
3 楼 xredman 2010-10-12  
tangfeng 写道
Python3.0和2.X是有很多差别的!有一个PPT将的很清楚,目前我们都还在用2.5

有那个ppt,可以不可以share一下?
2 楼 fkpwolf 2009-01-19  
nice a
1 楼 tangfeng 2008-12-10  
Python3.0和2.X是有很多差别的!有一个PPT将的很清楚,目前我们都还在用2.5

相关推荐

    soft_Python 3.0 beta 2.zip.zip

    - Python 3.0 是一个重大的版本升级,许多改动使得它与 Python 2.x 不兼容。这意味着旧的 Python 2 代码可能需要进行大量修改才能在 Python 3 上运行。 7. **开发工具**: - `output.txt` 文件可能是测试或脚本的...

    Python 3.0与2.0的用法区别.docx

    1. Python 3.0中移除了`long`类型,现在所有整型都是`int`,其行为与2.x中的`long`相似。 2. 新增了`bytes`类型,用于处理字节序列,如`b'china'`。 这些改变使Python 3.0在很多方面都优于2.0,提供了更强大的功能...

    PyPI 官网下载 | tencentcloud-sdk-python-rkp-3.0.474.tar.gz

    总结来说,"tencentcloud-sdk-python-rkp-3.0.474.tar.gz" 是一个用于Python开发的腾讯云SDK资源,它提供了与腾讯云服务交互的能力,特别是RKP模块。正确安装和使用这个库可以帮助开发者高效地利用腾讯云的资源,...

    PyPI 官网下载 | tencentcloud-sdk-python-gme-3.0.530.tar.gz

    《PyPI官网下载的tencentcloud-sdk-python-gme-3.0.530.tar.gz:腾讯云GME SDK详解》 在Python的开发环境中,PyPI(Python Package Index)是一个重要的资源库,它提供了丰富的第三方库供开发者使用。本文将深入...

    python官方3.0rc3.amd64版本msi安装包

    2. **print函数**:Python 2.x中的print语句在3.0中被改为print()函数,这符合函数调用的语法,提高了代码的一致性。 3. **整数除法**:在Python 3中,整数除法(/)返回浮点数结果,而地板除法(//)用于获取整数...

    python官方3.0版本msi安装包

    1. **打印语句作为函数**:在Python 2.x中,`print` 是一个语句,而在Python 3.0中,它被转换为一个函数,即 `print()`. 这使得打印更加灵活,可以通过传递参数来控制输出。 2. **整数除法**:在Python 3.0中,两个...

    python官方3.0a3.amd64版本msi安装包

    8. **学习资源**:Python 3.0引入了诸如print函数、字典排序等变化,学习这些新特性对于理解Python 3.x系列至关重要。可以参考Python官方文档、在线教程或书籍来深入学习。 9. **社区支持**:Python有一个庞大的...

    python官方3.0.amd64版本msi安装包

    这个"python-3.0.amd64.msi"文件是针对64位(AMD64架构)操作系统的Python 3.0安装包,以MSI(Microsoft Installer)格式提供,适用于Windows用户。 1. **Python 3.0 版本特点**: - **Unicode默认**:Python 3.0...

    PyPI 官网下载 | tencentcloud-sdk-python-partners-3.0.461.tar.gz

    本文将深入探讨在PyPI上下载的"tencentcloud-sdk-python-partners-3.0.461.tar.gz"这一资源,它是腾讯云提供的Python SDK伙伴库,用于与腾讯云服务进行集成和交互。 首先,"tencentcloud-sdk-python-partners"是...

    Python 3.0与2.0的用法区别.pdf

    - Python 3.0中仅保留了`str`类型,它与Python 2.x中的`unicode`相似,支持Unicode编码。 - 引入了`bytes`类型,对应Python 2.x中的八位串(byte string)。创建`bytes`对象的方式包括`b'hello'`或`bytes('hello',...

    python 3.0 下载

    Python 3.0在2008年发布,由Guido van Rossum领导的开发团队精心打造,旨在解决早期Python版本(如Python 2.x)中的若干问题并引入一系列改进。 首先,Python 3.0的最大变化之一是对字符串处理的改革。在Python 2.x...

    python3.0廖雪峰

    Python3.0是Python编程语言的一个重要版本,它在2.x系列的基础上进行了一系列改进和优化,使得这个版本更加现代、高效。"廖雪峰"是中国知名的编程教程作者,他为初学者提供了丰富的Python学习资源,包括对Python3.0...

    Redis-x64-3.0.504.msi.zip

    - 为了在生产环境中使用,还需要了解如何与其他应用程序集成,例如通过连接池和适配器与编程语言如Java、Python或C#通信。 6. **管理和监控Redis**: - Redis服务器可以通过`INFO`命令提供详细的运行状态信息。 ...

    A Byte of Python v1.92 (for Python 3.0).rar

    On the same note, if you're wondering whether to learn Python 2.x or 3.x, then read this article by James Bennett [6]. Python是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单而...

    Python3.x和Python2.x的区别

    标题和描述均聚焦于Python3.x与Python2.x之间的区别,这一主题对于任何希望了解这两种Python版本差异的程序员来说都至关重要。Python自1991年首次发布以来,经历了多个版本的演进,其中最显著的变化发生在从Python2....

    Python库 | tencentcloud-sdk-python-monitor-3.0.510.tar.gz

    这个库,名为“tencentcloud-sdk-python-monitor-3.0.510”,是针对Python 3.x版本设计的,版本号为3.0.510,旨在帮助开发者轻松地获取和管理腾讯云服务的监控数据,从而实现对应用性能的高效监控和问题排查。...

    python 3.0 英语教程

    1. **基本语法**:Python 3.0 的语法比2.x系列更加简洁明了。例如,`print`函数不再是语句,而是需要使用括号来调用的函数。此外,字符串默认采用Unicode编码,统一了单引号和双引号的使用。 2. **类型系统**:...

    python官方3.0b2.amd64版本msi安装包

    在Python 3.x系列中,相比Python 2.x,有许多关键的语法和功能更新。例如,字符串类型发生了重大变化,Python 3将所有字符串编码为Unicode,这使得处理多语言文本变得更加方便。此外,print语句被改为print()函数,...

    VS2010的Python插件及Python3.0

    4. 注意Python 3.0的语法差异,如print函数变为print(),字符串默认为Unicode等,这可能导致旧的Python 2.x代码无法直接运行。 在实际开发过程中,考虑到Python 3.x系列的广泛采用和Python 2.x的逐渐淘汰,建议尽量...

Global site tag (gtag.js) - Google Analytics