Zuvor haben wir besprochen, warum Vyper ein Game Changer ist, da es eine der am schnellsten wachsenden Sprachen für die Entwicklung intelligenter Vertr?ge ist.
Wir haben auch einige Grundlagen wie Pragma und Constructor behandelt. Sie k?nnen es hier lesen.
Heute tauchen wir tief in die Datentypen und ihre Funktionsweise ein.
Was sind Datentypen?
Datentypen helfen uns, verschiedene Informationen in unserem Code zu organisieren, genau wie wir Elemente zu Hause an bestimmten Orten sortieren.
Diese Typen werden festgelegt, bevor das Programm ausgeführt wird. So wie ein für Flüssigkeiten konzipierter Beh?lter nicht für die Lagerung von Feststoffen geeignet ist, kann jede Variable in Vyper nur den Datentyp speichern, für den sie entwickelt wurde.
Beim Schreiben von Code müssen wir angeben, welchen Datentyp jede Variable enthalten soll – sei es eine Zahl für Berechnungen, Text für einen Namen oder wahr/falsch für einfache Entscheidungen. Diese Typen stellen sicher, dass unsere Programme Informationen korrekt verarbeiten und verhindern Fehler wie den Versuch, den Namen einer Person zu multiplizieren oder Buchstaben zusammenzufügen.
Datentypen in Vyper verstehen
- Boolescher Wert – einfach wahr/falsch
Stellen Sie sich boolesche Werte wie Lichtschalter vor – sie k?nnen nur zwei Zust?nde haben: wahr oder falsch. Wir verwenden sie in unserem Code, um Ja/Nein-Entscheidungen zu treffen.
<code>is_active: bool = True is_paused: bool = False # 可以翻轉(zhuǎn)布爾值 is_active = not is_active # 現(xiàn)在是 False</code>
Bestimmte Operatoren k?nnen effektiv mit booleschen Werten verwendet werden, einschlie?lich not, oder == und !=. Das bedeutet, dass wir sie nutzen k?nnen, um Wahrheit oder Unwahrheit zu beweisen.
**運(yùn)算符** | **描述** |
---|---|
not x | 邏輯否定 |
x and y | 邏輯合取 |
x or y | 邏輯析取 |
x == y | 相等 |
x != y | 不相等 |
-
nicht x – wahre/falsche Werte in ihr Gegenteil umdrehen
is_door_locked = True
is_door_unlocked = not is_door_locked # Ergebnis: Falsch
Es ist, als würde man ?das Gegenteil“ sagen – wenn die Tür verschlossen ist, bedeutet das Entriegeln, dass sie offen ist.
-
x und y – beide Bedingungen müssen wahr sein
has_ticket = True
has_id = True
can_board_plane = has_ticket and has_id # Ergebnis: True
So wie Sie ein Ticket und einen Ausweis ben?tigen, um in ein Flugzeug einzusteigen, müssen beide Werte wahr sein, damit das Ergebnis wahr ist.
-
x oder y – mindestens eine Bedingung muss wahr sein.
has_cash = False
has_credit_card = True
can_pay = has_cash oder has_credit_card # Ergebnis: True
Beim Bezahlen k?nnen Sie beispielsweise Bargeld oder Kreditkarte verwenden; Sie ben?tigen eine davon, um wahr zu sein.
-
x == y – prüft, ob zwei Werte gleich sind
Passwort = "secret123"
Eintrag = ?secret123“
is_correct = Passwort == Eintrag # Ergebnis: True
Es ist, als würde man prüfen, ob zwei Schlüssel gleich sind.
-
x != y – prüft, ob zwei Werte unterschiedlich sind
erwarteter_Preis = 100
tats?chlicher_preis = 90
price_changed = erwarteter_Preis != tats?chlicher_Preis # Ergebnis: Wahr
Das ist so, als würde man prüfen, ob etwas anders ist, etwa wenn man feststellt, dass ein Preis anders ist als erwartet. Diese Operatoren helfen Ihnen, logische boolesche Entscheidungen zu treffen.
Zahlen – Ganzzahlen und ihre Varianten
Bei der Verwendung von Zahlen in Smart Contracts bietet Vyper zwei grundlegende Methoden zum Umgang mit Ganzzahlen: vorzeichenbehaftete Ganzzahlen und vorzeichenlose Ganzzahlen. Jede Methode hat ihren spezifischen Zweck und das Verst?ndnis ihrer Unterschiede ist entscheidend für das Schreiben von effizientem und sicherem Code.
- Ganzzahl mit Vorzeichen
Vorzeichenbehaftete Ganzzahlen sind wahrscheinlich der vielseitigste Zahlentyp in Vyper und k?nnen sowohl positive als auch negative Werte darstellen. Stellen Sie sich ein Bankkonto vor – Sie k?nnen Einzahlungen t?tigen (positive Zahlen) und Geld abheben (negative Zahlen). Hier gl?nzen vorzeichenbehaftete Ganzzahlen. Wenn Sie eine Variable wie age: int8 = -5 deklarieren, weisen Sie Vyper an, 8 Bit Speicherplatz zu reservieren, der eine beliebige Zahl zwischen -128 und 127 aufnehmen kann.
<code>is_active: bool = True is_paused: bool = False # 可以翻轉(zhuǎn)布爾值 is_active = not is_active # 現(xiàn)在是 False</code>
Für gr??ere Werte bietet Vyper eine gr??ere Speicherkapazit?t. Der Typ int256 wird typischerweise für eine gro?e Anzahl numerischer Operationen verwendet und kann gr??ere Zahlen verarbeiten. Erw?gen Sie, den Gewinn und Verlust eines Unternehmens zu verfolgen: Balance: int256 = 1000. Dies kann einen gro?en finanziellen Schritt in beide Richtungen bedeuten.
- Ganzzahl ohne Vorzeichen
Einige Werte in der realen Welt sind niemals negativ. Sie k?nnen nicht -3 ?pfel oder -5 Benutzer haben. Hier kommen vorzeichenlose Ganzzahlen ins Spiel. Eine Aussage wie ?quantity: uint8 = 255“ eignet sich perfekt für Inventarsysteme oder die Benutzerz?hlung.
Der Typ uint8 verwendet effektiv 8 Bit, um Werte zwischen 0 und 255 zu speichern, was ihn ideal für kleine positive Zahlen macht.
<code>is_active: bool = True is_paused: bool = False # 可以翻轉(zhuǎn)布爾值 is_active = not is_active # 現(xiàn)在是 False</code>
Die am h?ufigsten verwendete vorzeichenlose Ganzzahl in Vyper ist uint256. Wenn Sie ?price: uint256 = 1000“ schreiben, erstellen Sie eine Variable, die eine gro?e positive Zahl enthalten kann, perfekt für die Anzahl der Token oder den Wei-Wert in einer Ethereum-Transaktion.
- Dezimal
Wenn Sie für pr?zise Berechnungen Dezimalpunkte verwenden müssen
<code># 有符號(hào)整數(shù)(可以為正數(shù)或負(fù)數(shù)) age: int8 = -5 # 存儲(chǔ)范圍為 -128 到 127 balance: int256 = 1000 # 較大的范圍用于更大的數(shù)字</code>
- Adresse – für Ethereum-Konten
Wir verwenden t?glich Adressen, um Standorte zu identifizieren – Ihr Zuhause, ein Gesch?ft oder das Zuhause eines Freundes. In der Ethereum-Welt funktionieren Adressen ?hnlich, aber anstatt auf einen physischen Standort zu verweisen, verweisen sie auf digitale Geldb?rsen und Smart Contracts. Lassen Sie uns untersuchen, was diese Adressen einzigartig macht und wie sie in Vyper funktionieren.
Was ist eine Ethereum-Adresse?
<code># 無符號(hào)整數(shù)(只有正數(shù)) quantity: uint8 = 255 # 存儲(chǔ)范圍為 0 到 255 price: uint256 = 1000 # 常用于存儲(chǔ)大型正數(shù)</code>
Stellen Sie sich Ihre Ethereum-Adresse als ein einzigartiges digitales Postfach vor. So wie Ihre Privatadresse sicherstellt, dass die Post nur Sie erreicht, stellt eine Ethereum-Adresse sicher, dass Kryptow?hrungen und digitale Verm?genswerte ihr beabsichtigtes Ziel erreichen. In Vyper verwenden wir einen speziellen Typ namens Adresse, um diese Adressen zu verarbeiten.
Wenn Sie etwas schreiben wie:
<code>price: decimal = 19.99 # 適用于財(cái)務(wù)計(jì)算 tax_rate: decimal = 0.15</code>
Sie erstellen eine Variable, die nur gültige Ethereum-Adressen speichern kann. Diese Adressen beginnen immer mit ?0x“, gefolgt von 40 Zeichen bestehend aus Zahlen (0-9) und Buchstaben (a-f).
Beispiele aus der Praxis Nehmen wir an, Sie erstellen einen einfachen Vertrag über eine digitale Geldb?rse. Sie k?nnen die Adresse wie folgt hinterlegen:
<code>owner: address = 0x123... # 存儲(chǔ)錢包地址 contract: address = 0xABC...</code>
Adresse verwenden Adressen in Vyper haben besondere Eigenschaften. Sie k?nnen Folgendes überprüfen:
- Wie viele Ether-Münzen enth?lt eine Adresse?
- Ob eine Adresse zu einem Smart Contract geh?rt
- Der Code wird in der Vertragsadresse gespeichert
So einfach k?nnen Sie beispielsweise den Kontostand einer Adresse überprüfen:
<code>owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F</code>
Adressen helfen uns bei der Navigation durch die Blockchain und stellen sicher, dass unsere digitalen Assets und Interaktionen ihr beabsichtigtes Ziel sicher und zuverl?ssig erreichen.
- Byte-Array – für Rohdaten
In Vyper werden Byte-Arrays verwendet, um rohe Bin?rdaten zu verarbeiten. Betrachten Sie sie als Beh?lter zum Speichern von Informationen, die ein Computer direkt verarbeiten kann. Byte-Arrays sind besonders nützlich, wenn Sie mit Dateien, kryptografischen Hashes oder bin?ren Operationen arbeiten.
<code># 錢包的所有者 owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F # 可靠的備份地址 backup_wallet: address = 0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199</code>
Statisches Byte-Array Statische Byte-Arrays haben eine feste Gr??e und k?nnen nicht ge?ndert werden. Das macht es einfach und effizient.
Beispiel: Speichern eines Hashs fester Gr??e Angenommen, Sie haben einen eindeutigen Code, beispielsweise einen Fingerabdruck, der immer 32 Byte lang ist. So speichern Sie es in Vyper.
fixed_code: bytes32 Das bedeutet, dass bytes32 immer 32 Bytes sein wird.
Dynamisches Byte-Array
Ein dynamisches Byte-Array kann Daten unterschiedlicher L?nge aufnehmen, sofern es die maximale Gr??e nicht überschreitet. Es hilft beim Speichern von Inhalten wie Kurznachrichten.
Beispiel: Kurznachricht speichern Angenommen, Sie m?chten eine Nachricht wie ?Hello, World!“ speichern, die bis zu 100 Bytes lang sein kann:
<code>is_active: bool = True is_paused: bool = False # 可以翻轉(zhuǎn)布爾值 is_active = not is_active # 現(xiàn)在是 False</code>
Okay, das war's für die heutige Studie. In unserem n?chsten Artikel werden wir weitere Datentypen untersuchen und ihre F?higkeiten verstehen.
Um mehr darüber zu lesen, schauen Sie sich die Vyper-Dokumentation und die Vyper-Beispiele an.
Das obige ist der detaillierte Inhalt vonVyper-Datentypen (Serie 2). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

Hei?er Artikel

Hei?e Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Der Schlüssel zum Umgang mit der API -Authentifizierung besteht darin, die Authentifizierungsmethode korrekt zu verstehen und zu verwenden. 1. Apikey ist die einfachste Authentifizierungsmethode, die normalerweise in den Anforderungsheader- oder URL -Parametern platziert ist. 2. BasicAuth verwendet Benutzername und Kennwort für die Basis64 -Codierungsübertragung, die für interne Systeme geeignet ist. 3.. OAuth2 muss das Token zuerst über Client_id und Client_secret erhalten und dann das BearerToken in den Anforderungsheader bringen. V. Kurz gesagt, die Auswahl der entsprechenden Methode gem?? dem Dokument und das sichere Speichern der Schlüsselinformationen ist der Schlüssel.

Assert ist ein Inssertion -Tool, das in Python zum Debuggen verwendet wird, und wirft einen Assertionerror aus, wenn der Zustand nicht erfüllt ist. Die Syntax ist eine geltende Bedingung sowie optionale Fehlerinformationen, die für die interne Logiküberprüfung geeignet sind, z. B. Parameterprüfung, Statusbest?tigung usw., k?nnen jedoch nicht für die Sicherheits- oder Benutzereingabeprüfung verwendet werden und sollten in Verbindung mit klaren Eingabeaufforderungen verwendet werden. Es ist nur zum Hilfsdebuggen in der Entwicklungsphase verfügbar, anstatt die Ausnahmebehandlung zu ersetzen.

TypHintsinpythonsolvetheProblemofAmbiguityAndpotentialbugsindynamicalpedCodeByAllowingDevelopstospecifyexpectypes

Eine gemeinsame Methode, um zwei Listen gleichzeitig in Python zu durchqueren, besteht darin, die Funktion ZIP () zu verwenden, die mehrere Listen in der Reihenfolge und die kürzeste ist. Wenn die Listenl?nge inkonsistent ist, k?nnen Sie iTertools.zip_longest () verwenden, um die l?ngste zu sein und die fehlenden Werte auszufüllen. In Kombination mit Enumerate () k?nnen Sie den Index gleichzeitig erhalten. 1.zip () ist pr?gnant und praktisch, geeignet für die Iteration gepaarte Daten; 2.zip_longest () kann den Standardwert beim Umgang mit inkonsistenten L?ngen einfüllen. 3.Enumerate (ZIP ()) kann w?hrend des Durchlaufens Indizes erhalten und die Bedürfnisse einer Vielzahl komplexer Szenarien erfüllen.

INPYTHON, ITERATORATORSAROBJECTSHATALWOULOUPING ThroughCollections Byimplementing__iter __ () und __Next __ (). 1) IteratorsworkviATheiterProtocol, verwendete __iter __ () toreturn thiteratorand__Next __ () torethentexteemtemuntemuntilstoperationSaised.2) und

Um moderne und effiziente APIs mit Python zu schaffen, wird Fastapi empfohlen. Es basiert auf Eingabeaufforderungen an Standardpython -Typ und kann automatisch Dokumente mit ausgezeichneter Leistung generieren. Nach der Installation von Fastapi und ASGI Server Uvicorn k?nnen Sie Schnittstellencode schreiben. Durch das Definieren von Routen, das Schreiben von Verarbeitungsfunktionen und die Rückgabe von Daten kann schnell APIs erstellt werden. Fastapi unterstützt eine Vielzahl von HTTP -Methoden und bietet automatisch generierte Swaggerui- und Redoc -Dokumentationssysteme. URL -Parameter k?nnen durch Pfaddefinition erfasst werden, w?hrend Abfrageparameter durch Einstellen von Standardwerten für Funktionsparameter implementiert werden k?nnen. Der rationale Einsatz pydantischer Modelle kann dazu beitragen, die Entwicklungseffizienz und Genauigkeit zu verbessern.

Eine virtuelle Umgebung kann die Abh?ngigkeiten verschiedener Projekte isolieren. Der Befehl ist mit Pythons eigenem Venvidenmodul erstellt und ist Python-Mvenvenv. Aktivierungsmethode: Windows verwendet Env \ scripts \ aktivieren, macOS/Linux verwendet SourceEnv/bin/aktivieren; Das Installationspaket verwendet PipInstall, verwenden Sie Pipfreeze> Anforderungen.txt, um Anforderungsdateien zu generieren, und verwenden Sie Pipinstall-Rrequirements.txt, um die Umgebung wiederherzustellen. Zu den Vorsichtsma?nahmen geh?ren nicht das Senden von Git, reaktivieren Sie jedes Mal, wenn das neue Terminal ge?ffnet wird, und die automatische Identifizierung und Umschaltung kann von IDE verwendet werden.

Um die API zu testen, müssen Sie Pythons Anfragebibliothek verwenden. In den Schritten werden die Bibliothek installiert, Anfragen gesendet, Antworten überprüfen, Zeitüberschreitungen festlegen und erneut werden. Installieren Sie zun?chst die Bibliothek über PipinstallRequests. Verwenden Sie dann Requests.get () oder Requests.Post () und andere Methoden zum Senden von GET- oder Post -Anfragen. überprüfen Sie dann die Antwort. Fügen Sie schlie?lich Zeitüberschreitungsparameter hinzu, um die Zeitüberschreitungszeit festzulegen, und kombinieren Sie die Wiederholungsbibliothek, um eine automatische Wiederholung zu erreichen, um die Stabilit?t zu verbessern.
