Python periksa apakah ada argumen

Di Python, semua variabel diharapkan didefinisikan sebelum digunakan. Objek None_ adalah nilai yang sering Anda tetapkan untuk menandakan bahwa Anda tidak memiliki nilai nyata untuk suatu variabel, seperti pada

try: x except NameError: x = None

Maka mudah untuk menguji apakah suatu variabel terikat None

if x is None: some_fallback_operation( ) else: some_operation(x)_

Python tidak memiliki fungsi khusus untuk menguji apakah suatu variabel didefinisikan, karena semua variabel diharapkan telah ditentukan sebelum digunakan, bahkan jika awalnya diberi objek None. Mencoba untuk mengakses variabel yang sebelumnya tidak ditentukan memunculkan pengecualian NameError (yang dapat Anda tangani dengan pernyataan if x is None: some_fallback_operation( ) else: some_operation(x)0/if x is None: some_fallback_operation( ) else: some_operation(x)1, seperti yang Anda bisa untuk pengecualian Python lainnya)

Di Python dianggap tidak biasa untuk tidak mengetahui apakah suatu variabel telah didefinisikan. Namun jika Anda berada dalam situasi ini, Anda dapat memastikan bahwa variabel yang diberikan sebenarnya didefinisikan (sebagai None, jika tidak ada yang lain) dengan mencoba mengaksesnya di dalam klausa if x is None: some_fallback_operation( ) else: some_operation(x)0 dan menugaskannya sebagai objek None jika akses tersebut memunculkan NameError . Perhatikan bahwa None benar-benar tidak ada yang ajaib, hanya objek bawaan yang digunakan oleh konvensi (dan dikembalikan oleh fungsi yang keluar tanpa mengembalikan sesuatu yang spesifik). Anda dapat menggunakan nilai lain yang cocok untuk keperluan Anda untuk menginisialisasi variabel yang tidak ditentukan; . 24

Alih-alih memastikan bahwa variabel diinisialisasi, Anda mungkin lebih memilih untuk menguji apakah itu ditentukan di mana Anda ingin menggunakannya

try: x except NameError: some_fallback_operation( ) else: some_operation(x)

Ini adalah alternatif yang bisa diterima untuk kode dalam resep, dan beberapa akan mengatakan itu lebih Pythonic. Perhatikan, bagaimanapun, bahwa jika Anda memilih alternatif ini, Anda harus membuat kode dalam urutan ini. anomali, kasus kesalahan terlebih dahulu, kemudian kasus normal tanpa kesalahan. Dengan pendekatan resep, Anda mungkin ingin membalikkan kondisi penjaga ke if x is None: some_fallback_operation( ) else: some_operation(x)7 dan mengkode kasus normal terlebih dahulu. Poin-poin ini adalah hal-hal kecil, tentu saja, tetapi terkadang kejelasan dapat ditingkatkan dengan cara ini. Selanjutnya, Anda harus berhati-hati untuk menghindari variasi dalam alternatif ini

try: x some_operation(x) except NameError: some_fallback_operation( )

Dalam variasi ini, panggilan ke if x is None: some_fallback_operation( ) else: some_operation(x)_8 juga dicakup oleh penangan pengecualian, jadi jika ada bug dalam fungsi if x is None: some_fallback_operation( ) else: some_operation(x)8, atau dalam fungsi apa pun yang dipanggil darinya, kode ini akan menutupi bug tersebut dan tampaknya terus beroperasi secara normal ketika seharusnya . Anda harus selalu berhati-hati agar klausa if x is None: some_fallback_operation( ) else: some_operation(x)_0 Anda (dalam pernyataan if x is None: some_fallback_operation( ) else: some_operation(x)0/if x is None: some_fallback_operation( ) else: some_operation(x)1) tidak sengaja menutupi lebih banyak kode daripada yang sebenarnya ingin Anda tutupi, yang mungkin dengan mudah menutupi bug. Klausa try: x except NameError: some_fallback_operation( ) else: some_operation(x)3 dalam pernyataan if x is None: some_fallback_operation( ) else: some_operation(x)0/if x is None: some_fallback_operation( ) else: some_operation(x)1 adalah untuk kode yang harus dijalankan hanya jika tidak ada pengecualian yang dimunculkan tetapi seharusnya tidak dengan sendirinya dicakup oleh penangan pengecualian, karena Anda tidak mengharapkan pengecualian darinya dan ingin segera mendiagnosis masalah jika pengecualian terjadi

Banyak situasi yang menurut Anda secara alami akan memunculkan variabel yang tidak terdefinisi, seperti memproses file konfigurasi atau formulir web, ditangani lebih baik dengan menggunakan kamus dan menguji keberadaan kunci (dengan metode try: x except NameError: some_fallback_operation( ) else: some_operation(x)6, if x is None: some_fallback_operation( ) else: some_operation(x)0/if x is None: some_fallback_operation( ) else: some_operation(x)1, atau . Misalnya, alih-alih menangani file konfigurasi pengguna dengan cara ini

execfile('userconfig') try: background_color except NameError: background_color = 'black' try: foreground_color except NameError: foreground_color = 'white' ...

lakukan dengan cara ini

config = dict(globals( )) execfile('userconfig', config) background_color = config.get('background_color', 'black') foreground_color = config.get('foreground_color', 'white') ...

try: x some_operation(x) except NameError: some_fallback_operation( )1 membutuhkan Python 2. 2, tetapi Anda bisa mendapatkan efek serupa di versi Python sebelumnya dengan menggunakan try: x some_operation(x) except NameError: some_fallback_operation( )2 sebagai gantinya. Menggunakan kamus yang ditentukan secara eksplisit untuk try: x some_operation(x) except NameError: some_fallback_operation( )3, try: x some_operation(x) except NameError: some_fallback_operation( )4, dan try: x some_operation(x) except NameError: some_fallback_operation( )5 tetap disarankan, agar ruang nama Anda tetap terkendali. Salah satu dari banyak manfaat menggunakan kamus yang ditentukan secara eksplisit adalah, seperti yang ditunjukkan di sini, Anda tidak perlu khawatir tentang variabel yang tidak terdefinisi tetapi cukup menggunakan metode try: x except NameError: some_fallback_operation( ) else: some_operation(x)9 kamus untuk mengambil setiap kunci dengan nilai default yang ditentukan secara eksplisit untuk digunakan

Jika Anda tahu pasti di namespace mana variabel itu berada (mis. e. , khususnya try: x some_operation(x) except NameError: some_fallback_operation( )7 atau khusus try: x some_operation(x) except NameError: some_fallback_operation( )8), Anda juga dapat menggunakan metode seperti try: x except NameError: some_fallback_operation( ) else: some_operation(x)6 atau try: x except NameError: some_fallback_operation( ) else: some_operation(x)9 pada kamus yang relevan. Namun, variabel yang bukan try: x some_operation(x) except NameError: some_fallback_operation( )_7 atau try: x some_operation(x) except NameError: some_fallback_operation( )8 mungkin ada (berkat fitur lingkup bersarang yang opsional di Python 2. 1, tetapi selalu aktif di Python 2. 2 dan selanjutnya). Juga, direktori namespace khusus yang dikembalikan oleh try: x some_operation(x) except NameError: some_fallback_operation( )7 dan try: x some_operation(x) except NameError: some_fallback_operation( )_8 tidak cocok untuk metode mutasi seperti try: x some_operation(x) except NameError: some_fallback_operation( )0, jadi Anda masih lebih baik mengatur untuk menggunakan kamus eksplisit Anda sendiri daripada ruang nama lokal atau global, kapan pun memungkinkan

Bagaimana Anda memeriksa argumen dengan Python?

Sintaks *args memungkinkan kita untuk meneruskan sejumlah variabel argumen ke suatu fungsi. Kita akan menggunakan fungsi atau metode len() di *args untuk menghitung jumlah argumen dari fungsi di python. Contoh 1. Python3.

Apa itu * arg di Python?

*args memungkinkan kita untuk meneruskan sejumlah variabel argumen non-kata kunci ke fungsi Python . Dalam fungsi, kita harus menggunakan tanda bintang ( * ) sebelum nama parameter untuk meneruskan sejumlah variabel argumen.

Bagaimana Anda memeriksa apakah args tidak ada di Python?

Gunakan operator is untuk memeriksa apakah suatu variabel tidak ada di Python , e. g. jika my_var adalah Tidak Ada. . Operator is mengembalikan True jika nilai di sisi kiri dan kanan menunjuk ke objek yang sama dan harus digunakan saat memeriksa lajang seperti Tidak ada.

Apa saja 3 jenis argumen di Python?

Oleh karena itu, kami menyimpulkan bahwa Argumen Fungsi Python dan tiga jenis argumennya untuk fungsi. Ini adalah- argumen default, kata kunci, dan arbitrer .

Postingan terbaru

LIHAT SEMUA