We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Support Python 2 and 3 with the same code

00:00

Formale Metadaten

Titel
Support Python 2 and 3 with the same code
Serientitel
Teil
57
Anzahl der Teile
119
Autor
Lizenz
CC-Namensnennung 3.0 Unported:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache
ProduktionsortBerlin

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
Stefan Schwarzer - Support Python 2 and 3 with the same code Your library supports only Python 2, - but your users keep nagging you about Python 3 support? As Python 3 gets adopted more and more, users ask for Python 3 support in existing libraries for Python 2. This talk mentions some approaches for giving users a Python 3 version, but will quickly focus on using the very same code for a Python 2 and a Python 3 version. This is much easier if you require Python 2.6 and up, and yet a bit easier if you require Python 3.3 as the minimum Python 3 version. The talk discusses main problems when supporting Python 3 (some are easily solved): * `print` is a function. * More Python APIs return iterators that used to return lists. * There's now a clear distinction between bytes and unicode (text) strings. * Files are opened as text by default, requiring an encoding to apply on reading and writing. The talk also explains some best practices: * Start with a good automatic test coverage. * Deal with many automatic conversions with a one-time 2to3 run. * Think about how your library should handle bytes and unicode strings. (Rule of thumb: Decode bytes as early as possible; encode unicode text as late as possible.) * Should you break compatibility with your existing Python 2 API? (Yes, if there's no other way to design a sane API for Python 2 and 3. If you do it, raise the first part of the version number.) * Try to keep code that's different for Python 2 and 3 minimal. Put code that needs to be different for Python 2 and 3 into a `compat` module. Or use third-party libraries like `six` or `future`. Finally, the talk will mention some helpful resources on the web.
Schlagwörter
CodierungMeta-TagProgrammierungMakrobefehlProgrammPeer-to-Peer-NetzBasis <Mathematik>COMBerlineSystemprogrammCodierungGüte der AnpassungRegulärer GraphProgrammbibliothekProzess <Informatik>Computeranimation
SoftwareentwicklerSoftwareQuellcodeAdditionMinimalgradFiletransferprotokollProgrammbibliothekClientSoftwarewartungFormale SpracheWikiSummierbarkeitKonvexe HülleDistributionenraumVersionsverwaltungBenutzerfreundlichkeitSpezielle unitäre GruppeURNUmsetzung <Informatik>WeitverkehrsnetzZeichenketteMini-DiscUnicodeSocketCodierungNummerungPunktGewöhnliche DifferentialgleichungLokales MinimumDatentypBinärdatenDefaultTypentheorieFolge <Mathematik>FehlermeldungMetropolitan area networkSupremum <Mathematik>COMSystemaufrufDezimalzahlGeradeElektronische PublikationBimodulOffene MengeObjekt <Kategorie>Funktion <Mathematik>Lesen <Datenverarbeitung>CodierungInteraktives FernsehenHilfesystemGüte der AnpassungInstallation <Informatik>Web-SeitePunktSoftwareentwicklerDatensatzEindeutigkeitOffice-PaketUnternehmensarchitekturZeichenketteTypentheorieGeradeDefaultBinärcodeProgrammbibliothekLesen <Datenverarbeitung>Kontextbezogenes SystemMinimumRechter WinkelUmsetzung <Informatik>Kategorie <Mathematik>MathematikMereologieDifferenzkernExistenzaussageProgrammierumgebungProzess <Informatik>RechenwerkE-MailMigration <Informatik>MultiplikationsoperatorMusterspracheLateinisches QuadratMailing-ListeSoftwaretestProgrammierungClientWeb SiteVerschlingungGarbentheorieFormale SpracheAusnahmebehandlungRichtungAdditionElektronische PublikationTopologieEinfacher RingSystemaufrufQuellencodierungEntscheidungstheorieBitEuler-WinkelRobotikGruppenoperationMinimalgradSystemprogrammSoftwareVersionsverwaltungTypprüfungFiletransferprotokollRohdatenSoftwarewartungNummerungSocketKonstruktor <Informatik>FehlermeldungWikiVorlesung/KonferenzComputeranimation
URNUnendlichkeitZeichenketteGeradeFunktion <Mathematik>PufferspeicherEin-AusgabeLesen <Datenverarbeitung>ParametersystemUnicodePhysikalisches SystemOperations ResearchMetropolitan area networkSynchronisierungCodierungSoftwaretestNormalvektorMathematikInformationHochdruckRechenwerkSupremum <Mathematik>Fächer <Mathematik>Gewöhnliche DifferentialgleichungElektronische PublikationFehlermeldungAusnahmebehandlungSummierbarkeitVarianzProgrammbibliothekBinärdatenDateisystemSchlussregelInnerer PunktRohdatenSocketRandwertHill-DifferentialgleichungLipschitz-StetigkeitKomponente <Software>Spezielle unitäre GruppeDreiIkosaederGammafunktionKonvexe HülleWeitverkehrsnetzRechter WinkelUmsetzung <Informatik>Endliche ModelltheorieSoftwaretestElektronische PublikationParametersystemCodierungMultiplikationsoperatorPhysikalisches SystemMaßerweiterungLesen <Datenverarbeitung>Objekt <Kategorie>HochdruckBefehl <Informatik>MathematikRandwertVersionsverwaltungRechenwerkSchlüsselverwaltungCASE <Informatik>KomponententestParserFunktionalZeichenketteBitSystemaufrufBildgebendes VerfahrenOffene MengeEindeutigkeitMereologiePixelUniversal product codeInformationGarbentheoriePunktMigration <Informatik>SynchronisierungRobotikUnrundheitFaltung <Mathematik>URLAusnahmebehandlungDateiverwaltungBitrateKonfiguration <Informatik>MusterspracheNP-hartes ProblemPuffer <Netzplantechnik>BimodulDifferenz <Mathematik>SocketProgrammbibliothekHyperbelverfahrenTypentheorieKonfigurationsraumComputeranimation
SkalarproduktCodierungFiletransferprotokollClientProgrammbibliothekGeradeKontrollstrukturBimodulObjekt <Kategorie>MAPInterface <Schaltung>Fermatsche VermutungURNLokales MinimumInformationsmanagementWeitverkehrsnetzMUDQuellcodeGravitationsgesetzCOMZahlenbereichWeb-SeitePrädiktor-Korrektor-VerfahrenSchaltwerkOperations ResearchSpeicherbereichsnetzwerkBoolesche AlgebraElektronische PublikationOffene MengeLesen <Datenverarbeitung>MAPObjekt <Kategorie>Befehl <Informatik>CodierungRPCGeheimnisprinzipMereologieKreisbogenQuellcodeFiletransferprotokollPartikelsystemBimodulRechter WinkelComputeranimation
Brennen <Datenverarbeitung>Komponente <Software>Physikalisches SystemMathematikDreiCOMGravitationsgesetzZeiger <Informatik>Lipschitz-StetigkeitURNRechenwerkRippen <Informatik>Spezielle unitäre GruppePersonal Area NetworkCAN-BusFunktion <Mathematik>ZeichenketteDatentypNormierter RaumWeitverkehrsnetzSupremum <Mathematik>Fächer <Mathematik>Einfacher RingLokales MinimumKreisbogenParametersystemMagnetooptischer SpeicherASCIIARM <Computerarchitektur>SchwimmkörperSocketUnicodeElektronische PublikationCASE <Informatik>Objekt <Kategorie>DifferenteMailing-ListeNummerungVersionsverwaltungSoftwaretestCodierungSchreiben <Datenverarbeitung>GeradeSinusfunktionSummierbarkeitTOEGewöhnliche DifferentialgleichungModellgetriebene EntwicklungZellulares neuronales NetzMetropolitan area networkUnendlichkeitLesen <Datenverarbeitung>ProgrammbibliothekBimodulHochdruckAusnahmebehandlungKonvexe HülleDivisionBildverstehenMereologieOffene MengeZeichenketteLesen <Datenverarbeitung>ÄhnlichkeitsgeometrieMathematikCodierungObjekt <Kategorie>FunktionalProjektive EbeneFunktion <Mathematik>ParametersystemElektronische PublikationMailing-ListeBildschirmsymbolEindeutigkeitHinterlegungsverfahren <Kryptologie>Message-PassingSchaltnetzTopologieSchreiben <Datenverarbeitung>KonditionszahlVerzeichnisdienstStatistische SchlussweiseRechter WinkelGewicht <Ausgleichsrechnung>ComputerspielRechenschieberVerschlingungBrennen <Datenverarbeitung>EntscheidungstheoriePunktAusnahmebehandlungVektorraumBildschirmmaskeFiletransferprotokollMusterspracheKlasse <Mathematik>Inhalt <Mathematik>VersionsverwaltungSoftwaretestSOLOMON <Programm>ProgrammbibliothekEndliche ModelltheorieGarbentheorieHochdruckUmsetzung <Informatik>Interface <Schaltung>CASE <Informatik>DiagrammBimodulPhysikalisches SystemWeb SiteKompakter RaumServerSocketNetzbetriebssystemUnicodeTeilmengeSystemprogrammBitNummerungAnpassung <Mathematik>sinc-FunktionDifferenteComputeranimation
URNFiletransferprotokollTypentheorieBitrateCodierungVersionsverwaltungTupelInnerer PunktZeichenketteAutomatische IndexierungMereologieUmsetzung <Informatik>Programm/Quellcode
BimodulProgrammbibliothekElektronische PublikationZeichenketteUnicodeDivisionSchlussregelQuellcodeCodierungRechenwerkSoftwaretestFeasibility-StudieModallogikImplementierungLesen <Datenverarbeitung>Spezielle unitäre GruppeWeitverkehrsnetzLokales MinimumARM <Computerarchitektur>SummierbarkeitCOMGewöhnliche DifferentialgleichungZeichenketteModallogikMathematikFunktionalImplementierungAutomatische HandlungsplanungQuellencodierungCodierungDivisionFaltungscodeProgrammbibliothekTeilmengeElektronische PublikationSoftwaretestBitLesen <Datenverarbeitung>DämpfungÄußere Algebra eines ModulsProjektive EbeneHochdruckSechsSchreiben <Datenverarbeitung>TypentheoriePunktQuellcodeDatenfeldt-TestClientAdressraumComputerspielEndliche ModelltheorieQuick-SortRechter WinkelNeuroinformatikEreignishorizontComputeranimation
MultiplikationsoperatorProjektive EbeneCodierungInstantiierungFeasibility-StudieVorlesung/Konferenz
Brennen <Datenverarbeitung>COMARM <Computerarchitektur>AusnahmebehandlungKonstruktor <Informatik>MathematikEreignishorizontComputeranimation
COMBrennen <Datenverarbeitung>SchlussregelObjekt <Kategorie>Quick-SortAttributierte GrammatikParametersystemMaßerweiterungVersionsverwaltungRichtungGesetz <Physik>Vorlesung/KonferenzComputeranimation
DifferenteMaßerweiterungWeb logArithmetisches MittelDämpfungMultiplikationsoperatorCoxeter-GruppeLesen <Datenverarbeitung>VerzeichnisdienstMathematikPaarvergleichFiletransferprotokollFreewareCodierungMechanismus-Design-TheorieGrenzschichtablösungProgrammbibliothekSystemprogrammProjektive EbeneBimodulTermVorlesung/Konferenz
COM
Transkript: Englisch(automatisch erzeugt)