Apakah mungkin untuk mendeklarasikan variabel dengan Python, seperti itu ?:
var
sehingga diinisialisasi ke Tidak ada? Sepertinya Python mengizinkan ini, tapi begitu Anda mengaksesnya, crash. Apakah ini mungkin? Jika tidak, mengapa?
EDIT: Saya ingin melakukan ini untuk kasus-kasus seperti ini:
value
for index in sequence:
if value == None and conditionMet:
value = index
break
Duplikat
- Nilai tidak diinisialisasi dalam python (oleh penulis yang sama)
- Apakah ada kata kunci deklarasi di Python? (oleh penulis yang sama)
Terkait
python
variable-assignment
variable-declaration
Joan Venge
sumber
sumber
Jawaban:
Mengapa tidak lakukan saja ini:
Python dinamis, jadi Anda tidak perlu mendeklarasikan sesuatu; mereka ada secara otomatis di ruang lingkup pertama tempat mereka ditugaskan. Jadi, yang Anda butuhkan hanyalah pernyataan tugas lama seperti biasa di atas.
Ini bagus, karena Anda tidak akan pernah berakhir dengan variabel yang tidak diinisialisasi. Tapi hati-hati - ini tidak berarti bahwa Anda tidak akan berakhir dengan variabel yang diinisialisasi salah . Jika Anda
None
menginginkan sesuatu , pastikan itu yang Anda inginkan, dan tetapkan sesuatu yang lebih bermakna jika Anda bisa.sumber
Saya sungguh-sungguh merekomendasikan bahwa Anda membaca bahasa lain memiliki "variabel" (saya menambahkannya sebagai tautan terkait) - dalam dua menit Anda akan tahu bahwa Python memiliki "nama", bukan "variabel".
sumber
val = val or any_object
untuk menginisialisasi itu.is
untuk menguji apakah suatu nilaiNone
.Di Python 3.6+ Anda bisa menggunakan Anotasi Variabel untuk ini:
https://www.python.org/dev/peps/pep-0526/#abstract
PEP 484 memperkenalkan tip tipe, alias tipe anotasi. Meskipun fokus utamanya adalah anotasi fungsi, ia juga memperkenalkan gagasan komentar tipe ke variabel anotasi:
PEP 526 bertujuan untuk menambahkan sintaks ke Python untuk menganotasi jenis variabel (termasuk variabel kelas dan variabel instan), alih-alih mengungkapkannya melalui komentar:
Tampaknya lebih langsung sejalan dengan apa yang Anda tanyakan "Apakah mungkin hanya untuk mendeklarasikan variabel tanpa menetapkan nilai apa pun dalam Python?"
sumber
Saya tidak yakin apa yang Anda coba lakukan. Python adalah bahasa yang sangat dinamis; Anda biasanya tidak perlu mendeklarasikan variabel sampai Anda benar-benar akan menetapkan atau menggunakannya. Saya pikir apa yang ingin Anda lakukan adalah adil
yang akan menetapkan nilai
None
ke variabelfoo
.EDIT: Apa yang benar-benar ingin Anda lakukan hanyalah ini:
Agak sulit untuk mengatakan apakah itu benar-benar gaya yang tepat untuk digunakan dari contoh kode pendek seperti itu, tetapi ini adalah cara yang lebih "Pythonic" untuk bekerja.
EDIT: di bawah ini adalah komentar oleh JFS (diposting di sini untuk menunjukkan kode)
Tidak terkait dengan pertanyaan OP tetapi kode di atas dapat ditulis ulang sebagai:
CATATAN: jika
some_condition()
memunculkan pengecualian makafound
tidak terikat.CATATAN: jika len (urutan) == 0 maka
item
tidak terikat.Kode di atas tidak disarankan. Tujuannya adalah untuk menggambarkan cara kerja variabel lokal, yaitu apakah "variabel" "didefinisikan" hanya dapat ditentukan saat runtime dalam kasus ini. Cara yang lebih disukai:
Atau
sumber
Saya biasanya menginisialisasi variabel menjadi sesuatu yang menunjukkan tipe suka
atau
Jika akan menjadi objek maka jangan menginisialisasi sampai Anda instantiate:
sumber
Nah, jika Anda ingin memeriksa apakah suatu variabel didefinisikan atau tidak, mengapa tidak memeriksa apakah ada dalam array lokal () atau global ()? Kode Anda ditulis ulang:
Jika itu variabel lokal yang Anda cari, maka gantilah global () dengan lokal ().
sumber
Pertama-tama, tanggapan saya terhadap pertanyaan yang awalnya Anda ajukan
T: Bagaimana saya menemukan jika suatu variabel didefinisikan pada suatu titik dalam kode saya?
A: Baca di file sumber sampai Anda melihat baris di mana variabel itu didefinisikan.
Namun lebih lanjut, Anda telah memberikan contoh kode bahwa ada berbagai permutasi yang cukup pythonic. Anda mencari cara untuk memindai urutan elemen yang cocok dengan suatu kondisi, jadi inilah beberapa solusi:
Jelas dalam contoh ini Anda dapat mengganti
raise
denganreturn None
tergantung pada apa yang ingin Anda capai.Jika Anda menginginkan semua yang cocok dengan kondisi Anda bisa melakukan ini:
Ada cara lain untuk melakukan ini dengan
yield
yang saya tidak akan repot menunjukkan kepada Anda, karena itu cukup rumit dalam cara kerjanya.Lebih lanjut, ada satu cara untuk mencapai hal ini:
sumber
Jika saya memahami contoh Anda dengan benar, Anda tidak perlu merujuk ke 'nilai' dalam pernyataan if. Anda keluar dari loop segera setelah itu dapat diatur untuk apa saja.
sumber
Anda sepertinya sedang mencoba menulis C dengan Python. Jika Anda ingin menemukan sesuatu secara berurutan, Python memiliki fungsi builtin untuk melakukan itu, seperti
sumber
Ini adalah pertanyaan yang bagus dan sayangnya jawaban buruk seperti
var = None
sudah memberikan nilai, dan jika skrip Anda berjalan beberapa kali ditimpa denganNone
setiap waktu.Ini tidak sama dengan mendefinisikan tanpa penugasan. Saya masih mencoba mencari cara untuk mem-bypass masalah ini.
sumber
Apakah mungkin untuk mendeklarasikan variabel dengan Python (var = Tidak Ada):
sumber
sumber
Jika
None
merupakan nilai data yang valid maka Anda perlu variabel dengan cara lain. Anda bisa menggunakan:Sentinel ini disarankan oleh Nick Coghlan .
sumber
Anda dapat menipu penerjemah dengan oneliner jelek ini.
if None: var = None
Ia tidak melakukan apa-apa selain menambahkan variabelvar
ke kamus variabel lokal, bukan menginisialisasi. Interpreter akan melempar pengecualian UnboundLocalError jika Anda mencoba menggunakan variabel ini dalam suatu fungsi sesudahnya. Ini akan bekerja untuk versi python yang sangat kuno juga. Tidak sederhana, tidak cantik, tetapi jangan berharap banyak dari python.sumber