파이톤2와 파이톤3의 차이(초보자용)-1

10371 단어 Python
추기

python 2에서 실행할 수 있는 코드를 python 3에서 실행할 수 있는 도구로 변환


https://docs.python.org/ja/3/library/2to3.html
2 to 3 - Pythhon2에서 3으로의 자동 코드 변환
설치(ubuntu 시)
$ sudo apt install 2to3
실행

이러면 피토훈3로 전혀 움직일 수 없을 것 같아.
pytohon2에서 pytohon3로 변경된 부분의 부분만 변환할 수 있는 것들?
나머지는 반드시 스스로 코드를 변경해야 한다.
Google 번역으로 Help 번역
$ 2to3 --help
Usage: 2to3 [options] file|dir ...

Options:
  -h, --help            このヘルプメッセージを表示して終了する
  -d, --doctests_only   doctestsだけを修正する
            https://docs.python.org/ja/3/library/doctest.html
  -f FIX, --fix=FIX     各FIXは変換を指定します。 デフォルト:all
  -j PROCESSES, --processes=PROCESSES
                        2to3を同時に実行する
  -x NOFIX, --nofix=NOFIX
                        変換が実行されないようにする
  -l, --list-fixes      利用可能な変換を一覧表示する
  -p, --print-function  print()が関数になるように文法を修正する
  -v, --verbose         より詳細なログ記録
  --no-diffs            リファクタリングの差分を表示しない
  -w, --write           変更したファイルを書き戻す
  -n, --nobackups       変更されたファイルのバックアップを書き込まない
  -o OUTPUT_DIR, --output-dir=OUTPUT_DIR
                        入力ファイルを上書きするのではなく、このディレクトリに出力ファイルを置きます。 -nが必要です。
  -W, --write-unchanged-files
                        変更が不要な場合でもファイルを書き込みます(--output-dirを使用すると便利です)。 -wを意味します。
  --add-suffix=ADD_SUFFIX
                        この文字列をすべての出力ファイル名に追加します。 空でない場合は-nが必要です。 例:--add-suffix = '3'は.py3ファイルを生成します。
Pythhon2 파일을 Pythhon3 파일로 변환할 때 (백업 파일이 필요하지 않으면 - n 추가)
test.py
print 'asdf'
$ 2to3 -w test.py
Python 3용 코드로 변경
test.py
print ('asdf')
원본 파일은 입니다.bak 파일로 저장 (필요 없을 때, n)
test.py.bak
print 'asdf'

나는 자주 인터넷에서 참고하고 싶은 코드를 검색하는데 파이톤2의 코드가 비교적 많은 것 같다.


나는 파이톤3에서 실행되지 않는 것을 제외하고는 파이톤2를 사용하지 않기 때문에 대비표를 만들고 싶다.
알았을 때 추가하고 싶어요.
이것 괜찮아요?
코드의 첫 번째 행(# 전체 각도로 입력)
#!/usr/bin/python3
#!/usr/bin/python
등등, 실행할 때pyth3을 입력하지 않아도 './test.py' 와 같은 프로그램을 실행할 수 있다.
파이톤2 리뷰에서 일본어를 사용하면 오류가 발생할 수 있습니다(# 전각으로 작성됨).
# -- coding: utf-8 --
# coding: utf-8
코드의 두 번째 줄에 들어갈 때 오류가 발생하지 않습니다.
파이톤3를 자주 사용하면 오류가 생기지 않기 때문에 넣지 않았지만, 넣는 습관을 기르고 싶어요.
외국 사이트에서 이렇게 편리한 사용 방법을 발견하였다.
python2든 python3이든 모두 사용할 수 있습니다
try:
    # for Python2
    import Tkinter as tk
    import ScrolledText as tkst
except ImportError:
    # for Python3
    import tkinter as tk
    import tkinter.scrolledtext as tkst
이어서 프로그램 라이브러리는 트위터에 통합된다.
#import tkMessageBox                           # for python2
from tkinter import messagebox as tkMessageBox # for python3
#import tkFileDialog                           # for python2
from tkinter import filedialog as tkFileDialog # for python3

#root=Tkinter.Tk()      # for python2
root=tkinter.Tk()       # for python3
Python2
Python3
시험을 준비하다
import cStringIO
존재하지 않음
실행
import StringIO
존재하지 않음
실행
long형과 int형
long형과 int형이 하나의 유형으로 통합되어 끝의 L이 사라졌습니다.
True, False, None이 키워드입니다.
>>> 1/2
>>> 1//2
0
0
>>> 1./2.
>>> 1/2
0.5
0.5
print'문자열
print(문자열)
비교적 많다.Python 3에서 ()가 필요합니다.예.
print는 명령입니다.
print는 함수

print(f'{year}/{month}/{day}')
Python3.6 이후 f를 머리 위에 놓으면 변수를 직접 지정할 수 있다(참조)
>>> b = (b'\xc3\x9f\x65\x74\x61')
>>> b = (b'\xc3\x9f\x65\x74\x61')
바이트 소양은:
>>> print(b)
>>> print(b)
앞에 b 가 있어요.
ßeta
b'\xc3\x9feta'
줄이 맞다
a = raw_input ("무엇을 입력하십시오:")
a=input(무엇을 입력하십시오:)
print(a)
print(a)
>>> repr('é')
>>> repr('é')
"'\xc3\xa9'"
"'é'"
for i in xrange(0, 10000)
for i in range(0, 10000)
커다란 줄 순환이 Pythhon2와 xrange (, Pythhon3에서 xrange) 를 병합하여range
map () 가 [100200300]의 목록을 되돌려줍니다
맵 () 목록이 아닌 맵 대상을 되돌려줍니다
GUI--Tkinter 관계
import Tkinter
import tkinter
import tkMessageBox
from tkinter import messagebox as tkMessageBox
Pytohon3에서 트위터와 통합.예.
import tkFileDialog
from tkinter import filedialog as tkFileDialog
Pytohon3에서 트위터와 통합.예.
import ScrolledText
from tkinter import scrolledtext as ScrolledText
Pytohon3에서 트위터와 통합.예.
root=Tkinter.Tk()
root=tkinter.Tk()
예제
명령을 케이스에 보내고 출력하기
import commands
import os
Pythn3에서commands 모듈을 삭제합니다.예.
result = commands.getoutput(‘ls -la’)
result = os.system("ls -la")
예제
import subprocess
예제
result = subprocess.run(["ls", "-l"])
파이썬 3.5에 추가됩니다.예.
from StringIO import StringIO
from io import StringIO
cmp(a,b)
삭제됨
이 테이블 아래를 참조하십시오.
subprocess.run(args,*,sting=None,input=None,stridrr=None,shell=False,cwd=None,timeout=None,check=False,encoding=None,errors=None) (원문)
args에서 지정한 명령을 실행합니다.명령이 완료될 때까지 기다린 후 CompuletedProcess 인스턴스로 돌아갑니다.
Ubuntu Stdio 17.10에서 18.04LTE로 업그레이드된 이후 지금까지 파이토존2에서 실행된 프로그램은 실행 중'ascii'codec can't...'이 나왔다.(전부가 아니라 일부일 뿐.)
파이썬 3 문제 없어요.
검색할 때 아래 코드로 해결했어요.
try:
    #Python2の場合
    import sys
    reload(sys)
    sys.setdefaultencoding('utf-8')
except NameError:
    pass  #Python3
cmp() 함수
https://qiita.com/norioc/items/cb533d009aa63453df40
파이썬 3의sorted 함수와 비교 함수를 참고할 수 있도록 허락해 주십시오.
# Python2の場合

print "cmp(80, 100) : ", cmp(80, 100)

cmp(80, 100) :  -1  # 結果

# Python3の場合

def cmp_python3(a,b):
    if a == b : return 0
    return -1 if a < b else 1  

print ("cmp(80, 100) : ", cmp_python3(80, 100))

#------結果
cmp(80, 100) :  -1

참고 자료


파이썬에서 가끔 쓰고 싶은 거.
파이톤2와 3의 포장이 다르다(cPickle:pickle,xrange:range,from StringIO import StringIO:from io import StringIO)
https://qiita.com/yoyoyo/items/934400bc2d1b738be865
Python3.6 부터 사용할 수 있는 print 문장
https://qiita.com/Rendlire/items/18a7d23f8fd953a34e2e
minus9d's diary
http://minus9d.hatenablog.com/entry/20131015/1381849395

좋은 웹페이지 즐겨찾기