Ответы:
Выражения содержат только идентификаторы , литералы и оператор , когда операторы включают арифметические и логические оператор, функции оператор вызова подписки оператор и подобный, и могут быть сведены к какому - то «ценности», который может быть любым объектом Python. Примеры:()
[]
3 + 5
map(lambda x: x*x, range(10))
[a.x for a in some_iterable]
yield 7
Заявления (см. 1 ,2 ), с другой стороны, это все, что может составить строку (или несколько строк) кода Python. Обратите внимание, что выражения также являются утверждениями. Примеры:
# all the above expressions
print 42
if x: do_y()
return
a = 7
print("Hello world!")
или my_list.append(42)
.
a = yield 7
как действительно, yield 7
является выражением. Давным-давно yield
был представлен как утверждение, но оно было обобщено до выражения в PEP 342 .
Выражение - из Нового Оксфордского американского словаря :
выражение: математика набор символов, которые совместно выражают количество: выражение для окружности круга 2πr.
В общих чертах: выражения дают как минимум одно значение.
В Python выражения подробно рассматриваются в Справочнике по языку Python. В общем, выражения в Python состоят из синтаксически допустимой комбинации атомов , основных цветов и операторов .
Примеры выражений:
Литералы и синтаксически правильные комбинации с операторами и встроенными функциями или вызов пользовательских функций:
>>> 23
23
>>> 23l
23L
>>> range(4)
[0, 1, 2, 3]
>>> 2L*bin(2)
'0b100b10'
>>> def func(a): # Statement, just part of the example...
... return a*a # Statement...
...
>>> func(3)*4
36
>>> func(5) is func(a=5)
True
Заявление из Википедии:
В компьютерном программировании оператор может считаться наименьшим отдельным элементом императивного языка программирования. Программа состоит из последовательности одного или нескольких операторов. Оператор будет иметь внутренние компоненты (например, выражения).
В общих чертах: заявления делают что-то и часто состоят из выражений (или других утверждений)
Справочник по языку Python широко охватывает простые и составные выражения .
Однако различие между «заявлениями делать что-то» и «выражениями порождает ценность» может стать размытым:
if
, Как правило , заявление, например, if x<0: x=0
но вы также можете иметь условное выражение , как , x=0 if x<0 else 1
которые являются выражениями. В других языках, таких как C, эта форма называется оператором, подобным этомуx=x<0?0:1;
def func(a): return a*a
является выражением, когда оно используется, но состоит из операторов, когда оно определено.None
- это процедура в Python: def proc(): pass
синтаксически вы можете использовать proc()
как выражение, но это, вероятно, ошибка ...func(x=2);
Это выражение или утверждение? ( Ответ: выражение используется в качестве оператора с побочным эффектом. ) Оператор присваивания x=2
внутри вызова функции func(x=2)
в Python устанавливает для именованного аргумента a
значение 2 только в вызове func
и является более ограниченным, чем пример на языке C.Хотя это не связано с Python:
А expression
оценивает значение. А statement
что-то делает.
>>> x + 2 # an expression
>>> x = 1 # a statement
>>> y = x + 1 # a statement
>>> print y # a statement (in 2.x)
2
somelist.append(123)
. На самом деле большинство вызовов функций.
Операторы представляют действие или команду, например операторы печати, операторы присваивания.
print 'hello', x = 1
Выражение - это комбинация переменных, операций и значений, которая дает значение результата.
5 * 5 # yields 25
Наконец, выражения выражения
print 5*5
Выражение - это то, что может быть уменьшено до значения, например "1+3"
или "foo = 1+3"
.
Это легко проверить:
print foo = 1+3
Если это не работает, это утверждение, если это работает, это выражение.
Другое утверждение может быть:
class Foo(Bar): pass
поскольку это не может быть уменьшено до значения.
a = b = expr
разрешено, как особый случай) в Python. На языках, черпающих больше вдохновения из C, это так.
class Foo(bar):
это начало утверждения, а не полное утверждение.
foo = 1+3
это не выражение. Это утверждение (точнее, задание). Часть 1+3
является выражением, хотя.
Выражение - это что-то, а утверждение - что-то.
Выражение также является оператором, но оно должно иметь возврат.
>>> 2 * 2 #expression
>>> print(2 * 2) #statement
PS: интерпретатор всегда печатает значения всех выражений.
ЗАЯВЛЕНИЕ:
Оператор - это действие или команда, которая что-то делает. Пример: If-Else, Loops..etc
val a: Int = 5
If(a>5) print("Hey!") else print("Hi!")
ЭКСПРЕССИЯ:
Выражение - это комбинация значений, операторов и литералов, которая что-то дает.
val a: Int = 5 + 5 #yields 10
Заявление содержит ключевое слово.
Выражение не содержит ключевое слово.
print "hello"
это утверждение, потому что print
это ключевое слово.
"hello"
является выражением, но сжатие списка против этого.
Следующее является выражением выражения, и это верно без понимания списка:
(x*2 for x in range(10))
x = 1
это очень хорошее утверждение, но не содержит ключевых слов.
is
, это ключевое слово, но x is y
это не обязательно утверждение (в общем, это просто выражение).
Выражения:
objects
и operators
.<object><operator><object>
2.0 + 3
является выражением, которое оценивает 5.0
и имеет float
связанный с ним тип .
Заявления
Заявления состоят из выражения (й). Он может занимать несколько строк.
Есть несколько операторов, которые могут изменить состояние нашей программы на Python: создавать или обновлять переменные, определять функции и т. Д.
И выражения, просто возвращающие какое-то значение, не могут изменить глобальное состояние или локальное состояние в функции.
Но теперь мы получили :=
, это инопланетянин!
Python называет выражения «операторы выражений», поэтому вопрос, возможно, не полностью сформирован.
Оператор состоит из практически всего, что вы можете сделать в Python: вычисление значения, присвоение значения, удаление переменной, печать значения, возврат из функции, создание исключения и т. Д. Полный список приведен здесь: http: // docs.python.org/reference/simple_stmts.html#
Оператор выражения ограничивается вызовом функций (например, math.cos (theta) "), операторов (например," 2 + 3 ") и т. Д. Для получения значения.
Я думаю, что выражение содержит операторы + операнды и объект, который содержит результат операции ... например
var sum = a + b;
но оператор - это просто строка кода (это может быть выражение) или блок кода ... например
fun printHello(name: String?): Unit {
if (name != null)
println("Hello ${name}")
else
println("Hi there!")
// `return Unit` or `return` is optional
}