Nein, Sie sollten diese Warnung nicht als erschöpfend behandeln. Der folgende Code verhält sich anders auf Python2.x und python3.x aber sendet keine Warnungen:
from __future__ import print_function
class test(object):
def __nonzero__(self):
return False
t = test()
if t:
print('Hello')
(zumindest nicht so von python2.7.10 auf OSX). Ok, vielleicht kann dieser Code von 2to3 (es ist) behandelt werden - obwohl ich immer noch eine Warnung basierend auf der official documentation erwarten würde.
warnen Python 3.x möglichen Unverträglichkeiten durch eine DeprecationWarning für Features, die emittierende oder erheblich verändert in Python 3.
Hier ist ein Beispiel von Code entfernt werden, dass isn't handled by 2to3 aber noch keine Warnung ausgegeben wird mit der -3
Option:
from __future__ import print_function
import subprocess
class Pipe(object):
def __init__(self,openstr):
self.gnu_process=subprocess.Popen(openstr.split(),
stdin=subprocess.PIPE)
def put_in_pipe(self,mystr):
print(mystr, file=self.gnu_process.stdin)
if __name__=="__main__":
print("This simple program just echoes what you say (control-d to exit)")
p = Pipe("cat -")
while True:
try:
inpt = raw_input()
except EOFError:
break
print('putting in pipe:%s' % inpt)
p.put_in_pipe(inpt)
Das Problem mit diesem Code ist, dass in python3, meine Pfeife ein Byte Objekt erwartet, aber es wird immer ein str
(python2.x‘ s Unicode).
Da dieser Code nicht mit 3.x kompatibel ist. Es sei denn Sie meinen '__nonzero__'? In diesem Fall ist es wahrscheinlich, weil es nach "Inkompatibilitäten sucht, die 2to3 nicht trivial ** reparieren" kann, und das ist eine ziemlich triviale Lösung. Es ist unklar, über welchen Code du sprichst. –
Ihr Link führt zur Python 3-Dokumentation. Python 3 hat dieses Flag nicht. (Überraschenderweise wird in der [Python 2-Dokumentation] (https://docs.python.org/2/using/cmdline.html#cmdoption-3) der Vorbehalt von 2to3 nicht erwähnt.) – user2357112
@ user2357112 - Yeah, I ' Auch davon bin ich überrascht (weshalb meine erste Antwort Code hatte, den 2to3 trivial behandelt). – mgilson