目录
什么是数据类型?
数字 - 整数及其变体
首页 后端开发 Python教程 Vyper 数据类型(系列 2)

Vyper 数据类型(系列 2)

Jan 16, 2025 pm 12:28 PM

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中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1665
14
CakePHP 教程
1424
52
Laravel 教程
1322
25
PHP教程
1270
29
C# 教程
1249
24
Python vs.C:申请和用例 Python vs.C:申请和用例 Apr 12, 2025 am 12:01 AM

Python适合数据科学、Web开发和自动化任务,而C 适用于系统编程、游戏开发和嵌入式系统。 Python以简洁和强大的生态系统着称,C 则以高性能和底层控制能力闻名。

Python:游戏,Guis等 Python:游戏,Guis等 Apr 13, 2025 am 12:14 AM

Python在游戏和GUI开发中表现出色。1)游戏开发使用Pygame,提供绘图、音频等功能,适合创建2D游戏。2)GUI开发可选择Tkinter或PyQt,Tkinter简单易用,PyQt功能丰富,适合专业开发。

Python与C:学习曲线和易用性 Python与C:学习曲线和易用性 Apr 19, 2025 am 12:20 AM

Python更易学且易用,C 则更强大但复杂。1.Python语法简洁,适合初学者,动态类型和自动内存管理使其易用,但可能导致运行时错误。2.C 提供低级控制和高级特性,适合高性能应用,但学习门槛高,需手动管理内存和类型安全。

Python和时间:充分利用您的学习时间 Python和时间:充分利用您的学习时间 Apr 14, 2025 am 12:02 AM

要在有限的时间内最大化学习Python的效率,可以使用Python的datetime、time和schedule模块。1.datetime模块用于记录和规划学习时间。2.time模块帮助设置学习和休息时间。3.schedule模块自动化安排每周学习任务。

Python vs.C:探索性能和效率 Python vs.C:探索性能和效率 Apr 18, 2025 am 12:20 AM

Python在开发效率上优于C ,但C 在执行性能上更高。1.Python的简洁语法和丰富库提高开发效率。2.C 的编译型特性和硬件控制提升执行性能。选择时需根据项目需求权衡开发速度与执行效率。

Python:自动化,脚本和任务管理 Python:自动化,脚本和任务管理 Apr 16, 2025 am 12:14 AM

Python在自动化、脚本编写和任务管理中表现出色。1)自动化:通过标准库如os、shutil实现文件备份。2)脚本编写:使用psutil库监控系统资源。3)任务管理:利用schedule库调度任务。Python的易用性和丰富库支持使其在这些领域中成为首选工具。

Python标准库的哪一部分是:列表或数组? Python标准库的哪一部分是:列表或数组? Apr 27, 2025 am 12:03 AM

pythonlistsarepartofthestAndArdLibrary,herilearRaysarenot.listsarebuilt-In,多功能,和Rused ForStoringCollections,而EasaraySaraySaraySaraysaraySaraySaraysaraySaraysarrayModuleandleandleandlesscommonlyusedDduetolimitedFunctionalityFunctionalityFunctionality。

学习Python:2小时的每日学习是否足够? 学习Python:2小时的每日学习是否足够? Apr 18, 2025 am 12:22 AM

每天学习Python两个小时是否足够?这取决于你的目标和学习方法。1)制定清晰的学习计划,2)选择合适的学习资源和方法,3)动手实践和复习巩固,可以在这段时间内逐步掌握Python的基本知识和高级功能。

See all articles