จากวิชาสอนเขียนโปรแกรมของเด็กม.1 เรื่องการเปลี่ยนค่าตัวแปรในโปรแกรม มีประเด็นน่าสนใจดีนะครับ
ในหลายภาษาเขียนโปรแกรม การเปลี่ยนค่าตัวแปร รวมทั้งการส่งค่าอากิวเมนต์ไปให้พารามิเตอร์ของฟังก์ชั่น (เวลาเรียกฟังก์ชั่น) จะมี 2 คอนเซปต์ได้แก่
1) ก็อปปี้ค่า (value) จากตัวแปรหนึ่งไปให้อีกตัวแปรโดยตรง
2) ก็อปปี้ค่า reference (หรือ pointer) จากตัวแปรหนึ่ง ไปให้อีกตัวแปรโดยตรง ...ส่งผลทำให้ตัวแปรทั้งสองชี้ไปยังข้อมูลก้อนเดียวกัน (อ็อบเจ็กต์)
(ถ้าเป็นการส่งค่าอากิวเมนต์ไปให้พารามิเตอร์ของฟังก์ชั่น ก็จะเรียกว่า pass by value กับ pass by reference ตามลำดับนั่นเอง)
คราวนี้ถ้าไปดูในตำราม.1 บทที่ 3 สอน Python ภาษานี้จะมองทุกอย่างเป็นอ็อบเจ็กต์หมด เช่น ตัวเลข ก็มองเป็นอ็อบเจกต์ เมื่อตัวแปรเก็บค่าตัวเลข ตัวแปรนั้นก็จะชี้ไปยังอ็อบเจ็กต์ตัวเลข เป็นต้น
**** ใน Python จึงไม่มีการเปลี่ยนแปลงค่าตัวแปร โดยการก็อปปี้ value แต่จะเป็นก็อบปี้ object reference (เติมคำว่า object นำหน้า)
การเปลี่ยนแปลงค่าตัวแปรทุกๆ อย่างใน Python จะเป็นการก็อปปี้ค่า object reference ไปให้ รวมทั้งตอนส่งค่าอากิวเมนต์ไปให้พารามิเตอร์ของฟังก์ชั่น (เวลาเรียกฟังก์ชั่น) ก็จะเป็นการก็อปปี้ค่า object reference ไปให้เช่นกัน
ซึ่ง Python เขาจะเรียกการส่งค่าอากิวเมนต์ไปให้ฟังก์ชั่นว่าเป็น "Call by Object Reference" มากกว่า ไม่ว่าจะส่งข้อมูลเป็นชนิดอะไรก็ตาม ถือเป็นอ็อบเจ็กต์หมด (ไม่ได้มีคอนเซปต์ pass by value กับ pass by reference แบบภาษาอื่น)
เพื่อให้เห็นภาพลองดูบทเรียนของเด็กม .1 ในบทที่ 3 กันดีกว่า (ตามที่เห็นในรูป)
##################
>>> c = 16 # บรรทัด 1
>>> print(c) # บรรทัด 2
16
>>> d = c # บรรทัด 4
>>> print(d) # บรรทัด 5
16
>>> d= 15 # บรรทัด 7
>>> print(d) # บรรทัด 8
15
###################
😁 จะขออธิบายคำสั่งข้างบนกัน
👉 บรรทัด 1-2:
c=16 คำสั่งนี้จะสร้างตัวแปร c แล้วกำหนดให้ชี้ไปยังจำนวนเต็ม 16 จากนั้นแสดงผลด้วยคำสั่ง print(c) ได้ตัวเลข 16 ออกมา
👉 บรรทัด 4-5:
d=c คำสั่งนี้จะสร้างตัวแปร d แล้วชี้ไปที่ตัวแปร c จึงทำให้ตัวแปร d ชี้ไปยังจำนวนเต็ม 16 จากนั้นแสดงผลด้วยคำสั่ง print(d) ได้ตัวเลข 16 ออกมา
**** ถึงตอนนี้ ตัวแปร c กับ d ชี้ไปยังเลข 16 ก้อนเดียวกัน (ใครที่เคยศึกษาภาษาอื่นมา อาจแปลกใจนิดหนึ่ง)
👉 บรรทัด 7-8:
d=15 คำสั่งนี้จะกำหนดให้ตัวแปร d ชี้ไปยังจำนวนเต็ม 15 เมื่อแสดงด้วยคำสั่ง print(d) จะแสดง 15 ออกมา
ตอนนี้ตัวแปร c กับ d ชี้ไปยังข้อมูลคนละก้อนกันแล้ว
----
ถ้าดูภาพประกอบจากหนังสือเรียนม.1 อธิบายชัดเจนดี
แต่ทว่าในตำราไม่ได้พูดเรื่องก็อปปี้ค่าด้วย value หรือ reference อะไรพวกนี้หรอกนะครับ แต่น้องๆ ก็รู้ไว้ใช่ว่าใส่บ่าแบกหาม
เพราะถ้าน้องๆ ไปเขียนภาษาอื่น เช่น java , c, c++ จะมีคอนเซปต์ดังกล่าว จะแตกต่างจาก python ในตำราเรียนนะครับ
อย่างในตำราเรียนเขียนว่า
"ค่าที่เก็บในตัวแปร" อาจพูดว่า "ค่าที่ตัวแปรชี้อยู่" เช่น
>>> a = 100
100 คือค่าที่เก็บในตัวแปร หรือพูดอีกอย่างว่า 100 คือค่าที่ตัวแปรชี้อยู่
(ความหมายเดียวกัน)
+++ข้อมูล++++
หนังสือ "วิทยาการคำนวณ" ชั้น ม .1 บทที่ 3
「python print %d」的推薦目錄:
- 關於python print %d 在 โปรแกรมเมอร์ไทย Thai programmer Facebook 的最佳貼文
- 關於python print %d 在 BorntoDev Facebook 的最佳解答
- 關於python print %d 在 python - What's the difference between %s and %d in string ... 的評價
- 關於python print %d 在 Python print 格式化輸出與排版 的評價
- 關於python print %d 在 python教學:2-5-2 print格式化輸出~百分比% - YouTube 的評價
python print %d 在 BorntoDev Facebook 的最佳解答
สำหรับใครที่ต้องการเริ่มพัฒนาโปรแกรมคงจะมีคำถามในใจว่า "เราควรจะเริ่มจากภาษาไหนดี?" .. ซึ่งแน่นอนว่าหนึ่งในภาษาที่ได้รับความนิยมสูงสุดสำหรับผู้เริ่มต้นก็คือภาษา Python นั่นเอง 😲
.
แต่เดี๋ยวก่อนนะ .. ถ้าเราเอาข้อมูลไปค้นหาหละก็จะพบว่ามีภาษา Python 2 และ Python 3 ทั้งสองภาษานี้เหมือนกันไหม ? หรือ แตกต่างกันยังไง ? ทำไมเวลาลองเขียน Python 3 ไม่สามารถนำบางส่วนของ Python 2 มาเขียนได้ หรือ ทำไมเขียน Python 3 ไม่สามารถนำ Library ของอันเก่ามาใช้ไม่ได้ ?
.
ซึ่งนำมาอยู่กับคำถามที่ว่า "แล้วเราควรจะเลือกอะไรดีเนี่ย !?"
.
คำตอบคือเราต้องรู้ความแตกต่างระหว่างทั้งสองภาษานี้ก่อนครับ
.
ภาษา Python 3 ถูกพัฒนาต่อยอดมาจาก Python 2 ก็จริง ซึ่งมีการเปลี่ยนแปลงในรูปแบบเล็กๆ น้อยๆ หลายส่วนของคำสั่งอย่างเช่นคำสั่ง print ที่ในตัว Python 2 จะสามารถใช้ print "Hello World" ได้ตรงๆ แต่ Python 3 จะใช้ print("Hello World")
.
หลายคนคงสงสัยว่า "อ้าวพี่มันก็แค่นั้นเองนี่"
.
แต่สิ่งเล็กๆ แค่นี้ก็สามารถทำให้ Code ที่ถูกเขียนด้วย Python2 ไม่สามารถทำงานบนระบบใหม่ได้แล้วครับ ไม่ว่าจะเป็น Library ที่ถูกเขียนในรุ่นเก่ามาใช้ในตัวปัจจุบันก็ไม่สามารถใช้ได้
.
ซึ่งในปัจจุบันนี้จริงๆ Library หลายตัวก็ได้พัฒนามารองรับ Python3 กันเสียหมดแล้ว สำหรับน้องๆ คนไหนที่เคยพัฒนา Python 2 มาก่อนอาจจะต้องเปลี่ยนตัวเองเพื่อให้ทันโลกแล้วหละ ! เนื่องจาก Python3 จะกลายมาเป็นมาตรฐานใหม่ในการพัฒนา ด้วยฟีเจอร์ที่เพิ่มขึ้น และ การตัดสิ่งที่ไม่จำเป็นออกไปนั่นเองครับ :D
python print %d 在 Python print 格式化輸出與排版 的推薦與評價
Python 如果想用print 輸出整數,可以用 %d 格式化整數輸出的方式:. 1 2, n = 123 print('%d' % n). 輸出:. 1, 123. Python 如果想用print 輸出浮點數( ... ... <看更多>
python print %d 在 python教學:2-5-2 print格式化輸出~百分比% - YouTube 的推薦與評價
... d 代表資料為「整數」,%f 代表資料為「浮點數」。 郭義尚:[email protected]. python 教學:2-5-2 print 格式化輸出~百分比%. 241 views · 1 year ... ... <看更多>
python print %d 在 python - What's the difference between %s and %d in string ... 的推薦與評價
... <看更多>