`
abcde5342376
  • 浏览: 34767 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

python3与python2代码差别

阅读更多

《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")

分享到:
评论

相关推荐

    Python-PythonModernize基于2to3构建使Python代码更加现代化以便最终迁移到Python3

    Python Modernize 是一个重要的工具,它帮助开发者将他们的 Python 2 代码转换为 Python 3 兼容的格式。这个工具基于 Python 的标准库 `2to3`,但提供了额外的功能和改进,使得代码更新过程更为平滑。在 Python 2 ...

    Python 如何让PyQt5窗体代码与逻辑代码分离 Python源码

    Python 如何让PyQt5窗体代码与逻辑代码分离 Python源码Python 如何让PyQt5窗体代码与逻辑代码分离 Python源码Python 如何让PyQt5窗体代码与逻辑代码分离 Python源码Python 如何让PyQt5窗体代码与逻辑代码分离 Python...

    python3还是python2翻译

    ### Python2与Python3的选择与区别 #### 一、概览 在选择Python版本时,开发者往往会面临一个基本的问题:是使用Python 2还是Python 3?这个问题在Python社区中一直存在,尤其是在Python 3发布之后。Python 3相较于...

    PYTHON做贪吃蛇代码

    PYTHON做贪吃蛇代码 PYTHON做贪PYTHONPYTHON做贪吃蛇代码做贪吃蛇代码 吃蛇代码 PYTHON做贪吃蛇代码PYTHON做贪吃蛇代码PYPYTHON做贪吃蛇代码THON做贪吃蛇代码PYTHON做贪吃蛇代码PYTHON做PYTHON做贪吃蛇代码贪吃蛇...

    爬虫开发《Python3网络爬虫开发实战代码》

    【爬虫开发】《Python3网络爬虫开发实战代码》 说明:《Python3网络爬虫开发实战代码》---->mitmtest (Practical code for development of Python 3 web crawler) 【爬虫开发】《Python3网络爬虫开发实战代码》文件...

    python代码加密以及python代码的License控制

    python代码加密以及python代码的License控制 码农给别人开发项目的时候,防止别人拿到代码后未经授权随意复制代码到未经权授的机器上运行,同时还将代码加密防止别人窃取核心机密。 python代码加密:将python代码...

    java2python--java代码转python工具

    Java到Python的转换工具,如"java2python",是一个重要的软件开发辅助工具,它能够帮助程序员将已有的Java代码转换成Python代码,以便在Python环境中执行或进行进一步的开发工作。这种转换过程涉及到多种语言特性和...

    python 2代码转python 3代码

    自Python 3于2008年发布以来,它引入了许多改进和新特性,导致与Python 2存在显著差异。这篇详尽的文章将探讨Python 2到Python 3迁移的关键知识点,并提供有关如何平稳过渡的指导。 1. **打印函数**:在Python 2中...

    Python2代码批量自动转换成Python3代码

    将指定目录下的Python2代码批量自动转换成Python3代码

    python草莓熊代码

    草莓熊python代码

    python2的代码转换成python3代码的工具

    python2与python3不兼容,造成了很多人的困惑,为了使python2的代码能够在python3下继续使用,可以通过2to3.py工具进行批量转换

    python爱心代码python爱心代码高级.zip

    python爱心代码高级python爱心代码python爱心代码高级.zippython爱心代码高级python爱心代码python爱心代码高级.zippython爱心代码高级python爱心代码python爱心代码高级.zippython爱心代码高级python爱心代码python...

    Python3-cookbook

    事实上,到我写这本书的 2013 年,绝大部分的 Python 程序员仍然在生产环境中使用的是版本 2 系列, 最主要是因为 Python 3 不向后兼容。毫无疑问,对于工作在遗留代码上的每个程序员来讲,向后兼容是不得不考虑的...

    python520代码大全

    python爱心代码高级 python520代码大全 仅供学习交流! 后续会持续分享相关资源,记得关注哦! python爱心代码高级 python520代码大全 python爱心代码高级 python520代码大全 python爱心代码高级 python520代码大全 ...

    Python项目开发实战 源代码

    2. **面向对象编程**:Python是面向对象的语言,源代码可能会涉及到类的定义、对象的创建、继承、封装和多态等概念。了解如何设计和实现面向对象的解决方案对于理解复杂项目至关重要。 3. **文件操作**:在项目开发...

    python3入门书籍免费-Python3基础教程(第2版)(慕课版).pdf

    《Python3基础教程(第2版)》是针对初学者的免费Python编程教材,涵盖了Python语言的基础知识。这本书首先介绍了Python语言的历史、特点以及不同版本的区别。Python 3相较于Python 2,在语法和功能上有所改进,比如...

    pythonGame小游戏代码+python课程设计代码

    这个包重点展示了Python在游戏开发中的应用,通过乒乓球游戏和滑雪游戏的源代码,我们可以深入理解如何利用Python来创建交互式游戏。 首先,让我们详细探讨一下乒乓球游戏的代码。在Python中,通常会使用Pygame库来...

Global site tag (gtag.js) - Google Analytics