Python'da ifade ve ifade arasındaki fark nedir?


Yanıtlar:


242

İfadeler sadece içeren tanımlayıcılar , harfleri ve operatörler operatörler aritmetik bağlaçlar, fonksiyon içerir, arama operatörü abonelik operatörü ve benzeri, ve herhangi bir Python nesne olabilir "değeri", bir tür için azaltılabilir. Örnekler:() []

3 + 5
map(lambda x: x*x, range(10))
[a.x for a in some_iterable]
yield 7

İfadeler (bkz. 1 ,2 ), diğer taraftan, bir Python kodu satırı (veya birkaç satır) oluşturabilen her şeydir. İfadelerin de ifadeler olduğunu unutmayın. Örnekler:

# all the above expressions
print 42
if x: do_y()
return
a = 7

17
ifadelerdir parçalar tabloların
bismigalis

59
@bismigalis: Her geçerli Python ifadesi bir ifade olarak kullanılabilir ( "ifade ifadesi" olarak adlandırılır ). Bu anlamda, ifadeler vardır ifadeler.
Sven Marnach

2
İfadeler ayrıca işlev çağrılarını (nesne somutlaştırması için çağrı sınıfları dahil) içerebilir. Teknik olarak bunlar, bağlamanın 'def' veya 'class' anahtar kelimelerinden geçmesine rağmen, bir = ifadesindeki değerlere bağlı adlar gibi "tanımlayıcılardır". Ancak, bu cevap için bunu açıkça belirtmek için fonksiyon çağrılarını ayrı ayrı yazarım.
Jim Dennis

2
@ Yeterince Adil Fuar. :) İfade ifadeleri bile dışarıda repl oldukça yararlıdır - bu ifade örneğin tablolar gibi işlev çağrısı ifadeler kullanmayı oldukça yaygındır print("Hello world!")ya my_list.append(42).
Sven Marnach

3
@WillTaylor Değer veren her şey bir ifadedir, yani bir ödevin yazma tarafına yazabileceğiniz her şey. Çünkü a = yield 7geçerli, yield 7bir ifadedir. Uzun zaman önce yieldbir ifade olarak tanıtıldı, ancak PEP 342'de bir ifadeye genelleştirildi .
Sven Marnach

120

İfade - Yeni Oxford Amerikan Sözlüğü'nden :

ifade: Matematik bir miktarı birlikte ifade eden bir semboller koleksiyonu: bir dairenin çevresi için ifade 2πr.

Brüt genel anlamda: İfadeler en az bir değer üretir.

Python'da, ifadeler Python Dil Referansında geniş ölçüde ele alınmaktadır . Genel olarak, Python'daki ifadeler, sözdizimsel olarak yasal Atomlar , Primerler ve Operatörler kombinasyonundan oluşur .

Wikipedia'dan Python ifadeleri

İfade örnekleri:

Değişmez değerler ve Operatörler ve yerleşik işlevler veya kullanıcı tarafından yazılan işlevlerin çağrısı ile sözdizimsel olarak doğru kombinasyonlar :

>>> 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

Bildirimi Wikipedia'dan:

Bilgisayar programlamasında bir ifade, zorunlu bir programlama dilinin en küçük bağımsız elemanı olarak düşünülebilir. Bir program, bir veya daha fazla ifadeden oluşan bir sıra ile oluşturulur. Bir ifadenin dahili bileşenleri (ör. İfadeler) olacaktır.

Wikipedia'dan Python ifadeleri

Brüt genel terimlerle: İfadeler Bir Şey Yapar ve genellikle ifadelerden (veya diğer ifadelerden) oluşur

Python Dil Referansı, Basit İfadeleri ve Bileşik İfadeleri kapsamlı bir şekilde kapsar .

"İfadeler bir şey yapar" ve "ifadeler bir değer üretir" ayrımının bulanıklaşmasına neden olabilir:

  • Liste Anlamaları "İfadeler" olarak kabul edilir, ancak döngü yapıları vardır ve bu nedenle de bir şeyler yapın.
  • Bu ifgenellikle bir ifadedir, if x<0: x=0ancak ifadeler gibi koşullu bir ifadeye de sahip olabilirsiniz x=0 if x<0 else 1. C gibi diğer dillerde, bu forma böyle bir operatör denirx=x<0?0:1;
  • Bir işlev yazarak kendi İfadelerinizi yazabilirsiniz. def func(a): return a*a"" ifadesi, kullanıldığında ancak tanımlandığında ifadelerden oluşan bir ifadedir.
  • Geri dönen bir ifade NonePython'da bir prosedürdür: def proc(): passSözdizimsel olarak, proc()bir ifade olarak kullanabilirsiniz , ancak bu muhtemelen bir hatadır ...
  • Python, C'nin bir İfade ve İfade arasındaki farklar üzerinde olduğunu söylemekten biraz daha katıdır. C'de herhangi bir ifade yasal bir ifadedir. Bu func(x=2);bir İfade mi İfade mi? ( Yanıt: Yan etkisi olan bir İfade olarak kullanılan ifade. ) Python'daki x=2işlev çağrısının içindeki atama ifadesi func(x=2), adlandırılan argümanı ayalnızca funcC çağrısında yalnızca 2'ye ayarlar ve C örneğinden daha sınırlıdır.

"From my Dictionary" kişisel görüşünüzü veya oxford sözlüğü gibi sahip olduğunuz sözlüğü ifade eder. Teşekkürler
Talespin_Kit

1
@Talespin_Kit: ... kişisel düşünceniz veya Oxford sözlüğü gibi sahip olduğunuz sözlük? İyi soru. Apple Oxford uygulamasını, New Oxford American Dictionary tabanlı Mac bilgisayarlarda kullandım.
dawg

80

Bu Python ile ilgili olmasa da:

Bir expressiondeğeri değerlendirir. A bir statementşey yapar.

>>> x + 2         # an expression
>>> x = 1         # a statement 
>>> y = x + 1     # a statement
>>> print y       # a statement (in 2.x)
2

3
Ancak, gerçekten "saf" olanlar dışındaki tüm dillerde, ifadelerin de "bir şeyler" yapabileceğini (daha resmi olarak: yan etkisi olabilir) unutmayın.

@delnan: Bir örnek verebilir misiniz (meraklı)? Farkında değilim.
user225312

4
Aynı şekilde somelist.append(123),. Çoğu işlev çağrısı, gerçekten.
Thomas K

13
y = x + 1 bir ifade değil, bir deyimdir. Eval ("y = x + 1") 'i deneyin, bir hata ile karşılaşacaksınız.
Arglanir

3
y = x +1 bir ifade ifadesidir
Emmanuel Osimosu

13

İfadeler bir eylemi veya komutu temsil eder, örneğin print ifadeleri, atama ifadeleri.

print 'hello', x = 1

İfade, sonuç değeri veren değişkenlerin, işlemlerin ve değerlerin birleşimidir.

5 * 5 # yields 25

Son olarak, ifade ifadeleri

print 5*5

8

Bir ekspresyon örneğin bir değere azaltılabilir bir şeydir "1+3"veya "foo = 1+3".

Kontrol etmek kolaydır:

print foo = 1+3

Eğer işe yaramazsa, bu bir deyimdir, eğer varsa, bu bir ifadedir.

Başka bir ifade şöyle olabilir:

class Foo(Bar): pass

çünkü bir değere indirgenemez.


1
Gösterecekti ilk örneği yürütme olarak, atama olduğunu değil - (gerçekten olduğunu bir ifade a = b = exprPython özel bir durum olarak, izin verilir). C'den daha fazla ilham alan dillerde, öyle.

class Foo(bar):tam bir ifade değil, bir ifadenin başlangıcıdır.
Sven Marnach

1
foo = 1+3bir ifade DEĞİLDİR. Bu bir ifadedir (kesin bir ödev). Kısmen 1+3bir ifade.
Pithikos

2
Formülasyonum çok, çok hassas: "Eğer işe yaramazsa, bu bir deyimdir, eğer varsa, bir ifadedir." Yürütün ve cevabınızı alın.
Flavius

8
  1. İfade, bir değer döndüren bir ifadedir. Dolayısıyla, bir ödevin sağ tarafında veya bir yöntem çağrısının parametresi olarak görünebiliyorsa, bu bir ifadedir.
  2. Bazı kodlar, bağlama bağlı olarak bir ifade veya ifade olabilir. Dil, belirsiz olduklarında ikisi arasında ayrım yapmak için bir araca sahip olabilir.

5

İfade bir şeydir, ifade ise bir şey yapar.
Bir ifade de bir ifadedir, ancak bir dönüşü olmalıdır.

>>> 2 * 2          #expression
>>> print(2 * 2)     #statement

Not: Yorumlayıcı her zaman tüm ifadelerin değerlerini yazdırır.


bence, bir ifade null değeri olan bir ifadedir
Adalcar

3

BEYAN:

İfade, bir şey yapan bir eylem veya komuttur. Örn: Diğerse, Döngüler .. vb.

val a: Int = 5
If(a>5) print("Hey!") else print("Hi!")

ANLATIM:

İfade, bir şey veren değerlerin, operatörlerin ve değişmez değerlerin birleşimidir.

val a: Int = 5 + 5 #yields 10

Bu mevcut cevabın bir kopyasıdır: stackoverflow.com/questions/4728073/… .
karel

1
Belki yineleniyor, ancak yukarıdaki soru için görüşlerimi paylaşıyor.
Saldırı

1

Bir ifade bir anahtar kelime içerir.

İfade bir anahtar kelime içermez.

print "hello"ifadesidir, çünkü printbir anahtar kelimedir.

"hello" bir ifadedir, ancak liste sıkıştırması buna karşıdır.

Aşağıdakiler bir ifade ifadesidir ve liste kavrama olmadan doğrudur:

(x*2 for x in range(10))

4
Bu kesinlikle bir 'anahtar kelime' tanımınıza bağlıdır. x = 1mükemmel bir ifadedir, ancak anahtar kelimeler içermez.
Joost

Hayır, örneğin isbir anahtar kelimedir, ancak x is yille de bir ifade değildir (genel olarak sadece bir ifadedir).
benjimin

1

İfade:

  • İfadeler objectsve ile birleştirilir operators.
  • İfadenin türü olan bir değeri vardır.
  • Basit bir ifade için sözdizimi:<object><operator><object>

2.0 + 3, kendisiyle ilişkilendirilmiş ve onunla ilişkilendirilmiş 5.0bir türe sahip bir ifadedir float.

tablolar

İfadeler ifadelerden oluşur. Birden fazla satıra yayılabilir.


1

Python programımızın durumunu değiştirebilecek bazı ifadeler vardır: değişkenler oluşturma veya güncelleme, işlevi tanımlama, vb.

Ve ifadeler bir değer döndürür, bir işlevdeki genel durumu veya yerel durumu değiştiremez.

Ama şimdi var :=, bu bir uzaylı!


-1

Python ifadeleri "ifade ifadeleri" olarak adlandırır, bu yüzden soru belki de tam olarak oluşmamıştır.

Bir ifade, Python'da yapabileceğiniz hemen hemen her şeyden oluşur: bir değer hesaplamak, bir değer atamak, bir değişkeni silmek, bir değer yazdırmak, bir işlevden dönmek, bir istisna oluşturmak, vb. Tüm liste burada: http: // docs.python.org/reference/simple_stmts.html#

Bir ifade ifadesi, bir değer üretmek için çağrı işlevleri (örneğin, math.cos (teta) "), işleçler (örneğin," 2 + 3 "), vb. İle sınırlıdır.


10
Hayır, Python ifadelere "ifade ifadeleri" demez. Python yalnızca tek bir ifade "ifade ifadelerinden" oluşan ifadeleri çağırır.
Sven Marnach

... ve bunu yapmak yalnız değil.

-1

Bir ifadenin işleçleri + işlenenleri ve işlemin sonucunu tutan nesneyi içerdiğini düşünüyorum ...

var sum = a + b;

ancak bir ifade sadece bir kod satırıdır (bir ifade olabilir) veya bir kod bloğudur ... ör.

fun printHello(name: String?): Unit {
if (name != null)
    println("Hello ${name}")
else
    println("Hi there!")
// `return Unit` or `return` is optional

}

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.