Rumah pembangunan bahagian belakang Tutorial Python Penggunaan Operator ** Dengan Kelas Python dan FastAPI Pydantic

Penggunaan Operator ** Dengan Kelas Python dan FastAPI Pydantic

Aug 31, 2024 pm 12:32 PM

The Use of The ** Operator With Python and FastAPI Pydantic Classes

Pengendali ** dalam Python adalah kontekstual atau bergantung pada apa yang digunakan dengannya; apabila digunakan dengan nombor (biasanya antara dua nombor), ia berfungsi sebagai pengendali eksponen. Walau bagaimanapun dalam artikel ini kita akan melihat konteks lain yang digunakan. Kami akan melihat penggunaannya sebagai pengendali pembongkaran, digunakan untuk membongkar kamus Python.

Sesiapa yang telah mengekod dalam Python mesti pernah melihat **kwargs. Pendek untuk hujah kata kunci. Ia adalah argumen yang dihantar kepada fungsi dalam sintaks kunci = nilai. kwargs digunakan apabila kita tidak mengetahui bilangan hujah kata kunci yang akan dihantar ke dalam fungsi kita. **kwargs ialah jenis kamus dan sama baiknya dengan menghantar kamus ke dalam fungsi. Kamus ini mengandungi:

  • Kunci yang sepadan dengan nama hujah.
  • Nilai yang sepadan dengan nilai hujah.

Berdasarkan logik ini, dalam artikel ini, kita akan melihat kes penggunaannya dalam membina Python sehingga kes penggunaannya dalam FastAPI dengan kelas Pydantic.

Perkara berikut akan dilihat.

  • Gunakan dengan fungsi Python.
  • Gunakan dengan kelas Python.
  • Gunakan dengan kelas FastAPI Pydantic.
  • Kebaikan penggunaan.

Nota: Tidak wajib menggunakan kwarg, anda boleh menggunakan mana-mana konvensyen penamaan lain cth. **myArgs, **apa-apa sahaja dll.

Prasyarat

  • Pengetahuan tentang kelas dan fungsi Python.
  • Beberapa pengetahuan asas FastAPI.

Gunakan dengan Fungsi Python

Dalam contoh ini, kami akan mempunyai beberapa argumen kata kunci yang dihantar ke fungsi sebagai **kwargs dan memandangkan **kwargs ialah kamus, kami akan menggunakan kaedah kamus .items() padanya. Kaedah .items() mengembalikan objek paparan yang memaparkan senarai pasangan tuple nilai kunci kamus.

def print_details(**kwargs):
    # kwargs is a dictionary containing all keyword arguments
    print(type(kwargs))  # Output: <class 'dict'>
    print(kwargs.items())  # Displays the dictionary items (key-value pairs)

    # Iterate over the key-value pairs in kwargs
    for key, value in kwargs.items():
        print(f"{key}: {value}")

# Calling the function with multiple keyword arguments
print_details(name="Stephen", age=30, profession="Software Developer")

Output

<class 'dict'>

dict_items([('name', 'Stephen'), ('age', 30), ('profession', 'Software Developer')])

name: Stephen
age: 30
profession: Software Developer

Gunakan dengan Kelas Python

Seperti yang mesti kita perhatikan, kelas Python boleh dipanggil; ini bermakna kita boleh memanggil kelas dengan cara yang sama kita memanggil fungsi. Memanggil kelas mencipta tika (objek) kelas itu.

class Tech:
    def __init__(self, dev, devops, design):
        self.dev = dev
        self.devops = devops
        self.design = design
# Call class to create an instance
tech = Tech(dev, devops, design)                

Memanggil Tech dengan nilai argumen akan mengembalikan teknologi contoh.

Dalam kelas, operator ** membongkar kamus yang membenarkan setiap pasangan nilai kunci dihantar sebagai argumen bernama kepada pembina kelas.

Dalam contoh untuk bahagian ini, kami mentakrifkan kelas. Kami mentakrifkan kamus dengan sifat yang sepadan dengan parameter kelas. Kami kemudian membuat contoh kelas, menggunakan ** untuk membongkar kamus.

class Tech:
    def __init__(self, dev, devops, design):
        self.dev = dev
        self.devops = devops
        self.design = design

# Define a dictionary with properties matching the class's parameters
tech_team = {
    'dev': 'Stephen',
    'devops': ['Jenny', 'Rakeem', 'Stanley'],
    'design': 'Carlos'
}

# Create an instance of the class using ** to unpack the dictionary

tech = Tech(**tech_team)
print(tech.dev)
print(tech.devops)
print(tech.design)

Kod di atas adalah bersamaan dengan:

class Tech:
    def __init__(self, dev, devops, design):
        self.dev = dev
        self.devops = devops
        self.design = design


# Define a dictionary with properties matching the class's parameters
tech_team = {
    'dev': 'Stephen',
    'devops': ['Jenny', 'Rakeem', 'Stanley'],
    'design': 'Carlos'
}

# Create an instance of the class 
tech = Tech(
    dev = tech_team["dev"],
   devops = tech_team["devops"],
  design = tech_team["design"]
)

print(tech.dev)
print(tech.devops)
print(tech.design)

Ini kerana:

tech = Tech(**Tech_team)

Sama seperti:

tech = Tech(
    dev = tech_team["dev"],
   devops = tech_team["devops"],
  design = tech_team["design"]
)

Gunakan dengan Kelas FastAPI Pydantic

Pydantic ialah perpustakaan Python yang digunakan untuk pengesahan data, malah disebut-sebut sebagai perpustakaan pengesahan data yang paling banyak digunakan untuk Python, dengan menggunakan sistem pembayang jenis Python3. Pydantic ini digunakan dalam FastAPI membantu kami mentakrifkan model data yang secara ringkasnya ialah kelas.

Dalam kelas kami, kami boleh menentukan jenis untuk atribut atau medan kami cth str, int, float, List. Apabila data diberikan, Pydantic menyemak untuk memastikan ia sepadan.

Selain daripada Pydantic ini membantu dengan penghuraian dan penyiaran. Serialisasi ialah proses menghantar objek data ke dalam format yang mudah dihantar; contohnya objek atau tatasusunan ke dalam format JSON untuk kesederhanaan dan kemudahan penghuraian.

Pydantic mempunyai kelas BaseModel yang mewarisi kelas yang ditentukan. Di bawah ialah contoh model Pydantic:

from pydantic import BaseModel, EmailStr
# We import the BaseModel and Emailstr type from Pydantic

class UserInDB(BaseModel):
    username: str
    hashed_password: str
    email: EmailStr
    full_name: Union[str, None] = None

Andaikan kita ada:

class Item(BaseModel):
   name:str
   price:float

app = FastAPI()
@app.post("/items/")
async def create_item(item:Item):
   return item

Dalam kod di atas, item yang merupakan parameter badan permintaan, ialah contoh model Item. Ia digunakan untuk mengesahkan dan mensiri badan permintaan JSON yang masuk untuk memastikan ia sepadan dengan struktur yang ditakrifkan dalam model Item ke-.

Kaedah .dict() Pydantic

Model Pydantic mempunyai kaedah .dict() yang mengembalikan kamus dengan data model.

Jika kita mencipta contoh model pydantic:

item = Item(name="sample item", price=5.99)

Kemudian kami memanggil dict() dengannya:

itemDict = item.dict()
print(itemDict)

Kami kini mempunyai kamus dan output kami ialah:

{
"name": "sample item",
"price":5.99
}

Perhatikan bahawa:

Item(name="sample item", price=5.99)

Adalah bersamaan dengan

# Using the unpacking operator
Item(**itemDict)

# Or 

Item(
  name=itemDict["name"], price=itemDict["price" 
)

Faedah Penggunaan

Kini kami akan melihat beberapa situasi di mana menggunakan operator pembongkaran adalah berfaedah.

  • Creating new dictionaries from a pre-existing dictionary by adding or modifying entries.
original_dict = {"name": "Stephen", "age": 30, "profession": "Software Developer"}

# Creating a new dictionary with additional or modified entries
new_dict = {**original_dict, "age": 31, "location": "New York"}
print(new_dict)
  • Joining dictionaries into one. With the unpacking operator we can merge multiple dictionaries.
default_config = {"theme": "light", "notifications": True}
user_config = {"theme": "dark"}

# Merging dictionaries using unpacking
final_config = {**default_config, **user_config}
print(final_config)
  • Handling of arguments in functions in a dynamic manner. This can be seen in our early examples.

Conclusion

The dictionary unpacking operator ** is one to consider using because of its dynamic nature of handling arguments in functions and classes, and in merging and creation of new dictionaries. All these put together leads to lesser code and better maintenance of code.

Atas ialah kandungan terperinci Penggunaan Operator ** Dengan Kelas Python dan FastAPI Pydantic. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1594
276
Python Sambung ke SQL Server PyoDBC Contoh Python Sambung ke SQL Server PyoDBC Contoh Jul 30, 2025 am 02:53 AM

Pasang PYODBC: Gunakan perintah PipinstallPyoDBC untuk memasang perpustakaan; 2. Sambungkan SQLServer: Gunakan rentetan sambungan yang mengandungi pemacu, pelayan, pangkalan data, uid/pwd atau aman 3. Semak pemacu yang dipasang: Jalankan pyodbc.drivers () dan tapis nama pemacu yang mengandungi 'SQLServer' untuk memastikan nama pemacu yang betul digunakan seperti 'ODBCDriver17 untuk SQLServer'; 4. Parameter utama rentetan sambungan

Python Httpx Async Contoh Pelanggan Python Httpx Async Contoh Pelanggan Jul 29, 2025 am 01:08 AM

Gunakan httpx.asyncclient untuk memulakan permintaan HTTP asynchronous dengan cekap. 1. Asas mendapatkan permintaan menguruskan pelanggan melalui asyncwith dan gunakan AwaitClient.get untuk memulakan permintaan yang tidak menyekat; 2. Menggabungkan Asyncio.Gather untuk menggabungkan dengan asyncio.Gather dapat meningkatkan prestasi dengan ketara, dan jumlah masa adalah sama dengan permintaan yang paling lambat; 3. Menyokong pengepala adat, pengesahan, tetapan base_url dan masa tamat; 4. Boleh menghantar permintaan pos dan membawa data JSON; 5. Beri perhatian untuk mengelakkan pencampuran kod asynchronous segerak. Sokongan proksi perlu memberi perhatian kepada keserasian back-end, yang sesuai untuk crawler atau agregasi API dan senario lain.

Mengoptimumkan python untuk operasi terikat memori Mengoptimumkan python untuk operasi terikat memori Jul 28, 2025 am 03:22 AM

Pythoncanbeoptimizedformemory-boundoperationsbyreducingoverheadthroughgenerators, efisiendataStructures, danManagingObjectlifetimes.first, useGeneratorsInsteadofListStoprocesslargedataSetSoneiteMatime, mengelakkan muat turun muat turun, coose

SQLALCHEMY 2.0 Amaran dan Sambungan Tutup Panduan Penyelesaian Masalah Tutup SQLALCHEMY 2.0 Amaran dan Sambungan Tutup Panduan Penyelesaian Masalah Tutup Aug 05, 2025 pm 07:57 PM

Artikel ini bertujuan untuk membantu pemula Sqlalchemy menyelesaikan peringatan "RemovedIn20warning" yang ditemui apabila menggunakan create_engine dan kesilapan penutupan "resourceclosederror" berikutnya. Artikel ini akan menerangkan punca amaran ini secara terperinci dan memberikan langkah -langkah tertentu dan contoh kod untuk menghapuskan amaran dan memperbaiki isu sambungan untuk memastikan anda dapat menanyakan dan mengendalikan pangkalan data dengan lancar.

Contoh Python Shutil Rmtree Contoh Python Shutil Rmtree Aug 01, 2025 am 05:47 AM

shutil.rmtree () adalah fungsi dalam python yang secara rekursif memadam seluruh pokok direktori. Ia boleh memadam folder yang ditentukan dan semua kandungan. 1. Penggunaan Asas: Gunakan shutil.rmtree (Path) untuk memadam direktori, dan anda perlu mengendalikan fileNotFoundError, PermissionError dan pengecualian lain. 2. Aplikasi Praktikal: Anda boleh membersihkan folder yang mengandungi subdirektori dan fail dalam satu klik, seperti data sementara atau direktori cache. 3. Nota: Operasi penghapusan tidak dipulihkan; FileNotFoundError dilemparkan apabila jalan tidak wujud; Ia mungkin gagal kerana kebenaran atau pekerjaan fail. 4.

Bagaimana untuk melaksanakan pertanyaan SQL di Python? Bagaimana untuk melaksanakan pertanyaan SQL di Python? Aug 02, 2025 am 01:56 AM

Pasang pemacu pangkalan data yang sepadan; 2. Gunakan Connect () untuk menyambung ke pangkalan data; 3. Buat objek kursor; 4. Gunakan melaksanakan () atau executemany () untuk melaksanakan SQL dan menggunakan pertanyaan parameter untuk mengelakkan suntikan; 5. Gunakan Fetchall (), dan sebagainya untuk mendapatkan hasil; 6. komit () diperlukan selepas pengubahsuaian; 7. Akhirnya, tutup sambungan atau gunakan pengurus konteks untuk mengendalikannya secara automatik; Proses lengkap memastikan operasi SQL selamat dan cekap.

Python untuk Etl Kejuruteraan Data ETL Python untuk Etl Kejuruteraan Data ETL Aug 02, 2025 am 08:48 AM

Python adalah alat yang cekap untuk melaksanakan proses ETL. 1. Pengekstrakan data: Data boleh diekstrak dari pangkalan data, API, fail dan sumber lain melalui panda, sqlalchemy, permintaan dan perpustakaan lain; 2. Penukaran Data: Gunakan panda untuk pembersihan, penukaran jenis, persatuan, pengagregatan dan operasi lain untuk memastikan kualiti data dan mengoptimumkan prestasi; 3. Pemuatan Data: Gunakan kaedah Pandas 'TO_SQL atau platform awan SDK untuk menulis data ke sistem sasaran, perhatikan kaedah menulis dan pemprosesan batch; 4. Cadangan Alat: Airflow, Dagster, Prefect digunakan untuk penjadualan dan pengurusan proses, menggabungkan penggera log dan persekitaran maya untuk meningkatkan kestabilan dan mengekalkan.

Contoh Kolam Sambungan Python PsycopG2 Contoh Kolam Sambungan Python PsycopG2 Jul 28, 2025 am 03:01 AM

Gunakan psycopg2.pool.simpleConnectionPool untuk menguruskan sambungan pangkalan data dengan berkesan dan mengelakkan overhead prestasi yang disebabkan oleh penciptaan dan kemusnahan sambungan yang kerap. 1. Apabila membuat kolam sambungan, tentukan bilangan minimum dan maksimum sambungan sambungan dan pangkalan data untuk memastikan bahawa kolam sambungan diasaskan dengan jayanya; 2. Dapatkan sambungan melalui getConn (), dan gunakan PutConn () untuk mengembalikan sambungan ke kolam selepas melaksanakan operasi pangkalan data. Sentiasa panggil conn.close () dilarang; 3. SimpleConnectionPool adalah benang selamat dan sesuai untuk persekitaran berbilang threaded; 4. Adalah disyorkan untuk melaksanakan pengurus konteks dalam kombinasi dengan Pengurus Konteks untuk memastikan sambungan dapat dikembalikan dengan betul apabila pengecualian diperhatikan;

See all articles