คําสั่งขึ้นบรรทัดใหม่ python

สวัสดีผู้อ่านทุกท่านครับ บทความนี้ผมจะพาผู้อ่านไปเรียนรู้กับการเขียนโค้ดบรรทัดเดียวกับภาษา Python กันครับ

! คำเตือน
การเขียนโค้ดแบบบรรทัดเดียวเป็นเพียงการย่อจำนวนบรรทัดเท่านั้น ประสิทธิภาพไม่ได้ทำงานเร็วขึ้น  (และอาจช้าลงหากเขียนโค้ดไม่มีคุณภาพ) และอาจก่อให้เกิดปัญหาการดูแลโค้ดระยะยาวได้เนื่องจากโครงสร้างโค้ดจะอ่านยากขึ้น ไม่เหมาะสมสำหรับผู้ริเริ่มเขียนโปรแกรมบนภาษา Python ครับ

การเขียนโค้ดหลาย ๆ โค้ดในบรรทัดเดียวบนภาษา Python


ภาษา Python รองรับการเขียนโค้ดบนบรรทัดเดียว แม้ว่าจะมีหลายคำสั่ง โดยใช้ ; ในการแบ่งคำสั่งเป็นคนละคำสั่ง โดยโค้ดที่นำมาใช้ต้องไม่มีปัญหาเรื่อง indent ครับ

print("Hello :)"); a = 0;print("a = 0") if a==0 else 0

ผลลัพธ์
Hello :) a = 0
หรือจะสร้างเป็นฟังก์ชันแล้วดึงมาใช้งาน
def main():
  print("a = 0") if a==0 else 0
main()

ผลลัพธ์
Hello :) a = 0



การตรวจสอบเงื่อนไขด้วย IF ELSE แบบย่อบรรทัดเดียวใน Python


มีหลักไวยากรณ์ดังนี้

ค่าเมื่อเป็นจริง if เงื่อนไข else ค่าเมื่อเป็นเท็จ

โค้ดต้นฉบับ
if a > 7:
  i = 5
else:
  i = 0

เมื่อนำมาเขียนใหม่ในบรรทัดเดียว

i = 5 if a > 7 else 0




การลูป for แบบย่อบรรทัดเดียวใน Python


มีหลักไวยากรณ์ดังนี้
[thing for thing in list_of_things]

ตัวอย่าง
for c in 'word':
  print(c)

ผลลัพธ์
w o r d
เมื่อนำมาเขียนเป็นคำสั่งลูปในบรรทัดเดียว
print([c for c in 'word'])

ผลลัพธ์
['w', 'o', 'r', 'd']
จะเห็นได้ว่า เราสามารถใช้การลูป for แบบย่อบรรทัดเดียวได้ โดยชนิดของข้อมูลจากการลูปจะเป็นข้อมูลชนิด list

การลูปตัวเลขด้วย range
for x in range(3):
  print (x)

ผลลัพธ์
0 1 2
เมื่อนำมาเขียนเป็นคำสั่งลูปในบรรทัดเดียว

print([x for x in range(3)])

ผลลัพธ์
[0, 1, 2]



การลูป while แบบย่อบรรทัดเดียวใน Python


มีหลักไวยากรณ์ดังนี้

while expression: คำสั่ง

ตัวอย่าง
โค้ดต้นฉบับ
while a<0:
  print("a < 0")
  a=a+1

เมื่อนำมาเขียนบนบรรทัดเดียว
while a<0: print("a < 0");a=a+1
ตัวอย่างการใช้งาน
a=-9
while a<0: print("a < 0");a=a+1

ผลลัพธ์
a < 0 a < 0 a < 0 a < 0 a < 0 a < 0 a < 0 a < 0 a < 0



เรียกใช้คำสั่ง Python บรรทัดเดียวบนคอมมานด์ไลน์


ภาษา Python สามารถนำคำสั่งแบบบรรทัดเดียวมาทำงานบนคอมมานด์ไลน์ได้เลย โดยไม่ต้องพิมพ์คำสั่งลงไฟล์หรือ Python IDE ต่าง ๆ
python -c "โค้ดคำสั่งภาษา Python"
สิ่งที่ควรระวัง คือ เรื่องการใช้เครื่องหมาย "" กับ '' ของโค้ดคำสั่งครับ ผมแนะนำให้ใช้ '' ใน โค้ดคำสั่ง ภายใน
python -c "print('Hi')"
ครับ

ตัวอย่างเช่น
python -c "print('Hello :)'); a = 0;print('a = 0') if a==0 else 0"
ผลลัพธ์
Hello :) a = 0



ความสนุกยังไม่หมดแค่นี้ เราสามารถนำคำสั่งบรรรทัดเดียวของ Python ไปสร้างโค้ดเล่นกันสนุก ๆ ได้ครับ ดูเพิ่มเติมได้ที่ //arunrocks.com/python-one-liner-games/
ติดตามบทความต่อไปนะครับ
ขอบคุณครับ

หากใช้เครื่องหมายคำพูดสามตัวเพื่อใส่สตริง สตริงนั้นจะเป็นสตริงตามที่เป็นอยู่ รวมถึงการขึ้นบรรทัดใหม่ด้วย

s = '''Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3

หากคุณต้องการเยื้อง

เครื่องหมายอัญประกาศสามตัวยังเป็นช่องว่างในสตริง ดังนั้นหากคุณพยายามเขียนโค้ดและเยื้องให้เรียบร้อยดังที่แสดงด้านล่าง ช่องว่างที่ไม่จำเป็นจะถูกแทรก

s = ''' Line1 Line2 Line3 ''' print(s) # # Line1 # Line2 # Line3 #

โดยการใช้แบ็กสแลชละเว้นบรรทัดใหม่ในโค้ดและทำให้เป็นบรรทัดต่อเนื่อง สามารถเขียนได้ดังนี้

ล้อมรอบแต่ละบรรทัดด้วย ” หรือ “” และเพิ่มอักขระขึ้นบรรทัดใหม่ ← n ที่ท้ายประโยค

s = 'Line1\n'\ 'Line2\n'\ 'Line3' print(s) # Line1 # Line2 # Line3

ในที่นี้ ไวยากรณ์คือตัวอักษรสตริงที่ต่อเนื่องกันถูกต่อกัน ดูบทความต่อไปนี้สำหรับรายละเอียด

  • บทความที่เกี่ยวข้อง:การต่อและรวมสตริงใน Python (+ ตัวดำเนินการ เข้าร่วม ฯลฯ )

หากคุณต้องการเพิ่มการเยื้องในสตริง ให้เพิ่มช่องว่างให้กับสตริงในแต่ละบรรทัด

s = 'Line1\n'\ ' Line2\n'\ ' Line3' print(s) # Line1 # Line2 # Line3

นอกจากนี้ เนื่องจากสามารถขึ้นบรรทัดใหม่ได้อย่างอิสระในวงเล็บ จึงสามารถเขียนสิ่งต่อไปนี้โดยใช้วงเล็บแทนแบ็กสแลช

s = ('Line1\n' 'Line2\n' 'Line3') print(s) # Line1 # Line2 # Line3 s = ('Line1\n' ' Line2\n' ' Line3') print(s) # Line1 # Line2 # Line3

หากคุณต้องการจัดตำแหน่งจุดเริ่มต้นของบรรทัด ให้เพิ่มแบ็กสแลชที่บรรทัดแรกของอัญประกาศสามตัว

s = '''\ Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3 s = '''\ Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3

เชื่อมรายการสตริงด้วยการขึ้นบรรทัดใหม่

วิธีสตริง join() สามารถใช้เพื่อเชื่อมรายการสตริงเป็นสตริงเดียว

  • บทความที่เกี่ยวข้อง:การต่อและรวมสตริงใน Python (+ ตัวดำเนินการ เข้าร่วม ฯลฯ )

เมื่อ join() ถูกเรียกจากอักขระขึ้นบรรทัดใหม่ แต่ละอิลิเมนต์สตริงจะถูกต่อด้วยการขึ้นบรรทัดใหม่

l = ['Line1', 'Line2', 'Line3'] s_n = '\n'.join(l) print(s_n) # Line1 # Line2 # Line3 print(repr(s_n)) # 'Line1\nLine2\nLine3' s_rn = '\r\n'.join(l) print(s_rn) # Line1 # Line2 # Line3 print(repr(s_rn)) # 'Line1\r\nLine2\r\nLine3'

ดังในตัวอย่างข้างต้น สามารถใช้ฟังก์ชัน repr() ในตัวเพื่อตรวจสอบสตริงที่มีโค้ดขึ้นบรรทัดใหม่ตามที่เป็นอยู่

  • repr(object) — Built-in Functions — Python 3.10.2 Documentation

แยกสตริงเป็นบรรทัดใหม่และรายการ:splitlines()

วิธีสตริง splitlines() สามารถใช้เพื่อแยกสตริงออกเป็นรายการของการขึ้นบรรทัดใหม่

splitlines() จะแยกรหัสตัวแบ่งบรรทัดใด ๆ ต่อไปนี้ แท็บแนวตั้งและตัวแบ่งหน้ายังถูกแยกออกอีกด้วย

  • s = '''Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3 8
  • s = '''Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3 9
  • s = ''' Line1 Line2 Line3 ''' print(s) # # Line1 # Line2 # Line3 # 7
  • s = ''' Line1 Line2 Line3 ''' print(s) # # Line1 # Line2 # Line3 # 8
s = 'Line1\nLine2\r\nLine3' print(s.splitlines()) # ['Line1', 'Line2', 'Line3']
  • str.splitlines() — Built-in Types — Python 3.10.2 Documentation

ลบและเปลี่ยนรหัสฟีดบรรทัด

ด้วยการรวม splitlines() และ join() เป็นไปได้ที่จะลบ (ลบ) รหัสขึ้นบรรทัดใหม่ออกจากสตริงที่มีการขึ้นบรรทัดใหม่หรือแทนที่ด้วยสตริงอื่น ๆ

s = 'Line1\nLine2\r\nLine3' print(''.join(s.splitlines())) # Line1Line2Line3 print(' '.join(s.splitlines())) # Line1 Line2 Line3 print(','.join(s.splitlines())) # Line1,Line2,Line3

สามารถเปลี่ยนชุดรหัสฟีดบรรทัดได้ แม้ว่ารหัสตัวแบ่งบรรทัดจะผสมกันหรือไม่รู้จักก็ตาม ก็สามารถแยกรหัสได้โดยใช้ splitlines() แล้วต่อด้วยรหัสตัวแบ่งบรรทัดที่ต้องการ

s = '''Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3 0

ดังที่กล่าวไว้ข้างต้น splitlines() จะแยกโค้ดขึ้นบรรทัดใหม่ ดังนั้นจึงไม่จำเป็นต้องกังวลเกี่ยวกับโค้ดขึ้นบรรทัดใหม่เป็นพิเศษในกรณีของวิธีการรวม splitlines() และ join()

หากรหัสขึ้นบรรทัดใหม่ชัดเจน ก็สามารถแทนที่ด้วยวิธีการแทนที่ () ซึ่งจะแทนที่สตริง

s = '''Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3 1

อย่างไรก็ตาม โปรดทราบว่าจะไม่ทำงานหากมีรหัสฟีดบรรทัดที่แตกต่างจากที่คาดไว้

s = '''Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3 2

เป็นไปได้ที่จะแทนที่รหัสขึ้นบรรทัดใหม่หลายรหัสโดยทำซ้ำแทนที่ () แต่จะไม่ทำงานหากคำสั่งไม่ถูกต้องเนื่องจาก “\r\n” มี “\n” วิธีการรวม splitlines() และ join() ที่อธิบายไว้ข้างต้นนั้นปลอดภัยกว่าเพราะไม่จำเป็นต้องกังวลเกี่ยวกับรหัสฟีดบรรทัด

s = '''Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3 3

ใช้เมธอด rstrip() เพื่อลบโค้ดฟีดบรรทัดที่ท้ายประโยค rstrip() เป็นวิธีการลบอักขระช่องว่าง (รวมถึงการป้อนบรรทัด) ที่ด้านขวาสุดของสตริง

s = '''Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3 4

พิมพ์ออกโดยไม่ต้องขึ้นบรรทัดใหม่

ฟังก์ชัน print() จะเพิ่มบรรทัดใหม่ต่อท้ายโดยค่าเริ่มต้น ดังนั้น หากดำเนินการ print() อย่างต่อเนื่อง ผลลัพธ์แต่ละรายการจะแสดงขึ้นในบรรทัดใหม่

s = '''Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3 5

เนื่องจากค่าดีฟอลต์ของอาร์กิวเมนต์ end of print() ซึ่งระบุสตริงที่จะเพิ่มในตอนท้าย เป็นสัญลักษณ์ขึ้นบรรทัดใหม่

หากคุณไม่ต้องการขึ้นบรรทัดใหม่ต่อท้าย ให้ตั้งค่าอาร์กิวเมนต์ end เป็นสตริงว่าง แล้วเอาต์พุตจะออกโดยไม่มีการขึ้นบรรทัดใหม่ต่อท้าย

s = '''Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3 6

อาร์กิวเมนต์สิ้นสุดสามารถเป็นสตริงใดก็ได้

s = '''Line1 Line2 Line3''' print(s) # Line1 # Line2 # Line3 7

อย่างไรก็ตาม หากคุณต้องการเชื่อมสตริงสำหรับเอาต์พุต การเชื่อมสตริงดั้งเดิมทำได้ง่ายกว่าการระบุในอาร์กิวเมนต์ท้ายของ print() ดูบทความต่อไปนี้

Toplist

โพสต์ล่าสุด

แท็ก