Python 3.x 起始版本是Python 3.0,目前的最新版本是 3.3.3
Python之父Guido van Rossum谈到了Python 3.0的构思:
一直以来,除非要打破向后兼容性,否则很多缺陷和错误都无法修复。因此,Python 3000将会作为第一个放弃向后兼容性的Python版本,目的就是要让Python向着最好的语言前进。
Python的3.0版本,常被称为Python 3000,或简称Py3k。相对于Python的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容。许多针对早期Python版本设计的程序都无法在Python 3.0上正常运行。为了照顾现有程序,Python 2.6作为一个过渡版本,基本使用了Python 2.x的语法和库,同时考虑了向Python 3.0的迁移,允许使用部分Python 3.0的语法与函数。基于早期Python版本而能正常运行于Python 2.6并无警告。程序可以通过一个2to3的转换工具无缝迁移到Python 3.0。Python有一些很有用的测试模块,包括doctext和unitest。确保在尝试移植到Python3之前,对应用程序进行全面测试。要确保测试范围尽可能大,而且程序在Python2.6上运行时,能通过测试并且没有出现任何警告信息。
新的Python程序建议使用Python 3.0版本的语法。除非运行环境无法安装Python 3.0或者程序本身使用了不支持Python 3.0的第三方库。目前不支持Python 3.0的第三方库有Twisted, py2exe, PIL等。大多数第三方库都正在努力地兼容Python 3.0版本。即使无法立即使用Python 3.0,也建议编写兼容Python 3.0版本的程序,然后使用Python 2.6, Python 2.7来运行。Python 2.7被确定为最后一个Python 2.x版本,它除了支持Python 2.x语法外,还支持部分Python 3.1语法.
变化大致总结如下:
01.print() and exec() 函数
python旧版本里,print和exec是作为一语句出现,可以用print "Hello,World!", 来打印一个语句,在新版本里,print()和exec()作为一个函数出现,所以上面的写就是错误的,应该写成print ("Hello,World!")对于Java的程序员来说,这样的改变应该是比较熟悉. System.out.print("Hello,World!");
Old: >>>print "The answer is", 2*2
New: >>>print("The answer is", 2*2)
Old: >>>print x, # Trailing comma suppresses newline
New: >>>print(x, end=" ") # Appends a space instead of a newline
Old: >>>print # Prints a newline
New: >>>print() # You must call the function!
Old: >>>print >>sys.stderr, "fatal error"
New: >>>print("fatal error", file=sys.stderr)
Old: >>>print (x, y) # prints repr((x, y))
New: >>>print((x, y)) # Not the same as print(x, y)!
不过在Python 2.6版本里面: from __future__ import print_function
>>> from __future__ import print_function
>>> print ('Jerry','Sherry',sep='-')
Jerry-Sherry
下面的修改在新版本是正确的:
>>>print("There are possibilities!", sep="")
There are possibilities!
>>>fid = open("log.txt", "a")
>>>print("log.txt", file=fid)
>>>print("Foo", "Bar", sep="%")
>>>Foo%Bar
exec() 同样是函数,在python 2.x里,下列代码是ok的.
>>> def foo():
exec('a=4')
print a
>>> foo()
4
但在python 3.x里面就不行了,会报NameError: global name 'a' is not defined. 因为变量a没有定义。原因在于exec()作为函数,只操作globals()和locals()函数返回的字典。但locals()函数返回的字典实际上是局部变量的一个副本。exec()函数中进行的赋值只修改了局部变量的这份副本,而非局部变量本身。下面给出了一种解决办法:
>>> def foo():
_locals = locals()
exec('a=4',globals(),_locals)
a = _locals['a']
print (a)
>>> foo()
4
02.整数及除法
int和long统一为int, int表示任何精度的整数,移除sys.maxint, 因为int已经是最大的整数。新版本移除了含糊的除法符号('/'),而只返回浮点数。在以前的版本中,如果参数是int或者是long的话,就会返回相除后结果的向下取整(floor), 而如果参数是float或者是complex的话,那么就会返回相除后结果的一个恰当的近似。
Old: >>>1/2 #结果是0 晕死。。。
New: >>>1/2 #结果是0.5 总算接地气了。
03.input()代替raw_input()
变简洁了。
Old: >>>question = raw_input("What is your quest? ")
New: >>>question = input("What is your quest? ")
04.源文件编码默认为UTF-8
Python 3 在字符编码方面有很多改进,其中之一就是默认的源文件编码从ASCII变为UTF-8,也就是说以前在文件头加上的各种花样的 coding=utf-8不再需要了!
# coding: UTF-8
# vim:fileencoding=UTF-8
# -*- coding=UTF-8 -*-
# vim: set fileencoding=UTF-8
05.字符串格式化变化
格式化字符串的这个内置的%操作符太有限了,新版本新增加了format(),比以前更灵活了,%要逐渐被淘汰。举三个简单的例子如下:
>>>"I love {0}, {1}, and {2}".format("eggs", "bacon", "sausage")
'I love eggs, bacon, and sausage'
>>>"I love {a}, {b}, and {c}".format(a="eggs", b="bacon", c="sausage")
'I love eggs, bacon, and sausage'
>>>"I love {0}, {1}, and {param}".format("eggs", "bacon", param="sausage")
'I love eggs, bacon, and sausage'
06.比较
Python3对于值的比较要严格得多。在Python2中,任意两个对象均可进行比较,例如:
Old: >>>11 New: >>>11
07.标识符支持非 ASCII 字符
所有 = all
class 男人:
@classmethod
def 包括(cls,ta):
return isinstance(ta,cls)
def 一起玩(人们):
if 所有(男人.包括(ta) for ta in 人们):
print ("他们是基友")
else:
print ("他们是朋友")
汤姆 = 男人()
杰瑞 = 男人()
一起玩([汤姆,杰瑞])
>>>
他们是基友
08.异常处理
* 异常类必须继承自BaseException,它是异常结构的基类。
* 移除了StandardError
* 抛出异常:使用raise Exception(args)而不是原来的raise Exception, args
* 捕获异常: 使用except Exception as identifier而不是原来的except Exception, identifier
* 异常链(Exception chain)。
* 改良了一些windows不能加载模式时的异常信息,具有本地化处理。
例子1: Python 3中的异常处理
# 绑定ValueError到本地的ex
try:
x = float('blah')
except ValueError as ex:
print("value exception occurred ", ex)
# 同时捕获两个不用的异常
try:
x = float('blah')
except (ValueError, NameError):
print("caught both types of exceptions")
例子2: Python 3中的隐式异常链
def divide(a, b):
try:
print(a/b)
except Exception as exc:
def log(exc):
fid = open('logfile.txt') # missing 'w'
print(exc, file=fid)
fid.close()
log(exc)
divide(1,0)
09.字典dict
Python 3.0 内的另一个重大改变是字典内dict.iterkeys(),dict.itervalues(),dict.iteritems()方法的删除。取而代之的是:dict.keys(),dict.values(),dict.items(),它们被进行了修补,可以返回轻量的、类似于集的容器对象,而不是键和值的列表。这样的好处是在不进行键和条目复制的情况下,就能在其上执行set操作。dict.has_key()同样被移除。
>>> d = {1:"Food",2:"Book"}
>>> d.keys(), d.values(),d.items()
>>> for values in d.items():
print (values)
(1, 'Food')
(2, 'Book')
>>> keys = list(d.items())
>>> print (keys)
[(1, 'Food'), (2, 'Book')]
Old: >>> d.has_key(1)
True
New: >>> 1 in d #新版本判断key是否在字典里面
True
10.其他改变
* 移除了backticks(使用repr()代替)
* 移除了(不等号,使用!=代替)
* as和with 变成了关键字
* True,False和None变成了关键字
* 移除了__getslice__,语法a[i:j]被解释成a.__getitem__(slice(i,j))
* nonlocal声明。使用nonlocal可以声明一个外部变量(不是global变量)
* xrange()改名为range(),range()现在不是产生一个列表(list),而是一个迭代器。
* next()重命名为__next__(),新的内建函数next()可以调用一个对象的__next__()方法。
* 八进制字,二进制和bin()函数。应该写0o666而不是0666,oct()函数也做了响应的改动。同样,0b1010等价于10,bin(10)返回”0b1010″。
>>>0o13 #八进制转十进制
11
>>>0b010101 #八进制转二进制
21

Python의 유연성은 다중 파리가 지원 및 동적 유형 시스템에 반영되며, 사용 편의성은 간단한 구문 및 풍부한 표준 라이브러리에서 나옵니다. 유연성 : 객체 지향, 기능 및 절차 프로그래밍을 지원하며 동적 유형 시스템은 개발 효율성을 향상시킵니다. 2. 사용 편의성 : 문법은 자연 언어에 가깝고 표준 라이브러리는 광범위한 기능을 다루며 개발 프로세스를 단순화합니다.

Python은 초보자부터 고급 개발자에 이르기까지 모든 요구에 적합한 단순성과 힘에 호의적입니다. 다목적 성은 다음과 같이 반영됩니다. 1) 배우고 사용하기 쉽고 간단한 구문; 2) Numpy, Pandas 등과 같은 풍부한 라이브러리 및 프레임 워크; 3) 다양한 운영 체제에서 실행할 수있는 크로스 플랫폼 지원; 4) 작업 효율성을 향상시키기위한 스크립팅 및 자동화 작업에 적합합니다.

예, 하루에 2 시간 후에 파이썬을 배우십시오. 1. 합리적인 학습 계획 개발, 2. 올바른 학습 자원을 선택하십시오. 3. 실습을 통해 학습 된 지식을 통합하십시오. 이 단계는 짧은 시간 안에 Python을 마스터하는 데 도움이 될 수 있습니다.

Python은 빠른 개발 및 데이터 처리에 적합한 반면 C는 고성능 및 기본 제어에 적합합니다. 1) Python은 간결한 구문과 함께 사용하기 쉽고 데이터 과학 및 웹 개발에 적합합니다. 2) C는 고성능과 정확한 제어를 가지고 있으며 게임 및 시스템 프로그래밍에 종종 사용됩니다.

Python을 배우는 데 필요한 시간은 개인마다 다릅니다. 주로 이전 프로그래밍 경험, 학습 동기 부여, 학습 리소스 및 방법 및 학습 리듬의 영향을받습니다. 실질적인 학습 목표를 설정하고 실용적인 프로젝트를 통해 최선을 다하십시오.

파이썬은 자동화, 스크립팅 및 작업 관리가 탁월합니다. 1) 자동화 : 파일 백업은 OS 및 Shutil과 같은 표준 라이브러리를 통해 실현됩니다. 2) 스크립트 쓰기 : PSUTIL 라이브러리를 사용하여 시스템 리소스를 모니터링합니다. 3) 작업 관리 : 일정 라이브러리를 사용하여 작업을 예약하십시오. Python의 사용 편의성과 풍부한 라이브러리 지원으로 인해 이러한 영역에서 선호하는 도구가됩니다.

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

WebStorm Mac 버전
유용한 JavaScript 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
