>  기사  >  백엔드 개발  >  Python2와 3의 차이점을 설명하세요.

Python2와 3의 차이점을 설명하세요.

coldplay.xixi
coldplay.xixi앞으로
2021-01-11 09:28:483215검색

ㅋㅋㅋ

Python2와 3의 차이점을 설명하세요.

1. print Function

2. Unicode3. Division 연산4. Exception5. 9. 여러 모듈의 이름이 변경되었습니다(PEP8에 따라) 10. 데이터 유형

차이점

Python 3.0 버전은 종종 python3000 또는 줄여서 py3k 버전으로 불리며, 이는 큰 업그레이드입니다. 너무 많은 부담을 주지 않기 위해 python3.0은 이전 버전을 염두에 두고 설계되지 않았습니다. python3.0에서는 python 버전이 정상적으로 실행되지 않습니다. 기존 프로그램을 관리하기 위해 python2.6은 기본적으로 python2.x의 구문과 라이브러리를 사용하는 전환 버전이며 python3.0으로의 마이그레이션도 허용합니다. 일부 python3.0 구문 및 함수 사용 실행 환경에서 python3.0을 설치할 수 없거나 프로그램 자체가 python3.0을 지원하지 않는 타사 라이브러리를 사용하지 않는 한 프로그램에서는 python3.0 버전의 구문을 사용할 것을 권장합니다. 현재 Python을 지원하지 않는 타사 라이브러리로는 Twisted, py2exe, PIL 등이 있습니다.
    대부분의 타사 라이브러리는 python3.0을 바로 사용할 수는 없더라도 호환되도록 노력하고 있습니다. 호환되는 3.0 버전 Python 프로그램을 작성한 다음 2.6 또는 2.7을 사용하여 실행하는 것이 좋습니다. 1. python3.0 일부 변경 사항
  • 1. 인쇄 기능
    •  print 문이 사라지고 print() 기능으로 대체되었습니다. .이 형식의 인쇄 구문은 python2.6과 python2.7에서 지원됩니다. 다음 세 가지 형식은 2.7
    • print "我是菜鸟"print (我是菜鸟) #注意print后边有个空格print("我是菜鸟") #print()不能带有其他任何参数
    •   그러나 python2.6은 실제로 새로운 print() 구문을 지원합니다
    • from _future_import print_functionprint("我是个菜鸟","我好菜啊",sep=', ')
    • 2. 유니코드
    •   python2에는 ASCII str() 유형이 있고 unicode()는 바이트 유형이 아닌 별도의 입니다. 이제 python3에는 유니코드(utf-8) 문자열과 바이트 클래스(byte 및 bytearrays)가 있습니다. -8 인코딩은 기본적으로 다음 코드를 허용합니다
    • 我没女友='I have no girlfriends'print(我没女友)
    • 3. 나눗셈 연산
    •   다른 언어와 비교하여 Python의 나눗셈에는 / 및 //라는 두 가지 연산자가 있습니다. .
    • 먼저 Python 2에 대해 이야기해 보겠습니다.
    • Python 3.x의 나눗셈은 더 이상 이 작업을 수행하지 않으며 정수 사이의 나눗셈 결과도 부동 소수점 숫자가 됩니다. (이것은 0/1로 이해될 수 있음)
    •    //division의 경우 이 나누기를 바닥 나누기라고 하며, 나누기 결과에 대해 자동으로 바닥 연산을 수행하는데, 이는 python2.x와 3.x에서 일관됩니다.
    • #python2.x与3.x-1//2 #输出值是-1
    •      소수 부분은 버리지 않지만 바닥 연산이 수행된다는 점에 유의하세요. 소수 부분을 가로채려면 수학 모듈의 trunc 기능을 사용해야 합니다.
  • 4. 예외

 python3에서는 예외 처리도 약간 변경되었습니다. 예외를 잡기 위한 구문이 Except ex,var에서 Except ex as var로 변경되었습니다.

여러 범주의 예외를 동시에 포착하려면 Except(exc1,exc2) 구문을 var로 사용하세요. python2.6은 이미 이 두 가지 구문을 지원합니다. ·2.x 시대에는 모든 유형의 객체를 직접 던질 수 있습니다. 3.x 시대에는 BaseException을 상속받은 객체만 던질 수 있습니다. ·2.x raise 문은 쉼표를 사용하여 던져진 객체 유형과 매개변수를 구분합니다. 3.x에서는 이 이상한 쓰기 방법을 취소하고 생성자를 직접 호출하여 객체를 던집니다.

2.x 시대에는 코드의 예외가 프로그램 오류를 나타낼 뿐만 아니라 일반적인 제어 구조에서 수행해야 하는 작업도 수행하는 경우가 많습니다. 3.x에서는 디자이너가 예외를 더 구체적으로 만든 것을 볼 수 있습니다. 오류가 발생하는 경우에만 예외 포착 문을 사용하여 이를 처리할 수 있습니다.



5. 예: for 루프 또는 목록/설정/사전 이해.
 이는 생성기와 매우 유사하게 동작합니다(예: "지연 평가"). 하지만 이 xrange-iterable은 무한합니다. 즉, 무한히 탐색할 수 있다는 의미입니다.

지연 평가로 인해 xrange() 함수는 여러 번 반복하려는 경우(예: for 루프) range() 함수보다 빠릅니다. 그래도 한 번 반복하는 것보다 여러 번 반복하는 것은 권장되지 않으므로 생성기는 매번 처음부터 시작됩니다.
 python3에서 range()는 xrange()처럼 구현되므로 전용 xrange() 함수가 더 이상 존재하지 않습니다. (python3에서는 xrange()가 명명된 예외를 발생시킵니다.

6. 8진수 리터럴은

을 의미합니다.

  八进制必须写成0o777,原来的形式0777不能用了;二进制0b111。新增了一个bin()函数用于将一个整数转换成二进制字串。python2.6已经支持这两种语法

7.不等运算符

python2.x中不等于 !=和a8093152e673feb7aba1828c43532094
python3.x中不等于只有!=

8.去掉了repr表达式"

python2.x中反引号"相当于repr函数的作用
python3.x中去掉了"这种写法,只允许repr函数,感觉repr只有debug的时候才用,多数时候还是用str函数来用字符串描述对象。

9.多个模块被改名(根据PEP8)

旧名字 新名字
_winreg winreg
ConfigParser configparser
copy_reg copyreg
Queue queue
SocketServer socketserver
repr reprlib

  StringIO模块现在被合并到新的io模组内new,md5,gopherlib等模块被删除 。python2.6已经支援新的io模组。
  httplibBase,HTTPServer,CGIHTTPServer,SimpleHTTPServer,Cookie,cookerlib被合并到http包内。取消了exec语句只剩下exec()函数。python2.6已经支援exec()函数。

10.数据类型

  python3.x去除了long类型,现在只有一种整型——int
  新增了bytes类型,对应于2.x版本的八位串,定义一个butes字面量方法如下

b=b&#39;lalala&#39;type(b)#输出<type &#39;bytes&#39;>

str对象和bytes对象可以使用encode()(str->bytes)or.decode()(bytes->str)方法互相转换。

s=b.decode()b1=s.encode()

dict的.keys()、.items和.values()方法返回迭代器,而之前的iterkeys()等函数都被遗弃。同事去掉的还有dict.has_key(),用in替代它吧>_<。


总结

  总之一句话,用python3吧,不要再倔强了!
  才开始学习计算机不久,第一次写博客,如果有问题希望大家指正,希望我们能一起学习一起进步。共勉!

위 내용은 Python2와 3의 차이점을 설명하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제