with asPythonの機能を理解するための私にとっての課題の1つは、Python言語の限界をより深く理解していない限り、その必要性は明らかではありません。
たとえば、Ruby、Julia、Lua、Go、JavaScript、またはSwiftの開発者は、このステートメントを追加する必要はありません。何故ですか?
問題の中心にあるのは、多くのPython開発者が大切にしている機能です。コードブロックを示すためのインデントの使用です。
JavaScriptで私は例えば書くことができます
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)
...
これは、インデントの変更ではなく、コードのブロックの終わりを示すシンボルを持つことの利点を示しています。
インラインマルチラインクロージャにわかりやすい構文を使用することの利点の詳細を少し見てみましょう。JavaScript、Lua、その他の多くの言語でも同様に機能しますが、Juliaのコード例を使用して説明します。
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
ファイルを開いたり閉じたりするこの方法の利点は、ファイルを閉じることを忘れないことです。
説明したように、Pythonで同じ構文を実現することは困難です。このようwith-asに発明されました。前の例が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)
このクラスを使用して、次の方法でファイルを開いたり、ファイルから読み取ったりできます。
with openfile("foobar.txt") as file:
print(readline(file))
openfileクラスのコンストラクターが呼び出され、開きたいファイルの名前が格納されます。openfileクラスのインスタンスがwith-asコンストラクトに渡され、その__enter__メソッドが呼び出されます。希望する資源を獲得することになっています。この場合のファイルハンドル。asます。したがってas file、から返されるオブジェクトを参照します__enter__。名前は一致する必要はありません。as foobar代わりに書くこともできます。with-asブロック内のすべてのコードが実行されると、Pythonは__exit__リソースを解放するために呼び出します。これは、例外がスローされた場合にも呼び出されます。サブクラス化またはデコレータの使用により、これらのコンテキストマネージャクラスを作成する方法にはさまざまなバリエーションがあります。
facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。
私たちの言語は、私たちの思考、態度、行動を形作る強力なツールです。一見無害に見える用語であっても、有害な偏見や固定観念を永続させる可能性があります。
曖昧さを避けるために、次の用語が使用されます。認証者; ログイン Web サイトの作成に使用されている携帯電話。ユーザーがログイン要求サービスを行うために使用している Web サイトまたはアプリケーション。特定のサービスを提供するベンダー。例:
西のなだらかな丘陵地帯では、太陽の最初の光が平原の曇った草を照らす、まばゆいばかりの金色の朝です。真っ黒で巨大な穏やかなアンガス牛の群れが日の出を背景にシルエットを描き、誰もがよく知っている場所へ人里離れた道を進んでいます。朝食バー。
私たちがこの地球上で繁栄し続けたいのであれば、危険な会話をしなければなりません。私たちがこれまでやってきたこと、現在行っていること、そして現在継続して行う予定の(または計画している)ことに挑戦するものです。
はじめに:勇敢な読者の皆さん、地球の最も暗い深みへ私たちを導く旅へようこそ。このブログでは、マリアナ海溝の謎に満ちた世界を掘り下げ、その隠された秘密を明らかにし、その表面の下にある骨も凍るような真実を明らかにします。