Pernyataan "dengan sebagai" Python dalam Julia, JavaScript, Lua, dan Bahasa Lainnya

Salah satu tantangan bagi saya untuk memahami with asfitur dalam Python, kebutuhannya tidak terlihat kecuali Anda memiliki pemahaman yang lebih dalam tentang batasan bahasa Python.

Pengembang Ruby, Julia, Lua, Go, JavaScript atau Swift misalnya tidak perlu menambahkan pernyataan ini. Mengapa demikian?

Inti masalahnya adalah fitur yang disukai oleh banyak pengembang Python: penggunaan lekukan untuk menunjukkan blok kode.

Dalam JavaScript saya bisa menulis misalnya

openfile('foobar.txt', function(file) {
  // called after file has been opened
  // file is a handle to the open file
  read_data(file)
  ...
});

openfile("foobar.txt", function(file)
  -- called after file has been opened
  -- file is a handle to the open file
  read_data(file)
  ...
end)

openfile("foobar.txt", def (file):
  # called after file has been opened
  # file is a handle to the open file
  read_data(file)
  ...

Ini menggambarkan manfaat memiliki simbol untuk menandakan akhir blok kode daripada perubahan lekukan.

Menggunakan Fungsi Tingkat Tinggi Dengan Penutupan Untuk Alokasi dan Pembersihan Sumber Daya

Mari kita masuk sedikit ke dalam rincian manfaat memiliki sintaks yang ramah untuk penutupan multiline sebaris. Saya akan mengilustrasikannya dengan contoh kode Julia, meskipun JavaScript, Lua, dan banyak bahasa lainnya akan berfungsi dengan baik.

function openfile(callback, filename::String)
		file = open(filename)
    callback(file)
    close(file)
end

openfile(file -> print(readline(file)), "foobar.txt")

openfile("foobar.txt") do file
		print(readline(file))
end

Keindahan cara membuka dan menutup file ini, adalah Anda tidak akan lupa untuk menutup file tersebut.

Solusi Python

Seperti yang dijelaskan, sulit untuk mencapai hal yang sama dalam sintaksis Python. Jadi with-asdiciptakan. Mari saya tunjukkan bagaimana contoh sebelumnya akan diimplementasikan dengan Python.

class openfile:
   def __init_(self, filename):
       self.filename
   def __enter__(self):
       self.file =  open(self.filename)
       return file
   def __exit__(self, exc_type, exc_val, exc_tb):
       close(self.file)

Kita dapat menggunakan kelas ini untuk membuka dan membaca dari file dengan cara ini:

with openfile("foobar.txt") as file:
  print(readline(file))

  1. Pertama konstruktor openfilekelas dipanggil, dan kami menyimpan nama file yang ingin kami buka.
  2. Sebuah instance dari openfilekelas dilewatkan ke with-askonstruk, yang menyebabkan __enter__metodenya dipanggil. Hal ini seharusnya untuk memperoleh sumber daya yang kita inginkan. Sebuah file menangani dalam kasus ini.
  3. Objek yang dikembalikan menjadi argumen untuk as. Jadi as filemengacu pada objek yang dikembalikan dari __enter__. Nama tidak harus cocok. Kita bisa saja menulis as foobarsebagai gantinya.
  4. Ketika semua kode di dalam with-asblok telah dijalankan, Python akan memanggil __exit__untuk melepaskan sumber daya. Ini juga akan dipanggil jika ada pengecualian yang dilemparkan.

Ada banyak variasi dalam cara membuat kelas manajer konteks ini , baik dengan membuat subkelas atau menggunakan dekorator.

Suggested posts

Mencari Informasi Tentang Nama Domain

Kutipan dari Alat Perangkat Lunak Kecil dan Tajam oleh Brian P. Hogan

Mencari Informasi Tentang Nama Domain

Saat Anda membuat permintaan ke facebook.com, komputer Anda mencari nama domain untuk menerjemahkan nama domain tersebut menjadi alamat IP sehingga komputer Anda dapat membuat koneksi tersebut.

Kata-D dan kata-L dalam Desain UI. Masalah Bahasa. Jangan rasis.

Kata-D dan kata-L dalam Desain UI. Masalah Bahasa. Jangan rasis.

Bahasa kita adalah alat yang ampuh yang dapat membentuk pikiran, sikap, dan tindakan kita. Bahkan istilah yang tampaknya tidak berbahaya dapat melanggengkan bias dan stereotip yang berbahaya.

Related posts

Tantangan Membaca Goodreads Beracun

Tantangan Membaca Goodreads Beracun

Gatal di tangan saya menyebar saat saya menawar dengan penjual buku lokal untuk buku lain. Buku ini seperti buku lain yang saya beli baru-baru ini akan menemukan singgasananya di tumpukan 'To Be Read' (TBR) saya; namun, saya membelinya.

Erosi Lambat: Mengungkap Cara Orang Menghilang dalam Kariernya

Erosi Lambat: Mengungkap Cara Orang Menghilang dalam Kariernya

Di dunia yang serba cepat dan kompetitif saat ini, karier seseorang memainkan peran penting dalam pertumbuhan pribadi, stabilitas keuangan, dan kepuasan hidup secara keseluruhan. Namun, banyak orang menemukan diri mereka terjebak dalam siklus stagnasi dan ketidakpuasan tanpa henti, secara bertahap menyia-nyiakan kehidupan profesional mereka.

Belajar di Minggu Kerja lebih penting daripada yang Anda pikirkan

Belajar di Minggu Kerja lebih penting daripada yang Anda pikirkan

Kita sering menemukan diri kita berjuang untuk menerapkan apa yang kita tahu baik untuk kita. Dari memberi tahu orang penting bahwa kita mencintai mereka hingga mengingat untuk berbicara seperti bajak laut, akan selalu ada orang yang mengklaim bahwa acara sehari, seminggu, atau sebulan tidak diperlukan karena mereka sudah melakukan hal-hal itu.

Jaringan TV Twitter

Jaringan TV Twitter

Apa yang lama sekarang menjadi baru lagi dan apa yang dulu berkilau berkilau sekarang terasa kusam. Saya tidak berbicara tentang jeans JNCO yang kembali populer di antara anak-anak keren di pusat kota bersama dengan mode akhir 1990-an lainnya.