wie man Variablentyp, C-Stil in Python deklariert

Lesezeit: 7 Minuten

Benutzeravatar von Guillermo Siliceo Trueba
Guillermo Siliceo Trueba

Ich bin Programmierstudent und mein Lehrer beginnt mit C, um uns die Programmierparadigmen beizubringen. Er sagte, es sei in Ordnung, wenn ich meine Hausaufgaben in Python abliefere (es ist einfacher und schneller für die Hausaufgaben). Und ich möchte, dass mein Code so nah wie möglich an C ist.
Die Frage ist:
Wie deklariere ich Datentypen für Variablen in Python wie in C. ex:

int X,Y,Z;

Ich weiß, dass ich dies in Python tun kann:

x = 0
y = 0
z = 0

Aber das scheint eine Menge Arbeit zu sein und es verfehlt den Punkt, dass Python einfacher/schneller als C ist. Also, was ist der kürzeste Weg um dies zu tun?
PS Ich weiß, dass du es nicht tust müssen, zu … haben Deklarieren Sie den Datentyp meistens in Python, aber ich würde es trotzdem gerne tun, damit mein Code so gut wie möglich wie der von Klassenkameraden aussieht.

  • Sie verstehen nicht ganz, was Variablen in Python sind. Stellen Sie es sich wie C void*-Zeiger vor: Sie haben keinen inhärenten Typ, sie sind Namen, die verwendet werden, um sich auf irgendetwas zu beziehen. In Python existieren Objekte da draußen im Speicherdschungel des Interpreters, und Sie können ihnen Namen geben und sich mithilfe von Variablen merken, wo sie zu finden sind. Ihre Variable hat keinen Typ im Sinne von C, sie zeigt nur auf ein Objekt.

    – sležica

    15. Oktober 2010 um 0:35 Uhr

Benutzeravatar von Cam T
Cam T

Ab Python 3.6 können Sie Typen von Variablen und Funktionen wie folgt deklarieren:

explicit_number: type

oder für eine Funktion

def function(explicit_number: type) -> type:
    pass

Dieses Beispiel aus diesem Beitrag: So verwenden Sie die statische Typprüfung in Python 3.6 ist expliziter

from typing import Dict

def get_first_name(full_name: str) -> str:
    return full_name.split(" ")[0]

fallback_name: Dict[str, str] = {
    "first_name": "UserFirstName",
    "last_name": "UserLastName"
}

raw_name: str = input("Please enter your name: ")
first_name: str = get_first_name(raw_name)

# If the user didn't type anything in, use the fallback name
if not first_name:
    first_name = get_first_name(fallback_name)

print(f"Hi, {first_name}!")

Siehe die Dokumente für die typing Modul

  • Endlich eine richtige Antwort auf die Frage …. Aber auch das kann nicht vermeiden, vars einen inkompatiblen Wert zuzuweisen. Nur, dass IDEs wie pycharm die Informationen verwenden können, um mögliche Fehler zu finden …

    – wmac

    1. Februar 2019 um 12:52 Uhr


  • @wmac Dies ist lediglich ein Typhinweis für Entwickler. In der Tat können intelligente IDEs dies analysieren und Sie vor Nichtübereinstimmungen warnen, aber das ist das Höchste, was sie tun können. Angesichts der dynamischen Natur von Python ist dies ein akzeptables Verhalten.

    – Timor Gruber

    26. April 2020 um 16:11 Uhr

  • Danke, dass es trotzdem nur zu Info-/Hinweiszwecken dient

    – schw

    28. Mai 2020 um 0:35 Uhr

  • Wenn also in Java beispielsweise ein Variablentyp definiert ist, darf kein inkompatibler Typ zugewiesen werden. Aber Python tut es immer noch. Hilft es also wirklich?

    – sjd

    5. Juni 2020 um 8:14 Uhr

  • @wmac Wenn Sie Datenobjekte validieren müssen, können Sie dies mit Datenklassen tun docs.python.org/3/library/dataclasses.htmlaber da die Ententypisierung von Python ithe-Variablen dynamisch sind, können sie mutieren, sodass der Interpreter die statischen Typen nicht überprüft, aber es hilft sehr beim Dokumentieren und Entwickeln, wenn er weiß, was die Variable ist.

    – Kamera T

    26. November 2020 um 20:12 Uhr


Benutzeravatar von Ignacio Vazquez-Abrams
Ignacio Vazquez-Abrams

Bearbeiten: Python 3.5 eingeführt geben Sie Hinweise ein wodurch eine Möglichkeit eingeführt wurde, den Typ einer Variablen anzugeben. Diese Antwort wurde geschrieben, bevor diese Funktion verfügbar wurde.

Es gibt keine Möglichkeit, Variablen in Python zu deklarieren, da weder “Deklaration” noch “Variablen” im Sinne von C existieren. Dieser Wille binden die Drei Namen zum selben Objekt:

x = y = z = 0

  • Dies ist ab Python 3.5 veraltet, was statische Typisierung ermöglicht. Siehe Cam Ts Antwort.

    – Mandämon

    18. Oktober 2019 um 10:58 Uhr

Python ist nicht unbedingt einfacher/schneller als C, obwohl es so ist möglich dass es einfacher ist 😉

Um eine andere Aussage zu verdeutlichen: “Sie müssen den Datentyp nicht deklarieren” – es sollte wiederholt werden, dass Sie kippen den Datentyp deklarieren. Wenn Sie einer Variablen einen Wert zuweisen, wird der Typ des Werts zum Typ der Variablen. Es ist ein feiner Unterschied, aber dennoch anders.

  • Ich würde sagen, dass C einfacher ist als Python. Es fehlen Dekoratoren, Metaklassen, Deskriptoren usw. Zugegeben, diese können alle in C implementiert werden, aber dann ist Ihr Programm anspruchsvoller und nicht die zugrunde liegende Sprache.

    – Aaronasterling

    14. Oktober 2010 um 13:09 Uhr

  • @aaron – beachte, dass ich möglich gesagt habe 🙂 Ich mache C seit mehr als 25 Jahren und Python erst seit einem Jahr – ich schreibe immer noch all meine kleinen Sachen in C (aber nicht, weil es einfach ist)

    – KevinDTimm

    14. Oktober 2010 um 13:11 Uhr

  • Die Sprache könnte in Bezug auf die Funktionen einfacher sein. Aber der Punkt ist, dass es NICHT einfacher ist, Dekoratoren, Metaklassen, Deskriptoren usw. zu implementieren

    – Famarri

    14. Oktober 2010 um 20:52 Uhr

  • C ist eine ziemlich einfache Sprache. Das bedeutet definitiv nicht, dass das Schreiben von Code in C einfach ist. 🙂

    – Nate CK

    20. Januar 2011 um 4:29 Uhr

  • Heutzutage können Sie verwenden geben Sie Hinweise ein um einen Datentyp zu deklarieren, wird er jedoch nicht zur Laufzeit verwendet.

    – Boris Werchowskij

    6. September 2019 um 23:01 Uhr

Benutzeravatar von Praphan Klairith
Praphan Klairith

Einfach gesagt: Die Eingabe von Python ist nur für Hinweise nützlich.

x: int = 0
y: int = 0 
z: int = 0

Benutzeravatar von DisplayName
Anzeigename

Ich bin überrascht, dass niemand darauf hingewiesen hat, dass Sie dies tatsächlich tun können:

decimalTwenty = float(20)

In vielen Fällen ist es bedeutungslos, eine Variable zu tippen, da sie jederzeit erneut eingegeben werden kann. Im obigen Beispiel könnte es jedoch nützlich sein. Es gibt andere Typfunktionen wie diese, wie zum Beispiel: int(), long(), float() und complex()

  • Ich bin überrascht, dass Sie das sagen. Denn das macht Ihre Variable nicht typisiert und das ist nicht anders als das Zuweisen eines Werts von 20,0 … keiner von ihnen macht Ihre Variable zu einem immer schwebenden Wert. Sie können dieser Variablen immer noch einen beliebigen Wert zuweisen.

    – wmac

    1. Februar 2019 um 12:48 Uhr


  • Wenn Sie verwenden geben Sie Hinweise ein und Sie versuchen, einer Variablen, die bereits einen mypy-Typ hat, einen Wert eines anderen Typs zuzuweisen, wird der Fehler ausgelöst Incompatible types in assignment

    – Boris Werchowskij

    6. September 2019 um 22:58 Uhr


Benutzeravatar von Carl Pickering
Karl Pickering

Aber starke Typen und Variablendefinitionen sind eigentlich dazu da, die Entwicklung zu erleichtern. Wenn Sie diese Dinge nicht im Voraus durchdacht haben, entwerfen und entwickeln Sie keinen Code, sondern hacken nur.

Lose Typen verlagern einfach die Komplexität von der „Design/Hack“-Zeit zur Laufzeit.

  • Ich bin überrascht, dass Sie das sagen. Denn das macht Ihre Variable nicht typisiert und das ist nicht anders als das Zuweisen eines Werts von 20,0 … keiner von ihnen macht Ihre Variable zu einem immer schwebenden Wert. Sie können dieser Variablen immer noch einen beliebigen Wert zuweisen.

    – wmac

    1. Februar 2019 um 12:48 Uhr


  • Wenn Sie verwenden geben Sie Hinweise ein und Sie versuchen, einer Variablen, die bereits einen mypy-Typ hat, einen Wert eines anderen Typs zuzuweisen, wird der Fehler ausgelöst Incompatible types in assignment

    – Boris Werchowskij

    6. September 2019 um 22:58 Uhr


Alles in Python ist ein Objekt, und dazu gehören Klassen, Klasseninstanzen, Code in Funktionen, Bibliotheken von Funktionen, die als Module bezeichnet werden, sowie Datenwerte wie Ganzzahlen, Gleitkommazahlen, Zeichenfolgen oder Container wie Listen und Wörterbücher. Es enthält sogar Namespaces, die wörterbuchähnliche (oder Mapping-)Container sind, die verwendet werden, um die Zuordnungen zwischen Identifizierernamen (Zeichenkettenobjekten) und den aktuell existierenden Objekten zu verfolgen. Ein Objekt kann sogar mehrere Namen haben, wenn zwei oder mehr Bezeichner demselben Objekt zugeordnet werden.

Das Zuordnen eines Identifizierers zu einem Objekt wird als “Binden eines Namens an das Objekt” bezeichnet. Das kommt einer Variablendeklaration in Python am nächsten. Namen können zu unterschiedlichen Zeiten mit verschiedenen Objekten verknüpft werden, daher macht es keinen Sinn, anzugeben, an welche Art von Daten Sie einen anhängen möchten – Sie tun es einfach. Oft geschieht dies in einer Codezeile oder einem Codeblock, der sowohl den Namen als auch eine Definition des Werts des Objekts angibt, wodurch es erstellt wird, wie z <variable> = 0 oder eine Funktion, die mit a beginnt def <funcname>.

Wie das hilft.

1412790cookie-checkwie man Variablentyp, C-Stil in Python deklariert

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy