ใน Python อะไรคือความแตกต่างระหว่างการแสดงออกและคำสั่ง?
ใน 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
Expression - จากพจนานุกรม New Oxford American :
expression: คณิตศาสตร์เป็นชุดของสัญลักษณ์ที่แสดงปริมาณร่วมกัน: นิพจน์สำหรับเส้นรอบวงของวงกลมคือ2πr
ในแง่ทั่วไปทั้งหมด: นิพจน์สร้างค่าอย่างน้อยหนึ่งค่า
ในหลามการแสดงออกจะครอบคลุมกว้างขวางในหลามภาษาอ้างอิงโดยทั่วไปการแสดงออกในหลามที่มีองค์ประกอบของการรวมกันทางกฎหมาย syntactically ของอะตอม , สรรหาและผู้ประกอบการ
ตัวอย่างของการแสดงออก:
ตัวอักษรและการรวมกันที่ถูกต้องทางไวยากรณ์กับผู้ประกอบการและฟังก์ชั่นในตัวหรือการเรียกใช้ฟังก์ชั่นที่ผู้ใช้เขียน:
>>> 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
คำชี้แจงจาก Wikipedia:
ในการเขียนโปรแกรมคอมพิวเตอร์คำสั่งสามารถถือได้ว่าเป็นองค์ประกอบแบบสแตนด์อโลนที่เล็กที่สุดของภาษาการเขียนโปรแกรมที่จำเป็น โปรแกรมประกอบด้วยรูปแบบของคำสั่งอย่างน้อยหนึ่งประโยค คำสั่งจะมีส่วนประกอบภายใน (เช่นนิพจน์)
ในแง่ทั่วไปทั่วไป: ประโยคทำบางสิ่งบางอย่างและมักจะประกอบด้วยนิพจน์ (หรือข้อความอื่น ๆ )
การอ้างอิงภาษา 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
Syntactically คุณสามารถใช้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
Expression คือการรวมกันของตัวแปรการดำเนินการและค่าที่ให้ค่าผลลัพธ์
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: ล่ามพิมพ์ค่าของนิพจน์ทั้งหมดเสมอ
คำให้การ:
คำสั่งคือการกระทำหรือคำสั่งที่ทำบางสิ่งบางอย่าง เช่นถ้าอื่นลูป .. เป็นต้น
val a: Int = 5
If(a>5) print("Hey!") else print("Hi!")
การแสดงออก:
Expression คือการรวมกันของค่าตัวดำเนินการและตัวอักษรที่ให้ผลลัพธ์บางอย่าง
val a: Int = 5 + 5 #yields 10
คำสั่งมีคำหลัก
นิพจน์ไม่มีคำหลัก
print "hello"
เป็นคำสั่งเพราะprint
เป็นคำหลัก
"hello"
คือการแสดงออก แต่การบีบอัดรายการผิดพลาด
ต่อไปนี้เป็นคำสั่ง expression และเป็นจริงโดยที่ไม่มีความเข้าใจในรายการ:
(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 เรียกนิพจน์ "expression expression" ดังนั้นคำถามนี้อาจจะยังไม่เกิดขึ้นอย่างสมบูรณ์
คำสั่งประกอบด้วยอะไรที่คุณสามารถทำได้ใน 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
}