正在阅读最新版的《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 3.0 是一个重大的版本升级,许多改动使得它与 Python 2.x 不兼容。这意味着旧的 Python 2 代码可能需要进行大量修改才能在 Python 3 上运行。 7. **开发工具**: - `output.txt` 文件可能是测试或脚本的...
1. Python 3.0中移除了`long`类型,现在所有整型都是`int`,其行为与2.x中的`long`相似。 2. 新增了`bytes`类型,用于处理字节序列,如`b'china'`。 这些改变使Python 3.0在很多方面都优于2.0,提供了更强大的功能...
总结来说,"tencentcloud-sdk-python-rkp-3.0.474.tar.gz" 是一个用于Python开发的腾讯云SDK资源,它提供了与腾讯云服务交互的能力,特别是RKP模块。正确安装和使用这个库可以帮助开发者高效地利用腾讯云的资源,...
《PyPI官网下载的tencentcloud-sdk-python-gme-3.0.530.tar.gz:腾讯云GME SDK详解》 在Python的开发环境中,PyPI(Python Package Index)是一个重要的资源库,它提供了丰富的第三方库供开发者使用。本文将深入...
2. **print函数**:Python 2.x中的print语句在3.0中被改为print()函数,这符合函数调用的语法,提高了代码的一致性。 3. **整数除法**:在Python 3中,整数除法(/)返回浮点数结果,而地板除法(//)用于获取整数...
1. **打印语句作为函数**:在Python 2.x中,`print` 是一个语句,而在Python 3.0中,它被转换为一个函数,即 `print()`. 这使得打印更加灵活,可以通过传递参数来控制输出。 2. **整数除法**:在Python 3.0中,两个...
8. **学习资源**:Python 3.0引入了诸如print函数、字典排序等变化,学习这些新特性对于理解Python 3.x系列至关重要。可以参考Python官方文档、在线教程或书籍来深入学习。 9. **社区支持**:Python有一个庞大的...
这个"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"这一资源,它是腾讯云提供的Python SDK伙伴库,用于与腾讯云服务进行集成和交互。 首先,"tencentcloud-sdk-python-partners"是...
- Python 3.0中仅保留了`str`类型,它与Python 2.x中的`unicode`相似,支持Unicode编码。 - 引入了`bytes`类型,对应Python 2.x中的八位串(byte string)。创建`bytes`对象的方式包括`b'hello'`或`bytes('hello',...
Python 3.0在2008年发布,由Guido van Rossum领导的开发团队精心打造,旨在解决早期Python版本(如Python 2.x)中的若干问题并引入一系列改进。 首先,Python 3.0的最大变化之一是对字符串处理的改革。在Python 2.x...
Python3.0是Python编程语言的一个重要版本,它在2.x系列的基础上进行了一系列改进和优化,使得这个版本更加现代、高效。"廖雪峰"是中国知名的编程教程作者,他为初学者提供了丰富的Python学习资源,包括对Python3.0...
- 为了在生产环境中使用,还需要了解如何与其他应用程序集成,例如通过连接池和适配器与编程语言如Java、Python或C#通信。 6. **管理和监控Redis**: - Redis服务器可以通过`INFO`命令提供详细的运行状态信息。 ...
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之间的区别,这一主题对于任何希望了解这两种Python版本差异的程序员来说都至关重要。Python自1991年首次发布以来,经历了多个版本的演进,其中最显著的变化发生在从Python2....
这个库,名为“tencentcloud-sdk-python-monitor-3.0.510”,是针对Python 3.x版本设计的,版本号为3.0.510,旨在帮助开发者轻松地获取和管理腾讯云服务的监控数据,从而实现对应用性能的高效监控和问题排查。...
1. **基本语法**:Python 3.0 的语法比2.x系列更加简洁明了。例如,`print`函数不再是语句,而是需要使用括号来调用的函数。此外,字符串默认采用Unicode编码,统一了单引号和双引号的使用。 2. **类型系统**:...
在Python 3.x系列中,相比Python 2.x,有许多关键的语法和功能更新。例如,字符串类型发生了重大变化,Python 3将所有字符串编码为Unicode,这使得处理多语言文本变得更加方便。此外,print语句被改为print()函数,...
4. 注意Python 3.0的语法差异,如print函数变为print(),字符串默认为Unicode等,这可能导致旧的Python 2.x代码无法直接运行。 在实际开发过程中,考虑到Python 3.x系列的广泛采用和Python 2.x的逐渐淘汰,建议尽量...