Maison > développement back-end > Tutoriel Python > Types de données Vyper (série 2)

Types de données Vyper (série 2)

Barbara Streisand
Libérer: 2025-01-16 12:28:57
original
685 Les gens l'ont consulté

Vyper Data Types (Series 2)

Précédemment, nous avons expliqué pourquoi Vyper change la donne, car il s'agit de l'un des langages de développement de contrats intelligents à la croissance la plus rapide.

Nous avons également abordé quelques bases comme Pragma et Constructor. Vous pouvez le lire ici.

Aujourd'hui, nous allons approfondir les types de données et leur fonctionnement.

Quels sont les types de données ?

Les types de données nous aident à organiser différentes informations dans notre code, tout comme nous trions les éléments dans des emplacements spécifiques à la maison.

Ces types sont définis avant l'exécution du programme. Tout comme un récipient conçu pour les liquides ne convient pas au stockage de solides, chaque variable de Vyper ne peut stocker que le type de données pour lequel elle a été conçue.

Lors de l'écriture du code, nous devons spécifier le type de données que chaque variable contiendra - qu'il s'agisse d'un nombre pour les calculs, d'un texte pour un nom ou de vrai/faux pour des décisions simples. Ces types garantissent que nos programmes traitent correctement les informations, évitant ainsi les erreurs telles que la tentative de multiplier le nom d'une personne ou d'additionner des lettres.

Comprendre les types de données dans Vyper

  • Booléen - simple vrai/faux

Pensez aux valeurs booléennes comme les interrupteurs d'éclairage - elles ne peuvent être que dans deux états : vrai ou faux. Nous les utilisons dans notre code pour prendre des décisions oui/non.

<code>is_active: bool = True
is_paused: bool = False

# 可以翻转布尔值
is_active = not is_active  # 现在是 False</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Certains opérateurs peuvent être utilisés efficacement avec des valeurs booléennes, notamment not, ou == et !=. Cela signifie que nous pouvons les utiliser pour prouver la vérité ou le mensonge.

**运算符** **描述**
not x 逻辑否定
x and y 逻辑合取
x or y 逻辑析取
x == y 相等
x != y 不相等
Considérez ces opérateurs comme des moyens de prendre des décisions dans votre code :
  • pas x - retournez les valeurs vraies/fausses vers leurs opposés

    is_door_locked = Vrai
    is_door_unlocked = pas is_door_locked # Résultat : False

C'est comme dire "en face" - si la porte est verrouillée, alors être déverrouillée signifie qu'elle est ouverte.

  • x et y - les deux conditions doivent être vraies

    has_ticket = Vrai
    has_id = Vrai
    can_board_plane = has_ticket et has_id # Résultat : True

Tout comme vous avez besoin d'un billet et d'une pièce d'identité pour monter à bord d'un avion, les deux valeurs doivent être vraies pour que le résultat soit vrai.

  • x ou y - au moins une condition doit être vraie.

    has_cash = Faux
    has_credit_card = Vrai
    can_pay = has_cash ou has_credit_card # Résultat : Vrai

Par exemple, lorsque vous payez, vous pouvez utiliser de l'argent liquide ou une carte de crédit ; vous en avez besoin pour être vrai ;

  • x == y - vérifie si deux valeurs sont identiques

    mot de passe = "secret123"
    entrée = "secret123"
    is_correct = mot de passe == entrée # Résultat : Vrai

C'est comme vérifier si deux clés sont identiques.

  • x != y - vérifie si deux valeurs sont différentes

    prix_attendu = 100
    prix_actuel = 90
    price_changed = Expect_price != actual_price # Résultat : True

C'est comme vérifier si quelque chose est différent, comme remarquer qu'un prix est différent de celui prévu. Ces opérateurs vous aident à prendre des décisions booléennes logiques.

Nombres - Entiers et leurs variantes

Lors de l'utilisation de nombres dans des contrats intelligents, Vyper propose deux méthodes de base pour gérer les entiers : les entiers signés et les entiers non signés. Chaque méthode a son objectif spécifique, et comprendre leurs différences est essentiel pour écrire du code efficace et sûr.

  • Entier signé

Les entiers signés sont probablement le type de nombre le plus polyvalent dans Vyper, capable de représenter à la fois des valeurs positives et négatives. Pensez à un compte bancaire : vous pouvez effectuer des dépôts (nombres positifs) et retirer de l’argent (nombres négatifs). C’est là que les entiers signés brillent. Lorsque vous déclarez une variable telle que age : int8 = -5, vous dites à Vyper de réserver 8 bits d'espace, qui peuvent contenir n'importe quel nombre entre -128 et 127.

<code>is_active: bool = True
is_paused: bool = False

# 可以翻转布尔值
is_active = not is_active  # 现在是 False</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

Pour les valeurs plus importantes, Vyper offre une plus grande capacité de stockage. Le type int256 est généralement utilisé pour un grand nombre d’opérations numériques et peut gérer des nombres plus grands. Pensez à suivre les profits et les pertes d'une entreprise : solde : int256 = 1 000. Cela peut représenter un mouvement financier important dans les deux sens.

  • Entier non signé

Certaines valeurs du monde réel ne sont jamais négatives. Vous ne pouvez pas avoir -3 pommes ou -5 utilisateurs. C’est là que les entiers non signés entrent en jeu. Une déclaration comme quantité : uint8 = 255 est parfaite pour les systèmes d'inventaire ou le comptage des utilisateurs.

Le type uint8 utilise effectivement 8 bits pour stocker des valeurs comprises entre 0 et 255, ce qui le rend idéal pour les petits nombres positifs.

<code>is_active: bool = True
is_paused: bool = False

# 可以翻转布尔值
is_active = not is_active  # 现在是 False</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

L'entier non signé le plus couramment utilisé dans Vyper est uint256. Lorsque vous écrivez price : uint256 = 1000, vous créez une variable qui peut contenir un énorme nombre positif, parfait pour le nombre de jetons ou la valeur wei dans une transaction Ethereum.

  • Décimal

Quand vous devez utiliser des points décimaux pour des calculs précis

<code># 有符号整数(可以为正数或负数)
age: int8 = -5          # 存储范围为 -128 到 127
balance: int256 = 1000  # 较大的范围用于更大的数字</code>
Copier après la connexion
  • Adresse - pour les comptes Ethereum

Nous utilisons des adresses chaque jour pour identifier des emplacements - votre domicile, un magasin ou celui d'un ami. Dans le monde Ethereum, les adresses fonctionnent de la même manière, mais au lieu de pointer vers un emplacement physique, elles pointent vers des portefeuilles numériques et des contrats intelligents. Explorons ce qui rend ces adresses uniques et comment elles fonctionnent dans Vyper.

Qu'est-ce qu'une adresse Ethereum ?

<code># 无符号整数(只有正数)
quantity: uint8 = 255   # 存储范围为 0 到 255
price: uint256 = 1000   # 常用于存储大型正数</code>
Copier après la connexion

Considérez votre adresse Ethereum comme une boîte aux lettres numérique unique. Tout comme votre adresse personnelle garantit que le courrier ne parvient qu'à vous, une adresse Ethereum garantit que les crypto-monnaies et les actifs numériques atteignent leur destination prévue. Dans Vyper, nous utilisons un type spécial appelé adresse pour gérer ces adresses.

Quand vous écrivez quelque chose comme :

<code>price: decimal = 19.99  # 适用于财务计算
tax_rate: decimal = 0.15</code>
Copier après la connexion

Vous créez une variable qui ne peut stocker que des adresses Ethereum valides. Ces adresses commencent toujours par « 0x » suivi de 40 caractères composés de chiffres (0-9) et de lettres (a-f).

Exemples du monde réel Disons que vous construisez un simple contrat de portefeuille numérique. Vous pouvez stocker l'adresse comme ceci :

<code>owner: address = 0x123...  # 存储钱包地址
contract: address = 0xABC...</code>
Copier après la connexion

Utiliser l'adresse Les adresses dans Vyper ont des propriétés spéciales. Vous pouvez vérifier les éléments suivants :

  • Combien de pièces Ether une adresse contient-elle
  • Si une adresse appartient à un contrat intelligent
  • Le code est stocké dans l'adresse du contrat

Par exemple, vérifier le solde d'une adresse est aussi simple que ceci :

<code>owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F</code>
Copier après la connexion

Les adresses nous aident à naviguer dans la blockchain, garantissant que nos actifs et interactions numériques atteignent leur destination prévue en toute sécurité et de manière fiable.

  • tableau d'octets - pour les données brutes

Dans Vyper, des tableaux d'octets sont utilisés pour traiter les données binaires brutes. Considérez-les comme des conteneurs permettant de stocker des informations qu'un ordinateur peut traiter directement. Les tableaux d'octets sont particulièrement utiles lorsque vous travaillez avec des fichiers, des hachages cryptographiques ou des opérations binaires.

<code># 钱包的所有者
owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F



# 可靠的备份地址
backup_wallet: address = 0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199</code>
Copier après la connexion

Tableau d'octets statique Les tableaux d'octets statiques ont une taille fixe et ne peuvent pas être modifiés. Cela le rend simple et efficace.

Exemple : Stockage d'un hachage de taille fixe Supposons que vous disposiez d’un code unique tel qu’une empreinte digitale qui fait toujours 32 octets. Voici comment le stocker dans Vyper.

fixed_code : bytes32 Cela signifie que bytes32 sera toujours de 32 octets.

Tableau d'octets dynamique

Un tableau d'octets dynamique peut accueillir des données de différentes longueurs s'il ne dépasse pas la taille maximale. Cela aide à stocker du contenu comme des messages courts.

Exemple : Enregistrer un message court Supposons que vous souhaitiez enregistrer un message, tel que « Hello, World ! », qui peut contenir jusqu'à 100 octets :

<code>is_active: bool = True
is_paused: bool = False

# 可以翻转布尔值
is_active = not is_active  # 现在是 False</code>
Copier après la connexion
Copier après la connexion
Copier après la connexion
Copier après la connexion

D’accord, c’est tout pour l’étude d’aujourd’hui. Notre prochain article examinera davantage de types de données et comprendra leurs capacités.

Pour en savoir plus sur ce qui précède, consultez la documentation Vyper et les exemples Vyper.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal