পাইথনে একটি অভিব্যক্তি এবং একটি বিবৃতি মধ্যে পার্থক্য কি?


319

পাইথনে, ভাব এবং বক্তব্যগুলির মধ্যে পার্থক্য কী?

উত্তর:


242

প্রকাশ শুধুমাত্র ধারণ শনাক্তকারী , লিটারেল এবং অপারেটরদের , যেখানে অপারেটরদের গাণিতিক এবং বুলিয়ান অপারেটর, ফাংশন অন্তর্ভুক্ত কল অপারেটর সাবস্ক্রিপশন অপারেটর এবং অনুরূপ, এবং "মান" কোন ধরণের, যা কোনো পাইথন বস্তুর হতে পারে কমে যাবে। উদাহরণ:() []

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

বিবৃতি (দেখুন) 1 ,2 ) অন্যদিকে, পাইথন কোডের একটি লাইন (বা বেশ কয়েকটি লাইন) তৈরি করতে পারে এমন সমস্ত কিছু। মনে রাখবেন যে এক্সপ্রেশনগুলিও বয়ান হয়। উদাহরণ:

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

17
এক্সপ্রেশন বিবৃতি অংশ
বিসমিগালিস

59
@ বিসমিগালিস: প্রতিটি বৈধ পাইথন এক্সপ্রেশন একটি বিবৃতি হিসাবে ব্যবহৃত হতে পারে (যাকে "এক্সপ্রেশন স্টেটমেন্ট" বলা হয় )। এই অর্থে, এক্সপ্রেশন হয় বিবৃতি।
সোভেন মারনাচ

2
এক্সপ্রেশনগুলি ফাংশন কলগুলি অন্তর্ভুক্ত করতে পারে (অবজেক্ট ইনস্ট্যান্টেশনের জন্য কলিং ক্লাস সহ)। প্রযুক্তিগতভাবে এগুলি হ'ল "সনাক্তকারী" হ'ল নামের মতো একটি = বিবৃতিতে মানগুলিতে আবদ্ধ ... যদিও বাঁধাই 'ডিফ' বা 'শ্রেণি' কীওয়ার্ডের মাধ্যমে হয়। যাইহোক, এই উত্তরের জন্য আমি আলাদা করে ফাংশন কলগুলি স্পষ্ট করে ফেলব out
জিম ডেনিস

2
@ জর্জি মেলা যথেষ্ট। :) এক্সপ্রেশন বিবৃতিগুলি REPL এর বাইরেও বেশ কার্যকর - এটি ফাংশন কল এক্সপ্রেশনগুলি এক্সপ্রেশন স্টেটমেন্ট হিসাবে ব্যবহার করা যেমন সাধারণ print("Hello world!")বা my_list.append(42)
সোভেন মারনাচ

3
@ উইল ট্যেলর যা কিছু মান দেয় তা হ'ল একটি অভিব্যক্তি, অর্থাত্ যে কোনও কিছু আপনি অ্যাসাইনমেন্টের লেখার হাত ধরে লিখতে পারতেন। যেহেতু a = yield 7বৈধ, yield 7এটি একটি অভিব্যক্তি। একটি দীর্ঘ সময় আগে, yieldএকটি বিবৃতি হিসাবে চালু করা হয়েছিল, কিন্তু এটি পিইপি 342 এর একটি অভিব্যক্তিতে সাধারণীকরণ করা হয়েছিল ।
সোভেন মারনাচ

120

এক্সপ্রেশন - নিউ অক্সফোর্ড আমেরিকান অভিধান থেকে :

অভিব্যক্তি: গণিত প্রতীক সংকলন যা যৌথভাবে একটি পরিমাণ প্রকাশ করে: একটি বৃত্তের পরিধিটির পরিপ্রেক্ষিতে 2πr হয়।

স্থূল সাধারণ পদে: এক্সপ্রেশনগুলি কমপক্ষে একটি মান তৈরি করে।

পাইথন সালে এক্সপ্রেশন ব্যাপকভাবে আচ্ছাদিত করা হয় পাইথন ভাষা রেফারেন্স সাধারন, পাইথন এক্সপ্রেশন একটি চিহ্নগুলি সিন্টেক্সের আইনি সমন্বয় দ্বারা গঠিত অ্যাটমস , প্রাইমারিতে এবং অপারেটরগুলির

উইকিপিডিয়া থেকে পাইথন এক্সপ্রেশন

এক্সপ্রেশন উদাহরণ:

অপারেটর এবং অন্তর্নির্মিত ফাংশন বা ব্যবহারকারী-লিখিত ফাংশনগুলির কলগুলির সাথে লিটারাল এবং সিনট্যাক্টিকালি সঠিক সংমিশ্রণগুলি :

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

বিবৃতিউইকিপিডিয়া থেকে :

কম্পিউটার প্রোগ্রামিংয়ে একটি বিবৃতি একটি অত্যাবশ্যক প্রোগ্রামিং ভাষার ক্ষুদ্রতম একক উপাদান হিসাবে বিবেচনা করা যেতে পারে। এক বা একাধিক বক্তব্যের ক্রম দ্বারা একটি প্রোগ্রাম গঠিত হয়। একটি বিবৃতিতে অভ্যন্তরীণ উপাদান থাকবে (যেমন, এক্সপ্রেশন)।

উইকিপিডিয়া থেকে পাইথন বিবৃতি

স্থূল সাধারণ পদে: বিবৃতি কিছু করে এবং প্রায়শই প্রকাশ (বা অন্যান্য বিবৃতি) দ্বারা গঠিত হয়

পাইথন ল্যাঙ্গুয়েজ রেফারেন্সটি সহজ বিবরণী এবং যৌগিক বিবরণিকে ব্যাপকভাবে কভার করে ।

"স্টেটমেন্টগুলি কিছু করে" এবং "এক্সপ্রেশনগুলি একটি মান দেয়" এর পার্থক্যটি ঝাপসা হয়ে যেতে পারে:

  • তালিকা বোঝার "এক্সপ্রেশন" হিসাবে বিবেচিত হয় তবে তাদের লুপিং কনস্ট্রাক্টস রয়েছে এবং থ্রফরও কিছু করে Do
  • ifসাধারণত একটি বিবৃতি হিসাবে যেমন হয় if x<0: x=0কিন্তু আপনি একটি থাকতে পারে শর্তাধীন অভিব্যক্তি মত x=0 if x<0 else 1যে এক্সপ্রেশন হয়। অন্যান্য ভাষায় সি এর মতো এই ফর্মটিকে অপারেটর বলা হয়x=x<0?0:1;
  • আপনি একটি ফাংশন লিখে নিজের এক্সপ্রেশন লিখতে পারেন। def func(a): return a*aযখন ব্যবহার করা হয় তবে সংজ্ঞায়িত হয়ে গেলে বিবৃতি দিয়ে তৈরি হয়।
  • যে অভিব্যক্তিটি ফিরে আসে Noneতা পাইথনের একটি পদ্ধতি: def proc(): passসিন্ট্যাক্টিক্যালি আপনি proc()একটি এক্সপ্রেশন হিসাবে ব্যবহার করতে পারেন তবে এটি সম্ভবত একটি বাগ ...
  • এক্সপ্রেশন এবং বিবৃতিতে পার্থক্যের বিষয়ে সি বলার চেয়ে পাইথন খানিকটা কঠোর। সি তে, যে কোনও অভিব্যক্তি আইনী বিবৃতি is আপনি func(x=2);কি এটি একটি অভিব্যক্তি বা বিবৃতি থাকতে পারে? ( উত্তর: পার্শ্ব-প্রতিক্রিয়া সহ স্টেটমেন্ট হিসাবে ব্যবহৃত এক্সপ্রেশন। ) পাইথনে x=2ফাংশন কলের অভ্যন্তরের অ্যাসাইনমেন্ট স্টেটমেন্টটি কেবল কলটিতে func(x=2)নামযুক্ত যুক্তিটি a2 তে সেট করে funcএবং সি উদাহরণের চেয়ে বেশি সীমাবদ্ধ।

"আমার অভিধান থেকে" অর্থ আপনার ব্যক্তিগত মতামত বা অক্সফোর্ড অভিধানের মতো আপনার নিজের কাছে থাকা অভিধানটি? ধন্যবাদ
টেলসপিন_কিট

1
@ টেলসপিন_কিট: ... আপনার ব্যক্তিগত মতামত বা অক্সফোর্ড অভিধানের মতো আপনার নিজের নিজস্ব ডিকশনারি? ভাল প্রশ্ন. আমি ম্যাকের উপরে অ্যাপল ডিকশনারি অ্যাপ ব্যবহার করেছি যা নিউ অক্সফোর্ড আমেরিকান ডিকশনারি ভিত্তিক।
ডাঃ

80

যদিও এটি পাইথনের সাথে সম্পর্কিত নয়:

একটি expressionএকটি মান মূল্যায়ন করে। এ statementকিছু করে।

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

3
তবে মনে রাখবেন যে সত্যই "শুদ্ধ" ব্যতীত সমস্ত ভাষায়, ভাবগুলি "কিছু করতে পারে" (আরও আনুষ্ঠানিকভাবে: একটি পার্শ্ব প্রতিক্রিয়াও রাখতে পারে)।

@ ডেলানন: আপনি কি একটি উদাহরণ দিতে পারেন (কৌতূহলী)? আমি সচেতন নই।
ব্যবহারকারী225312

4
তেমনি somelist.append(123),। বেশিরভাগ ফাংশন কল, সত্যিই।
থমাস কে

13
y = x + 1 এক্সপ্রেশন নয় বরং একটি বিবৃতি। ইভাল চেষ্টা করুন ("y = x + 1") এবং আপনার একটি ত্রুটি হবে।
আরগ্লানির

3
y = x +1 একটি অভিব্যক্তি বিবৃতি
এমমানুয়েল ওসিমোসু

13

বিবৃতিগুলি কোনও ক্রিয়া বা কমান্ডের প্রতিনিধিত্ব করে যেমন মুদ্রণ বিবৃতি, অ্যাসাইনমেন্ট বিবৃতি।

print 'hello', x = 1

এক্সপ্রেশন হল ভেরিয়েবল, ক্রিয়াকলাপ এবং মানগুলির সংমিশ্রণ যা ফলাফল মান দেয়।

5 * 5 # yields 25

সবশেষে, এক্সপ্রেশন বিবৃতি

print 5*5

8

একটি এক্সপ্রেশন এমন একটি জিনিস যা কোনও মানকে হ্রাস করা যায়, উদাহরণস্বরূপ "1+3"বা"foo = 1+3"

এটি যাচাই করা সহজ:

print foo = 1+3

যদি এটি কাজ করে না, এটি একটি বিবৃতি, যদি তা করে তবে এটি একটি অভিব্যক্তি।

অন্য বিবৃতি হতে পারে:

class Foo(Bar): pass

যেহেতু এটি কোনও মান হ্রাস করা যায় না।


1
আপনার প্রথম উদাহরণ নির্বাহ দেখাতে হবে যে, নিয়োগ হয় না - (না সত্যিই, যে একটি অভিব্যক্তি a = b = exprপাইথন, একটি বিশেষ ক্ষেত্রে যেমন অনুমতি দেওয়া হয়)। ভাষা থেকে সি থেকে আরও অনুপ্রেরণা আঁকতে, এটি।

class Foo(bar):একটি বিবৃতি শুরু, একটি সম্পূর্ণ বিবৃতি নয়।
সোভেন মারনাচ

1
foo = 1+3একটি অভিব্যক্তি নয়। এটি একটি বিবৃতি (সুনির্দিষ্ট হওয়ার জন্য একটি অ্যাসাইনমেন্ট)। অংশটি 1+3যদিও একটি অভিব্যক্তি।
পিথিকোস

2
আমার সূত্রটি খুব, খুব সুনির্দিষ্ট: "এটি যদি কাজ না করে তবে এটি একটি বিবৃতি, যদি তা করে তবে এটি একটি অভিব্যক্তি।" এটি কার্যকর করুন, এবং আপনার নিজের উত্তর হবে।
ফ্ল্যাভিয়াস

8
  1. একটি এক্সপ্রেশন একটি বিবৃতি যা একটি মান ফেরত দেয়। সুতরাং যদি এটি কোনও অ্যাসাইনমেন্টের ডানদিকে উপস্থিত হতে পারে, বা কোনও পদ্ধতি কলের পরামিতি হিসাবে, এটি একটি অভিব্যক্তি।
  2. কিছু কোড প্রসঙ্গের উপর নির্ভর করে একটি অভিব্যক্তি বা বিবৃতি উভয় হতে পারে। দ্বিপাক্ষিক হলে ভাষার দু'জনের মধ্যে পার্থক্য করার উপায় থাকতে পারে।

5

একটি এক্সপ্রেশন কিছু হয়, যখন একটি বিবৃতি কিছু করে।
একটি এক্সপ্রেশন এছাড়াও একটি বিবৃতি, কিন্তু এটির অবশ্যই ফিরতে হবে।

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

পিএস: দোভাষী সবসময় সমস্ত অভিব্যক্তির মান মুদ্রণ করে।


আমার মতে, একটি বিবৃতি নাল মান সহ একটি অভিব্যক্তি
Adalcar

3

বিবৃতি:

বিবৃতি একটি ক্রিয়া বা একটি আদেশ যা কিছু করে। উদাহরণস্বরূপ: যদি-অন্যথায়, লুপস .. ইত্যাদি

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

অভিব্যক্তি:

একটি এক্সপ্রেশন মান, অপারেটর এবং আক্ষরিক সংমিশ্রণ যা কিছু দেয় yield

val a: Int = 5 + 5 #yields 10

এটি বিদ্যমান বিদ্যমান উত্তরের সদৃশ: স্ট্যাকওভারফ্লো . com/ প্রশ্নগুলি / 7272২০80০73 / /
কারেল

1
হতে পারে এটি সদৃশ তবে এটি উপরের প্রশ্নের জন্য আমার মতামতগুলি ভাগ করে দেয়। কোনও অপরাধ নেই
রাজা শেকার

1

একটি বিবৃতিতে একটি কীওয়ার্ড রয়েছে।

একটি এক্সপ্রেশন একটি কীওয়ার্ড ধারণ করে না।

print "hello"বিবৃতি, কারণ printএকটি কীওয়ার্ড।

"hello" এটি একটি অভিব্যক্তি, তবে তালিকা সংক্ষেপণ এর বিপরীতে।

নিম্নলিখিতটি একটি অভিব্যক্তি বিবৃতি, এবং তালিকা অনুধাবন ছাড়াই এটি সত্য:

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

4
এটি দৃ'়রূপে আপনার একটি 'কীওয়ার্ড' সংজ্ঞা নির্ভর করে। x = 1এটি পুরোপুরি সূক্ষ্ম বিবৃতি, তবে কীওয়ার্ড ধারণ করে না।
জুস্ট

না, উদাহরণস্বরূপ isএকটি মূলশব্দ তবে x is yএটি অবশ্যই বিবৃতি নয় (সাধারণভাবে এটি কেবল একটি অভিব্যক্তি)।
বেনজিমিন

1

এক্সপ্রেশন:

  • এক্সপ্রেশন objectsএবং সমন্বয় দ্বারা গঠিত হয় operators
  • একটি এক্সপ্রেশন একটি মান আছে, যা একটি টাইপ আছে।
  • একটি সহজ অভিব্যক্তি জন্য সিনট্যাক্স:<object><operator><object>

2.0 + 3এটি এমন একটি অভিব্যক্তি যা এর সাথে মূল্যায়ন করে 5.0এবং এর সাথে সম্পর্কিত একটি প্রকার float

বিবৃতি

বিবৃতি প্রকাশ (গুলি) দ্বারা গঠিত। এটি একাধিক লাইন বিস্তৃত করতে পারে।


1

কিছু স্টেটমেন্ট রয়েছে যা আমাদের পাইথন প্রোগ্রামের অবস্থার পরিবর্তন করতে পারে: ভেরিয়েবলগুলি তৈরি বা আপডেট করা, ফাংশন সংজ্ঞায়িত করা ইত্যাদি etc.

এবং এক্সপ্রেশনগুলি কিছু মূল্য ফিরিয়ে দেয় কোনও ফাংশনে গ্লোবাল রাষ্ট্র বা স্থানীয় রাষ্ট্র পরিবর্তন করতে পারে না।

কিন্তু এখন আমরা পেয়েছি :=, এটি একটি পরক!


-1

পাইথন এক্সপ্রেশনকে "অভিব্যক্তি বিবৃতি" বলে, সুতরাং প্রশ্নটি সম্ভবত পুরোপুরি গঠিত হয়নি।

একটি বিবৃতি পাইথনে আপনি যা কিছু করতে পারেন তা নিয়ে থাকে: একটি মান গণনা করা, একটি মান নির্ধারণ করা, একটি ভেরিয়েবল মুছে ফেলা, একটি মান মুদ্রণ করা, একটি ফাংশন থেকে ফিরে আসা, একটি ব্যতিক্রম উত্থাপন ইত্যাদি সম্পূর্ণ তালিকা এখানে: http: // docs.python.org/reference/simple_stmts.html#

একটি এক্সপ্রেশন স্টেটমেন্ট কলিং ফাংশনগুলির মধ্যে সীমাবদ্ধ,


10
না, পাইথন এক্সপ্রেশনকে "এক্সপ্রেশন স্টেটমেন্ট" বলে না call পাইথন কেবলমাত্র একটিমাত্র অভিব্যক্তি "এক্সপ্রেশন স্টেটমেন্টস" নিয়ে গঠিত বিবৃতিগুলিকে কল করে।
সোভেন মারনাচ

... এবং এটি একা নয়।

-1

আমি মনে করি একটি অভিব্যক্তিটিতে অপারেটর + অপারেন্ড এবং অবজেক্ট রয়েছে যা অপারেশনের ফলাফল রাখে ... উদাহরণস্বরূপ

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

}

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.