Sebelum ini, kami telah membincangkan mengapa Vyper adalah pengubah permainan kerana ia merupakan salah satu bahasa pembangunan kontrak pintar yang paling pesat berkembang.
Kami juga merangkumi beberapa asas seperti Pragma dan Pembina. Anda boleh membacanya di sini.
Hari ini kita akan mendalami jenis data dan cara ia berfungsi.
Apakah jenis data?
Jenis data membantu kami menyusun maklumat yang berbeza dalam kod kami, sama seperti kami mengisih item ke lokasi tertentu di rumah.
Jenis ini ditetapkan sebelum program dijalankan. Sama seperti bekas yang direka bentuk untuk cecair tidak sesuai untuk menyimpan pepejal, setiap pembolehubah dalam Vyper hanya boleh menyimpan jenis data yang direka bentuk.
Apabila menulis kod, kita perlu menentukan jenis data yang akan dipegang oleh setiap pembolehubah - sama ada nombor untuk pengiraan, teks untuk nama atau benar/salah untuk keputusan mudah. Jenis ini memastikan program kami mengendalikan maklumat dengan betul, menghalang ralat seperti cuba mendarab nama seseorang atau menambah huruf bersama-sama.
Memahami jenis data dalam Vyper
- Boolean - mudah benar/salah
Fikirkan nilai Boolean seperti suis lampu - ia hanya boleh berada dalam dua keadaan: benar atau salah. Kami menggunakannya dalam kod kami untuk membuat keputusan ya/tidak.
<code>is_active: bool = True is_paused: bool = False # 可以翻轉(zhuǎn)布爾值 is_active = not is_active # 現(xiàn)在是 False</code>
Pengendali tertentu boleh digunakan dengan berkesan dengan nilai boolean, termasuk tidak, atau == dan !=. Ini bermakna kita boleh menggunakannya untuk membuktikan kebenaran atau kepalsuan.
**運算符** | **描述** |
---|---|
not x | 邏輯否定 |
x and y | 邏輯合取 |
x or y | 邏輯析取 |
x == y | 相等 |
x != y | 不相等 |
-
bukan x - balikkan nilai benar/salah ke sebaliknya
dikunci_pintu = Benar
is_door_unlocked = not is_door_locked # Keputusan: Salah
Ia seperti berkata "bertentangan" - jika pintu dikunci, maka tidak berkunci bermakna ia terbuka.
-
x dan y - kedua-dua syarat mestilah benar
mempunyai_tiket = Benar
has_id = Benar
can_board_plane = has_ticket and has_id # Keputusan: Benar
Sama seperti anda memerlukan tiket dan ID untuk menaiki kapal terbang, kedua-dua nilai mesti benar untuk hasilnya benar.
-
x atau y - sekurang-kurangnya satu syarat mesti benar.
mempunyai_tunai = Palsu
has_credit_card = Benar
boleh_bayar = ada_tunai atau ada_kad_kredit # Keputusan: Benar
Sebagai contoh, apabila membayar, anda boleh menggunakan wang tunai atau kad kredit;
-
x == y - menyemak sama ada dua nilai adalah sama
kata laluan = "secret123"
entri = "rahsia123"
is_correct = kata laluan == entri # Keputusan: Benar
Ia seperti menyemak sama ada dua kekunci adalah sama.
-
x != y - menyemak sama ada dua nilai berbeza
harga_jangka = 100
harga_sebenar = 90
price_changed = expected_price != actual_price # Keputusan: Benar
Ini seperti menyemak untuk melihat sama ada sesuatu berbeza, seperti perasan bahawa harga adalah berbeza daripada yang dijangkakan. Pengendali ini membantu anda membuat keputusan Boolean yang logik.
Nombor - Integer dan variannya
Apabila menggunakan nombor dalam kontrak pintar, Vyper menyediakan dua kaedah asas untuk mengendalikan integer: integer bertanda dan integer tidak bertanda. Setiap kaedah mempunyai tujuan tertentu, dan memahami perbezaannya adalah penting untuk menulis kod yang cekap dan selamat.
- Integer yang ditandatangani
Integer yang ditandatangani mungkin jenis nombor yang paling serba boleh dalam Vyper, yang mampu mewakili nilai positif dan negatif. Fikirkan akaun bank - anda boleh membuat deposit (nombor positif) dan mengeluarkan wang (nombor negatif). Di sinilah integer yang ditandatangani bersinar. Apabila anda mengisytiharkan pembolehubah seperti umur: int8 = -5, anda memberitahu Vyper untuk menempah 8 bit ruang, yang boleh memuatkan sebarang nombor antara -128 dan 127.
<code>is_active: bool = True is_paused: bool = False # 可以翻轉(zhuǎn)布爾值 is_active = not is_active # 現(xiàn)在是 False</code>
Untuk nilai yang lebih besar, Vyper menyediakan kapasiti storan yang lebih besar. Jenis int256 biasanya digunakan untuk sejumlah besar operasi berangka dan boleh mengendalikan nombor yang lebih besar. Pertimbangkan untuk menjejaki untung rugi syarikat: baki: int256 = 1000. Ini boleh mewakili pergerakan kewangan yang besar dalam kedua-dua arah.
- Integer tidak ditandatangani
Sesetengah nilai dalam dunia nyata tidak pernah negatif. Anda tidak boleh mempunyai -3 epal atau -5 pengguna. Di sinilah integer yang tidak ditandatangani dimainkan. Pernyataan seperti kuantiti: uint8 = 255 sesuai untuk sistem inventori atau pengiraan pengguna.
Jenis uint8 berkesan menggunakan 8 bit untuk menyimpan nilai antara 0 dan 255, menjadikannya sesuai untuk nombor positif yang kecil.
<code>is_active: bool = True is_paused: bool = False # 可以翻轉(zhuǎn)布爾值 is_active = not is_active # 現(xiàn)在是 False</code>
Integer tidak bertanda yang paling biasa digunakan dalam Vyper ialah uint256. Apabila anda menulis harga: uint256 = 1000 anda mencipta pembolehubah yang boleh memegang nombor positif yang besar, sesuai untuk bilangan token atau nilai wei dalam transaksi Ethereum.
- Perpuluhan
Apabila anda perlu menggunakan titik perpuluhan untuk pengiraan yang tepat
<code># 有符號整數(shù)(可以為正數(shù)或負數(shù)) age: int8 = -5 # 存儲范圍為 -128 到 127 balance: int256 = 1000 # 較大的范圍用于更大的數(shù)字</code>
- Alamat - untuk akaun Ethereum
Kami menggunakan alamat setiap hari untuk mengenal pasti lokasi - rumah anda, kedai atau rumah rakan. Dalam dunia Ethereum, alamat berfungsi dengan sama, tetapi bukannya menunjuk ke lokasi fizikal, alamat tersebut menunjuk kepada dompet digital dan kontrak pintar. Mari terokai perkara yang menjadikan alamat ini unik dan cara ia berfungsi dalam Vyper.
Apakah alamat Ethereum?
<code># 無符號整數(shù)(只有正數(shù)) quantity: uint8 = 255 # 存儲范圍為 0 到 255 price: uint256 = 1000 # 常用于存儲大型正數(shù)</code>
Fikirkan alamat Ethereum anda sebagai peti mel digital yang unik. Sama seperti alamat rumah anda memastikan bahawa mel hanya sampai kepada anda, alamat Ethereum memastikan mata wang kripto dan aset digital mencapai destinasi yang dimaksudkan. Dalam Vyper kami menggunakan jenis khas yang dipanggil alamat untuk mengendalikan alamat ini.
Apabila anda menulis sesuatu seperti:
<code>price: decimal = 19.99 # 適用于財務(wù)計算 tax_rate: decimal = 0.15</code>
Anda sedang mencipta pembolehubah yang hanya boleh menyimpan alamat Ethereum yang sah. Alamat ini sentiasa bermula dengan "0x" diikuti dengan 40 aksara yang terdiri daripada nombor (0-9) dan huruf (a-f).
Contoh dunia sebenar Katakan anda sedang membina kontrak dompet digital mudah. Anda boleh menyimpan alamat seperti ini:
<code>owner: address = 0x123... # 存儲錢包地址 contract: address = 0xABC...</code>
Gunakan alamat Alamat dalam Vyper mempunyai sifat istimewa. Anda boleh menyemak perkara berikut:
- Berapa banyak syiling Eter yang dimiliki oleh satu alamat
- Sama ada alamat tergolong dalam kontrak pintar
- Kod disimpan dalam alamat kontrak
Sebagai contoh, menyemak baki alamat semudah ini:
<code>owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F</code>
Alamat membantu kami menavigasi rantaian blok, memastikan aset digital dan interaksi kami sampai ke destinasi yang dimaksudkan dengan selamat dan boleh dipercayai.
- tatasusunan bait - untuk data mentah
Dalam Vyper, tatasusunan bait digunakan untuk memproses data binari mentah. Anggap mereka sebagai bekas untuk menyimpan maklumat yang boleh diproses secara langsung oleh komputer. Tatasusunan bait amat berguna apabila bekerja dengan fail, cincang kriptografi atau operasi binari.
<code># 錢包的所有者 owner: address = 0x71C7656EC7ab88b098defB751B7401B5f6d8976F # 可靠的備份地址 backup_wallet: address = 0x8626f6940E2eb28930eFb4CeF49B2d1F2C9C1199</code>
Susun atur bait statik Tatasusunan bait statik mempunyai saiz tetap dan tidak boleh diubah. Ini menjadikannya mudah dan cekap.
Contoh: Menyimpan cincang saiz tetap Katakan anda mempunyai kod unik seperti cap jari yang sentiasa sepanjang 32 bait. Begini cara menyimpannya dalam Vyper.
fixed_code: bytes32 Ini bermakna bytes32 akan sentiasa menjadi 32 bait.
Susun atur bait dinamik
Susun atur bait dinamik boleh memuatkan data dengan panjang yang berbeza jika ia tidak melebihi saiz maksimum. Ia membantu dalam menyimpan kandungan seperti mesej ringkas.
Contoh: Simpan mesej ringkas Katakan anda ingin menyimpan mesej, seperti "Hello, World!", yang boleh mencapai sehingga 100 bait panjang:
<code>is_active: bool = True is_paused: bool = False # 可以翻轉(zhuǎn)布爾值 is_active = not is_active # 現(xiàn)在是 False</code>
Baiklah, itu sahaja untuk kajian hari ini. Artikel seterusnya kami akan mengkaji lebih banyak jenis data dan memahami keupayaannya.
Untuk membaca lebih lanjut perkara di atas, lihat dokumentasi Vyper dan contoh Vyper.
Atas ialah kandungan terperinci Jenis Data Vyper (Siri 2). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Polimorfisme adalah konsep teras dalam pengaturcaraan berorientasikan objek Python, merujuk kepada "satu antara muka, pelbagai pelaksanaan", yang membolehkan pemprosesan bersatu pelbagai jenis objek. 1. Polimorfisme dilaksanakan melalui penulisan semula kaedah. Subkelas boleh mentakrifkan semula kaedah kelas induk. Sebagai contoh, kaedah bercakap () kelas haiwan mempunyai pelaksanaan yang berbeza dalam subkelas anjing dan kucing. 2. Penggunaan praktikal polimorfisme termasuk memudahkan struktur kod dan meningkatkan skalabilitas, seperti memanggil kaedah cabutan () secara seragam dalam program lukisan grafik, atau mengendalikan tingkah laku umum watak -watak yang berbeza dalam pembangunan permainan. 3. Polimorfisme pelaksanaan Python perlu memenuhi: Kelas induk mentakrifkan kaedah, dan kelas kanak -kanak mengatasi kaedah, tetapi tidak memerlukan warisan kelas induk yang sama. Selagi objek melaksanakan kaedah yang sama, ini dipanggil "jenis itik". 4. Perkara yang perlu diperhatikan termasuk penyelenggaraan

Iterator adalah objek yang melaksanakan kaedah __iter __ () dan __Next __ (). Penjana adalah versi Iterator yang dipermudahkan, yang secara automatik melaksanakan kaedah ini melalui kata kunci hasil. 1. Iterator mengembalikan elemen setiap kali dia memanggil seterusnya () dan melemparkan pengecualian berhenti apabila tidak ada lagi elemen. 2. Penjana menggunakan definisi fungsi untuk menghasilkan data atas permintaan, menjimatkan memori dan menyokong urutan tak terhingga. 3. Menggunakan Iterator apabila memproses set sedia ada, gunakan penjana apabila menghasilkan data besar secara dinamik atau penilaian malas, seperti garis pemuatan mengikut baris apabila membaca fail besar. NOTA: Objek yang boleh diperolehi seperti senarai bukanlah pengaliran. Mereka perlu dicipta semula selepas pemalar itu sampai ke penghujungnya, dan penjana hanya boleh melintasi sekali.

Kunci untuk menangani pengesahan API adalah untuk memahami dan menggunakan kaedah pengesahan dengan betul. 1. Apikey adalah kaedah pengesahan yang paling mudah, biasanya diletakkan dalam tajuk permintaan atau parameter URL; 2. BasicAuth menggunakan nama pengguna dan kata laluan untuk penghantaran pengekodan Base64, yang sesuai untuk sistem dalaman; 3. OAuth2 perlu mendapatkan token terlebih dahulu melalui client_id dan client_secret, dan kemudian bawa bearertoken dalam header permintaan; 4. Untuk menangani tamat tempoh token, kelas pengurusan token boleh dikemas dan secara automatik menyegarkan token; Singkatnya, memilih kaedah yang sesuai mengikut dokumen dan menyimpan maklumat utama adalah kunci.

Kaedah yang sama untuk melintasi dua senarai secara serentak dalam Python adalah menggunakan fungsi zip (), yang akan memasangkan beberapa senarai dalam rangka dan menjadi yang paling singkat; Jika panjang senarai tidak konsisten, anda boleh menggunakan itertools.zip_longest () untuk menjadi yang paling lama dan mengisi nilai yang hilang; Digabungkan dengan penghitungan (), anda boleh mendapatkan indeks pada masa yang sama. 1.Zip () adalah ringkas dan praktikal, sesuai untuk lelaran data berpasangan; 2.zip_longest () boleh mengisi nilai lalai apabila berurusan dengan panjang yang tidak konsisten; 3.enumerate (zip ()) boleh mendapatkan indeks semasa traversal, memenuhi keperluan pelbagai senario kompleks.

Inpython, iteratorsareObjectsThatallowLoopingthroughCollectionsByImplementing__iter __ () dan__Next __ ()

Menegaskan adalah alat pernyataan yang digunakan dalam Python untuk menyahpepijat, dan melemparkan pernyataan apabila keadaan tidak dipenuhi. Sintaksnya adalah menegaskan keadaan ditambah maklumat ralat pilihan, yang sesuai untuk pengesahan logik dalaman seperti pemeriksaan parameter, pengesahan status, dan lain -lain, tetapi tidak boleh digunakan untuk pemeriksaan input keselamatan atau pengguna, dan harus digunakan bersamaan dengan maklumat yang jelas. Ia hanya tersedia untuk debugging tambahan dalam peringkat pembangunan dan bukannya menggantikan pengendalian pengecualian.

TypehintsinpythonsolvetheproblemofambiguityandpotentialbugsindynamiciallytypodeByallowingDeveloperStospecifyExpectedTypes.theyenhancereadability, enablearlybugdetection, andimprovetoLiaSareAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeAdeSareadDeSareadDeSareadDeSareadDeSaread

Untuk mewujudkan API moden dan cekap menggunakan Python, FastAPI disyorkan; Ia berdasarkan kepada jenis python standard yang diminta dan secara automatik dapat menghasilkan dokumen, dengan prestasi yang sangat baik. Selepas memasang FastAPI dan Asgi Server UVicorn, anda boleh menulis kod antara muka. Dengan menentukan laluan, menulis fungsi pemprosesan, dan data yang kembali, API boleh dibina dengan cepat. FastAPI menyokong pelbagai kaedah HTTP dan menyediakan sistem dokumentasi Swaggersui dan Redoc yang dihasilkan secara automatik. Parameter URL boleh ditangkap melalui definisi laluan, manakala parameter pertanyaan boleh dilaksanakan dengan menetapkan nilai lalai untuk parameter fungsi. Penggunaan rasional model Pydantic dapat membantu meningkatkan kecekapan dan ketepatan pembangunan.
