Maison >développement back-end >Tutoriel Python >Types de données Vyper (série 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.
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
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>
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 | 不相等 |
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.
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.
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>
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.
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>
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.
Quand vous devez utiliser des points décimaux pour des calculs précis
<code># 有符号整数(可以为正数或负数) age: int8 = -5 # 存储范围为 -128 到 127 balance: int256 = 1000 # 较大的范围用于更大的数字</code>
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>
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>
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>
Utiliser l'adresse Les adresses dans Vyper ont des propriétés spéciales. Vous pouvez vérifier les éléments suivants :
Par exemple, vérifier le solde d'une adresse est aussi simple que ceci :
<code>owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F</code>
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.
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>
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>
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!