>백엔드 개발 >파이썬 튜토리얼 >Vyper 데이터 유형(시리즈 2)

Vyper 데이터 유형(시리즈 2)

Barbara Streisand
Barbara Streisand원래의
2025-01-16 12:28:57687검색

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 = 참
    is_door_unlocked = is_door_locked가 아님 # 결과: False

'반대'라고 말하는 것과 같습니다. 문이 잠겨 있으면 잠금이 해제된다는 것은 문이 열려 있다는 의미입니다.

  • x와 y - 두 조건이 모두 참이어야 합니다

    has_ticket = True
    has_id = 참
    can_board_plane = has_ticket 및 has_id # 결과: True

비행기에 탑승하려면 티켓과 신분증이 필요한 것처럼 두 값이 모두 true여야 결과가 true가 됩니다.

  • x 또는 y - 최소한 하나의 조건이 true여야 합니다.

    has_cash = 거짓
    has_credit_card = 참
    can_pay = has_cash 또는 has_credit_card # 결과: True

예를 들어 결제 시 현금이나 신용카드 중 하나를 사용해야 합니다.

  • x == y - 두 값이 동일한지 확인

    비밀번호 = "secret123"
    항목 = "secret123"
    is_corlect = 비밀번호 == 항목 # 결과: True

두 개의 키가 같은지 확인하는 것과 같습니다.

  • x != y - 두 값이 다른지 확인

    예상 가격 = 100
    실제 가격 = 90
    가격 변경 = 예상 가격 != 실제 가격 # 결과: True

이것은 가격이 예상과 다르다는 것을 알아차리는 등 뭔가 다른지 확인하는 것과 같습니다. 이러한 연산자는 논리적 부울 결정을 내리는 데 도움이 됩니다.

숫자 - 정수 및 그 변형

스마트 계약에서 숫자를 사용할 때 Vyper는 정수를 처리하는 두 가지 기본 방법, 즉 부호 있는 정수와 부호 없는 정수를 제공합니다. 각 방법에는 고유한 목적이 있으며, 효율적이고 안전한 코드를 작성하려면 차이점을 이해하는 것이 중요합니다.

  • 부호 있는 정수

부호 있는 정수는 아마도 Vyper에서 가장 다재다능한 숫자 유형일 것이며 양수 값과 음수 값을 모두 나타낼 수 있습니다. 은행 계좌를 생각해 보세요. 예금(양수)을 할 수 있고 돈을 인출(음수)할 수 있습니다. 부호 있는 정수가 빛나는 곳은 바로 여기입니다. age: int8 = -5와 같은 변수를 선언하면 Vyper에게 -128에서 127 사이의 숫자를 저장할 수 있는 8비트 공간을 예약하도록 지시하는 것입니다.

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

# 可以翻转布尔值
is_active = not is_active  # 现在是 False</code>

더 큰 값의 경우 Vyper는 더 큰 저장 용량을 제공합니다. int256 유형은 일반적으로 많은 숫자 연산에 사용되며 더 큰 숫자를 처리할 수 있습니다. 회사의 손익을 추적해 보세요. 잔액: int256 = 1000. 이는 어느 방향으로든 큰 재정적 움직임을 나타낼 수 있습니다.

  • 부호 없는 정수

현실 세계의 일부 가치는 결코 부정적이지 않습니다. -3 사과 또는 -5 사용자를 가질 수 없습니다. 부호 없는 정수가 작동하는 곳입니다. 수량: uint8 = 255와 같은 설명은 인벤토리 시스템이나 사용자 계산에 적합합니다.

uint8 유형은 8비트를 효과적으로 사용하여 0에서 255 사이의 값을 저장하므로 작은 양수에 이상적입니다.

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

# 可以翻转布尔值
is_active = not is_active  # 现在是 False</code>

Vyper에서 가장 일반적으로 사용되는 부호 없는 정수는 uint256입니다. 가격: uint256 = 1000을 작성하면 이더리움 거래의 토큰 수 또는 wei 값에 적합한 거대한 양수를 보유할 수 있는 변수를 생성합니다.

  • 십진수

정확한 계산을 위해 소수점을 사용해야 할 때

<code># 有符号整数(可以为正数或负数)
age: int8 = -5          # 存储范围为 -128 到 127
balance: int256 = 1000  # 较大的范围用于更大的数字</code>
  • 주소 - 이더리움 계정용

우리는 매일 주소를 사용하여 집, 상점, 친구 집 등 위치를 식별합니다. Ethereum 세계에서 주소는 비슷하게 작동하지만 물리적 위치를 가리키는 대신 디지털 지갑과 스마트 계약을 가리킵니다. 이러한 주소를 독특하게 만드는 요소와 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"로 시작하고 그 뒤에 숫자(0-9)와 문자(a-f)로 구성된 40자가 옵니다.

실제 사례 간단한 디지털 지갑 계약을 구축한다고 가정해 보겠습니다. 다음과 같이 주소를 저장할 수 있습니다.

<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바이트임을 의미합니다.

동적 바이트 배열

동적 바이트 배열은 최대 크기를 초과하지 않는 한 다양한 길이의 데이터를 수용할 수 있습니다. 짧은 메시지와 같은 콘텐츠를 저장하는 데 도움이 됩니다.

예: 짧은 메시지 저장 최대 100바이트 길이의 "Hello, World!"와 같은 메시지를 저장한다고 가정해 보겠습니다.

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

# 可以翻转布尔值
is_active = not is_active  # 现在是 False</code>

자, 오늘의 공부는 여기까지입니다. 다음 기사에서는 더 많은 데이터 유형을 조사하고 그 기능을 이해하겠습니다.

위의 내용을 더 자세히 읽으려면 Vyper 문서와 Vyper 예제를 확인하세요.

위 내용은 Vyper 데이터 유형(시리즈 2)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.