1. ホーム
  2. python

[解決済み] Pythonのコロンイコール(:=)は何を意味するのですか?

2022-08-30 09:27:46

質問

の部分はどうなっているのでしょうか? := オペランドの意味は何ですか?

誰かこのコードのスニペットをどのように読むか説明できますか?

node := root, cost = 0
frontier := priority queue containing node only
explored := empty set

どのように解決するのですか?

回答を更新しました。

質問の文脈では、擬似コードを扱っていますが はPython 3.8から , := は実際には有効な演算子で、式中の変数への代入を可能にします。

# Handle a matched regex
if (match := pattern.search(data)) is not None:
    # Do something with match

# A loop that can't be trivially rewritten using 2-arg iter()
while chunk := file.read(8192):
   process(chunk)

# Reuse a value that's expensive to compute
[y := f(x), y**2, y**3]

# Share a subexpression between a comprehension filter clause and its output
filtered_data = [y for x in data if (y := f(x)) is not None]

参照 PEP 572 を参照してください。

オリジナルの回答

あなたが見つけたものは 疑似コード

<ブロッククオート

擬似コード は、コンピュータプログラムや他のアルゴリズムの動作原理を非公式に高水準で記述したものです。 コンピュータプログラムや他のアルゴリズムの動作原理を説明した非公式な高水準の記述です。

:= は実際には代入演算子です。Pythonでは、これは単に = .

この擬似コードをPythonに翻訳するためには、参照されているデータ構造と、もう少しアルゴリズムの実装を知る必要があります。

擬似コードに関するいくつかの注意点です。

  • := は代入演算子か = Python では
  • = は等号演算子か == Python では
  • 特定のスタイルがあり、あなたのマイレージは異なるかもしれません。

パスカルスタイル

procedure fizzbuzz
For i := 1 to 100 do
    set print_number to true;
    If i is divisible by 3 then
        print "Fizz";
        set print_number to false;
    If i is divisible by 5 then
        print "Buzz";
        set print_number to false;
    If print_number, print i;
    print a newline;
end

Cスタイル

void function fizzbuzz
For (i = 1; i <= 100; i++) {
    set print_number to true;
    If i is divisible by 3
        print "Fizz";
        set print_number to false;
    If i is divisible by 5
        print "Buzz";
        set print_number to false;
    If print_number, print i;
    print a newline;
}

波括弧の使い方と代入演算子の違いに注意してください。