Что означает операнд :=
, более конкретно для Python?
Может кто-нибудь объяснить, как читать этот фрагмент кода?
node := root, cost = 0
frontier := priority queue containing node only
explored := empty set
Что означает операнд :=
, более конкретно для Python?
Может кто-нибудь объяснить, как читать этот фрагмент кода?
node := root, cost = 0
frontier := priority queue containing node only
explored := empty set
То, что вы нашли, это псевдокод
http://en.wikipedia.org/wiki/Pseudocode
Псевдокод - это неофициальное высокоуровневое описание действующего принцип компьютерной программы или другой алгоритм.
Оператор :=
фактически является оператором присваивания. В python это просто оператор =
.
Чтобы перевести этот псевдокод в Python, вам нужно знать ссылки на структуры данных и немного больше реализации алгоритма.
Некоторые примечания о psuedocode
:=
- оператор присваивания или =
в 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
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;
}
Обратите внимание на различия в использовании скобок и оператора присваивания.
PEP572 предложил поддержку оператора :=
в Python, чтобы разрешить присваивание переменных в выражениях.
Этот синтаксис будет доступен в Python 3.8.
Код в вопросе является псевдокодом; там :=
представляет назначение.
Для будущих посетителей, тем не менее, может быть уместно следующее: следующая версия Python (3.8) получит новый оператор, :=
, позволяющий выражать присваивания (подробности, примеры мотивации и обсуждения) в PEP. 572, который был временно принят в конце июня 2018 года).
С этим новым оператором вы можете написать что-то вроде этого:
if (m := re.search(pat, s)):
print m.span()
else if (m := re.search(pat2, s):
…
while len(bytes := x.read()) > 0:
… do something with 'bytes'
[stripped for l in lines if len(stripped := l.strip()) > 0]
вместо них:
m = re.search(pat, s)
if m:
print m.span()
else:
m = re.search(pat2, s)
if m:
…
while True:
bytes = x.read()
if len(bytes) <= 0:
return
… do something with 'bytes'
[l for l in (l.stripped() for l in lines) if len(l) > 0]
Выпуск Happy 3.8 14 октября
Существует новый синтаксис: =, который присваивает значения переменным как часть большего выражения. Его ласково называют "оператором моржа" из-за его сходства с глазами и клыками моржа.
В этом примере выражение присваивания помогает избежать двойного вызова len():
если (n: = len (a))> 10: print (f "Список слишком длинный ({n} элементов, ожидается & lt; = 10)")