1.การตั้งชื่อตัวแปร
ใน Python 2 ชื่อตัวแปรจะใช้ได้แค่อักษรโรมัน 26 ตัวหลัก (ทั้งพิมพ์ใหญ่และพิมพ์เล็ก) และตัวเลข 0 ถึง 9 แล้วก็สัญลักษณ์ขีดล่าง _ แต่ใน Python 3 สามารถตั้งชื่อเป็นอักษรชนิดอื่นได้ เช่น
- อักษรโรมันที่มีสัญลักษณ์เพิ่มเติม (áéíóúýäëïöüÿøåæñ ฯลฯ)
- อักษรกรีก (αβγδεζηθικλμνξοπρστυφχψω ฯลฯ)
- อักษรไทย ลาว เขมร เวียดนาม จีน ญี่ปุ่น เกาหลี ฯลฯ (ไทย ລາວ ខ្មែរ Việt 漢字 カタカナ ひらがな 한글 ฯลฯ)
ตัวอย่าง
Code: Select all
นักศึกษามหาวิทยาลัยที่หนึ่งมีจำนวนนิสิต = 22,200
Code: Select all
SyntaxError: invalid syntax
2.ชนิดข้อมูลจำนวนเต็ม
ใน Python 2 นั้นจำนวนเต็มถูกแบ่งเป็น 2 ชนิดคือ int กับ long แต่ใน Python 3 ได้รวมกันเป็นชนิดเดียวคือ int โดยค่า int จะมีขอบเขตจำกัดอยู่ค่าหนึ่ง ค่าสูงสุดของ int นั้นมีจำกัดอยู่แล้วแต่เครื่อง
ตัวอย่าง
Code: Select all
import sys
print(sys.maxint)
Code: Select all
1208925819614629174706176
Code: Select all
1208925819614629174706176L
ดังนั้นหากพิมพ์ 1208925819614629174706176L ลงใน Python 3 ก็จะขึ้นว่า
Code: Select all
SyntaxError: invalid syntax
ใน Python 2 นั้นหากจะแปลงสายอักขระที่เก็บตัวเลขให้เป็นข้อมูลชนิดจำนวนตัวเลขจะต้องใช้เลขฮินดูอารบิกเท่านั้น เช่น
Code: Select all
int('20') # ได้ 20
Code: Select all
int('๒๐') # ได้ 20
4.ฟังก์ชัน print
ใน Python 2 คำสั่ง print มีโครงสร้างการใช้แบบนี้
Code: Select all
print 'Mindphp'
Code: Select all
print ('Mindphp')
5.ฟังก์ชัน input
ใน Python 2 นั้นฟังก์ชัน input จะเป็นการใส่ข้อมูลที่เป็นตัวเลข แต่หากจะใส่สายอักขระต้องเป็น raw_input แต่ใน Python 3 ถูกแก้ให้ input เป็นการนำเข้าสายอักขระเท่านั้น และฟังก์ชัน raw_input ก็หายไป ไม่สามารถใช้ได้แล้ว
ยกตัวอย่าง เช่น
Code: Select all
c = input()
Code: Select all
NameError: name 'ข้อความ' is not defined
ใน Python 2 นั้นจำนวนเต็มหารจำนวนเต็มจะได้จำนวนเต็มเช่นเดิม และหากเหลือเศษจะมีการปัดเศษให้เป็นจำนวนเต็ม
แต่ใน Python 3 จำนวนเต็มหารจำนวนเต็มจะได้จำนวนจริง ซึ่งมีทศนิยมได้ ดังนั้นจะไม่มีการปัดเศษ
ยกตัวอย่าง
Code: Select all
print(5/3)
Code: Select all
1.6666666666666667
Code: Select all
1
ใน Python 2 หากจำนวนติดลบยกกำลังก็จะขัดข้องทันที ในขณะที่ใน Python 3 จะเปลี่ยนเป็นข้อมูลชนิดจำนวนเชิงซ้อนให้เลย เช่น
Code: Select all
(-2)**1.1
Code: Select all
(-2.0386342710747223-0.6623924280875919j)
Code: Select all
ValueError: negative number cannot be raised to a fractional power
ใน Python 3 ชนิดของตัวอักษรที่เก็บอยู่ภายในสายอักขระนั้นทั้งหมดถูกเก็บในรูปแบบของ ยูนิโค้ด (unicode) ซึ่งสามารถเก็บตัวอักษรทั้งหมดทุกชนิดได้ในลักษณะเดียวกัน แต่ใน Python 2 อักษรถูกเก็บในรูปของ ASCII ส่วนอักษรที่ไม่ใช่อักษร ASCII ถูกเก็บในรูปของรหัสยูนิโค้ด utf-8
เมื่อลองใช้ฟังก์ชัน len เพื่อหาความยาวของสายอักขระที่มีอักษรที่ไม่ใช่ ASCII เปรียบเทียบกันระหว่างใน Python 2 กับ 3
Code: Select all
print(len('mindpกขคงจ'))
Code: Select all
10
แต่ถ้าเป็นใน Python 2 จะได้เป็น
Code: Select all
20
9.ชนิดข้อมูลของ range
หนึ่งในฟังก์ชันที่ถูกเปลี่ยนแปลงไปก็คือฟังก์ชัน range และมีฟังก์ชันหนึ่งที่หายไป นั่นก็คือ xrange ใน Python 2 นั้นมีฟังก์ชัน range กับ xrange ทั้ง 2 ฟังก์ชันแล้วคล้ายกันแต่มีความต่างกันเล็กน้อย
range เป็นฟังก์ชันสำหรับคืนค่าข้อมูลประเภทลิสต์ของจำนวนเต็มซึ่งมีค่าในช่วงตามที่กำหนดออกมา เช่น
Code: Select all
print(range(10)) #จะได้ [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
Code: Select all
print(type(range(10)) #จะได้ <type 'list'>
Code: Select all
print(xrange(10))#จะได้ xrange(10)
10.การจัดการกับตัวแปรที่ใช้ใน for
ใน Python 3 เมื่อใช้คำสั่ง for สำหรับสร้างลิสต์ ตัวแปรนั้นจะถูกแยกออกเป็นคนละโลกกับตัวแปรภายนอก กล่าวคือต่อให้ชื่อตัวแปรซ้ำกันก็จะไม่กระทบต่อตัวแปรนั้นที่อยู่นอกคำสั่ง สร้างลิสต์ เช่น
Code: Select all
i=10
print('ค่า i ก่อน for:', i)
print('ค่า i ใน for:', [i for i in range(5)])
print('ค่า i หลัง for:', i)
Code: Select all
ค่า i ก่อน for: 10
ค่า i ใน for: [0, 1, 2, 3, 4]
ค่า i หลัง for: 10
11.เมธอด keys, values และ items ของดิกชันนารี
ใน Python 2 เมธอด keys, values และ items จะคืนค่าลิสต์ของคีย์, ค่า และ ทูเพิลของคีย์และค่า ตามลำดับ เช่น
Code: Select all
dic = {'a': 1, 'b': 2, 'c': 3}
print(dic.keys())
print(dic.values())
print(dic.items())
Code: Select all
['a', 'b', 'c']
[1, 2, 3]
[('a', 1), ('b', 2), ('c', 3)]
Code: Select all
dict_keys(['c', 'b', 'a'])
dict_values([3, 2, 1])
dict_items([('c', 3), ('b', 2), ('a', 1)])
Python 2 นั้น ฟังก์ชัน map เมื่อใช้แล้วจะคืนค่าออกมาเป็นลิสต์ ไม่ว่าจะใส่ลิสต์หรือทูเพิลหรือเซ็ต
Code: Select all
map(float,(1,2,3)) # ได้ [1.0, 2.0, 3.0]
Code: Select all
map(float,(1,2,3)) # ได้ <map at 0x112383710>
list(map(float,(1,2,3))) # ได้ [1.0, 2.0, 3.0]
Code: Select all
filter(lambda x:x%2,[1,2,3]) # ได้ [1, 3]
filter(lambda x:x%2==0,(1,2,3)) # ได้ (2,)
filter(lambda x:x<3,{1,2,3}) # ได้ [1, 2]
Code: Select all
filter(lambda x:x<3,{1,2,3}) # ได้ <filter at 0x112383eb8>
set(filter(lambda x:x<3,{1,2,3})) # ได้ {1, 2}
Code: Select all
zip({1,2},{3,4}) # ได้ [(1, 3), (2, 4)]
zip([1,2,3],[4,5,6]) # ได้ [(1, 4), (2, 5), (3, 6)]
Code: Select all
zip({1,2},{3,4}) # ได้ <zip at 0x11239e188>
list(zip([1,2,3],[4,5,6])) # ได้ [(1, 4), (2, 5), (3, 6)]
ใน Python 2 เวลาที่จะประกาศเรียกใช้ฟังก์ชัน super จากในซับคลาสเพื่อเรียกซูเปอร์คลาสจะมีกฏ
Code: Select all
class test(object):
def __init__(self,x):
self.x = x
class test(stest):
def __init__(self,x,y):
super(test,self).__init__(x)
self.y = y
c = test(5,10)
แต่ใน Python 3 สามารถละได้ทั้งหมด จึงเขียนแค่นี้ได้
Code: Select all
class stest:
def __init__(self,x):
self.x = x
class test(stest):
def __init__(self,x,y):
super().__init__(x)
self.y = y
c = test(5,10)
14.ออบเจ็กต์ของความผิดพลาดในโครงสร้าง try except
ใน Python 2 เวลาที่ใช้ except หากต้องการให้มีตัวแปรมารับออบเจ็กต์ของความผิดพลาดเพื่อนำไปแสดงผลหรือทำอะไรจะใช้จุลภาค , เขียนต่อจากชนิดของข้อผิดพลาดไปเลย
Code: Select all
import math
try:
1/0
except Exception, er:
print(type(er))
print(er)
# จะได้ <type 'exceptions.ZeroDivisionError'> integer division or modulo by zero
Code: Select all
import math
try:
1/0
except Exception as er:
print(type(er))
print(er)
# จะได้ ]<class 'ZeroDivisionError'> division by zero
นิยามคลาสของอิเทอเรเตอร์นั้นภายในโครงสร้างจะต้องนิยามเมธอดที่จะให้ทำงานเมื่อเจอฟังก์ชัน next ซึ่งเมธอดนั้นใน Python 2 มีชื่อว่า next
Code: Select all
class test:
def __init__(self):
self.n = 0
def __iter__(self):
return self
def next(self):
self.n += 1
return self.n
Code: Select all
class test:
def __init__(self):
self.n = 0
def __iter__(self):
return self
def __next__(self):
self.n += 1
return self.n
16.มอดูล __future__
Python 2 สามารถนำคำสั่งบางอย่างจาก Python 3 มาใช้ได้โดยการนำเข้ามอดูล __future__ เช่น
Code: Select all
from __future__ import print_function
print 5
# จะได้ SyntaxError: invalid syntax
Code: Select all
print(5,5,5,5)
# จะได้ 5 5 5 5
-บทเรียน Python
-บทเรียน Python Framework Flask
-ความหมายของคำ คืออะไร
-VDO Tutorial - Python
-ถาม-ตอบ Java & Python