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.
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.
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))
openfilekelas dipanggil, dan kami menyimpan nama file yang ingin kami buka.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.as. Jadi as filemengacu pada objek yang dikembalikan dari __enter__. Nama tidak harus cocok. Kita bisa saja menulis as foobarsebagai gantinya.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.
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.
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.
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.
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.
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.
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.