首頁 > 後端開發 > Python教學 > Vyper 資料型態(系列 2)

Vyper 資料型態(系列 2)

Barbara Streisand
發布: 2025-01-16 12:28:57
原創
684 人瀏覽過

Vyper Data Types (Series 2)

之前,我們探討了 Vyper 為什麼是遊戲規則的改變者,因為它是最快發展的智能合約開發語言之一。

我們也探討了一些基礎知識,例如 Pragma 和 Constructor。您可以在這裡閱讀。

今天,我們將深入研究資料類型及其工作原理。

什麼是資料型態?

資料類型幫助我們組織代碼中的不同信息,就像我們在家裡將物品分類到特定位置一樣。

這些類型在程式運行之前就已設定。就像設計用於液體的容器不適合儲存固體一樣,Vyper 中的每個變數只能儲存其設計的資料類型。

編寫程式碼時,我們需要指定每個變數將保存什麼資料類型——無論是用於計算的數字、用於名稱的文本,還是用於簡單決策的真/假。這些類型確保我們的程式正確處理訊息,防止出現諸如嘗試將某人的姓名相乘或將字母相加之類的錯誤。

理解 Vyper 中的資料型別

  • 布林值 - 簡單真/假

將布林值想像成電燈開關-它們只能處於兩種狀態:真或假。我們在程式碼中使用它們來做出是/否決策。

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

# 可以翻转布尔值
is_active = not is_active  # 现在是 False</code>
登入後複製
登入後複製
登入後複製
登入後複製

某些運算子可以有效地與布林值一起使用,包括 not、或 == 和 !=。這意味著我們可以用它們來證明真假。

**运算符** **描述**
not x 逻辑否定
x and y 逻辑合取
x or y 逻辑析取
x == y 相等
x != y 不相等
將這些運算子視為在程式碼中做出決策的方法:
  • not x - 將真/假值翻轉為其相反值

    is_door_locked = True
    is_door_unlocked = not is_door_locked # 結果:False

這就像說「相反的」--如果門是鎖著的,那麼不鎖著就意味著開著。

  • x and y - 兩個條件都必須為真

    has_ticket = True
    has_id = True
    can_board_plane = has_ticket and has_id # 結果:True

就像你需要機票和身分證才能登機一樣,兩個值都必須為真,結果才能為真。

  • x or y - 至少一個條件必須為真。

    has_cash = False
    has_credit_card = True
    can_pay = has_cash or has_credit_card # 結果:True

例如,付款時,可以使用現金或信用卡;你需要其中一個為真。

  • x == y - 檢查兩個值是否相同

    password = "secret123"
    entry = "secret123"
    is_correct = password == entry # 結果:True

這就像檢查兩把鑰匙是否相同。

  • x != y - 檢查兩個值是否不同

    expected_price = 100
    actual_price = 90
    price_changed = expected_price != actual_price # 結果:True

這就像檢查某事物是否不同,例如注意到價格與預期不同。這些運算符可以幫助您做出邏輯布林值決策。

數字 - 整數及其變體

在智慧合約中使用數字時,Vyper 提供了兩種處理整數的基本方法:有符號整數和無符號整數。每種方法都有其特定的用途,了解它們的差異對於編寫高效且安全的程式碼至關重要。

  • 有符號整數

有符號整數可能是 Vyper 中用途最廣泛的數字類型,能夠表示正值和負值。想像銀行帳戶-您可以進行存款(正數)和提款(負數)。這就是有符號整數大放異彩的地方。當您聲明一個變量,例如 age: int8 = -5 時,您正在告訴 Vyper 預留 8 位元空間,該空間可以容納 -128 到 127 之間的任何數字。

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

# 可以翻转布尔值
is_active = not is_active  # 现在是 False</code>
登入後複製
登入後複製
登入後複製
登入後複製

對於較大的值,Vyper 提供了更大的儲存容量。 int256 類型通常用於大量的數值運算,可以處理更大的數字。考慮追蹤公司的損益:balance: int256 = 1000。這可以表示任一方向上的大量財務變動。

  • 無符號整數

現實世界中的某些數值永遠不會是負數。您不能有 -3 個蘋果或 -5 個使用者。這就是無符號整數發揮作用的地方。像 quantity: uint8 = 255 這樣的聲明非常適合庫存系統或使用者計數。

uint8 類型有效地使用 8 位元來儲存 0 到 255 之間的值,使其成為小型正數的理想選擇。

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

# 可以翻转布尔值
is_active = not is_active  # 现在是 False</code>
登入後複製
登入後複製
登入後複製
登入後複製

Vyper 中最常使用的無符號整數是 uint256。當您編寫 price: uint256 = 1000 時,您將建立一個可以容納巨大正數的變量,非常適合代幣數量或以太坊交易中的 wei 值。

  • 小數

當您需要使用小數點進行精確計算時

<code># 有符号整数(可以为正数或负数)
age: int8 = -5          # 存储范围为 -128 到 127
balance: int256 = 1000  # 较大的范围用于更大的数字</code>
登入後複製
  • 地址 - 用於以太坊帳戶

我們每天都會使用地址來識別位置—您的家、商店或朋友的家。在以太坊世界中,地址的工作方式類似,但它們並非指向實體位置,而是指向數位錢包和智能合約。讓我們探討一下這些地址的獨特性以及它們在 Vyper 中的工作方式。

什麼是以太坊地址?

<code># 无符号整数(只有正数)
quantity: uint8 = 255   # 存储范围为 0 到 255
price: uint256 = 1000   # 常用于存储大型正数</code>
登入後複製

將以太坊地址想像成一個獨特的數位郵箱。就像您的家庭住址確保郵件只到達您手中一樣,以太坊地址確保加密貨幣和數位資產到達其預期的目的地。在 Vyper 中,我們使用稱為 address 的特殊類型來處理這些位址。

當您撰寫類似以下內容時:

<code>price: decimal = 19.99  # 适用于财务计算
tax_rate: decimal = 0.15</code>
登入後複製

您正在建立一個只能儲存有效以太坊地址的變數。這些位址始終以「0x」開頭,後面跟著 40 個由數字 (0-9) 和字母 (a-f) 組成的字元。

現實世界中的範例 假設您正在建立一個簡單的數位錢包合約。您可以像這樣儲存位址:

<code>owner: address = 0x123...  # 存储钱包地址
contract: address = 0xABC...</code>
登入後複製

使用地址 Vyper 中的位址具有特殊屬性。您可以檢查以下內容:

  • 一個地址持有多少以太幣
  • 一個位址是否屬於智能合約
  • 程式碼儲存在合約位址中

例如,檢查地址的餘額就像這樣簡單:

<code>owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F</code>
登入後複製

地址幫助我們瀏覽區塊鏈,確保我們的數位資產和互動安全可靠地到達其預期目的地。

  • 位元組數組 - 用於原始資料

在 Vyper 中,位元組數組用於處理原始二進位資料。將它們想像成用於儲存電腦可以直接處理的資訊的容器。位元組數組在處理檔案、加密雜湊或二進位運算時特別有用。

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



# 可靠的备份地址
backup_wallet: address = 0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199</code>
登入後複製

靜態位元組數組 靜態位元組數組具有固定大小,無法變更。這使其簡單且高效。

範例:儲存固定大小的雜湊值 假設您有一個唯一的程式碼,例如始終為 32 個位元組長的指紋。以下是如何在 Vyper 中儲存它。

fixed_code: bytes32 這表示 bytes32 將始終為 32 個位元組。

動態位元組數組

如果動態位元組陣列不超過最大大小,則可以容納不同長度的資料。它有助於儲存諸如簡短訊息之類的內容。

範例:儲存簡短訊息 假設您想保存一條訊息,例如“Hello, World!”,其長度最多可達 100 個位元組:

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

# 可以翻转布尔值
is_active = not is_active  # 现在是 False</code>
登入後複製
登入後複製
登入後複製
登入後複製

好了,今天學習就到這裡。我們的下一篇文章將檢查更多資料類型,並了解它們的功能。

要閱讀更多上述內容,請查看 Vyper 文件和 Vyper 範例。

以上是Vyper 資料型態(系列 2)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板