Python 3.6¶
Python 3.6 เบต้า 1 ได้เปิดตัวเมื่อวันที่ 12 กันยายน 2016 และสรุปฟีเจอร์ใหม่สามารถดูได้ที่:
ฟีเจอร์ไวยากรณ์ใหม่ |
สถานะ |
|
การจัดรูปแบบสตริงแบบตรงตัว |
สมบูรณ์ |
|
การใช้เครื่องหมายขีดล่างในตัวเลขแบบตรงตัว |
สมบูรณ์ |
|
เจเนอเรเตอร์แบบอะซิงโครนัส |
||
ไวยากรณ์สำหรับคำอธิบายตัวแปร (เบื้องต้น) |
สมบูรณ์ |
|
คอมพรีเฮนชันแบบอะซิงโครนัส |
||
ฟีเจอร์บิวต์อินใหม่ |
||
การรักษาลำดับของ kwargs ในฟังก์ชัน |
||
การปรับแต่งการสร้างคลาสที่ง่ายขึ้น |
บางส่วน [1] |
|
การรักษาลำดับการกำหนด Attribute ของคลาส |
||
การเปลี่ยนแปลงในไลบรารีมาตรฐาน |
||
การแยกความกำกวมของเวลาท้องถิ่น |
||
การเพิ่มโมดูล Secrets เข้าในไลบรารีมาตรฐาน |
||
การเพิ่มโปรโตคอลเส้นทางระบบไฟล์ |
||
ภายใน CPython |
||
การเพิ่มเวอร์ชันส่วนตัวให้กับ dict |
ไม่ดำเนินการ |
|
การเพิ่ม API สำหรับประเมินเฟรมใน CPython |
||
การเปลี่ยนแปลงบน Linux/Windows |
||
ทำให้ |
||
เปลี่ยนการเข้ารหัสคอนโซล Windows เป็น UTF-8 |
||
เปลี่ยนการเข้ารหัสระบบไฟล์ Windows เป็น UTF-8 |
||
การเปลี่ยนแปลงภาษาอื่นๆ:
ขณะนี้คำสั่ง global หรือ nonlocal ต้องปรากฏในโค้ดก่อนการใช้ชื่อที่เกี่ยวข้องครั้งแรกในขอบเขตเดียวกัน ก่อนหน้านี้จะเป็นเพียง SyntaxWarning |
|
ปัจจุบันสามารถกำหนดเมธอดพิเศษเป็น None เพื่อระบุว่าการดำเนินการที่เกี่ยวข้องไม่พร้อมใช้งาน ตัวอย่างเช่น หากคลาสกำหนด __iter__() เป็น None คลาสนั้นจะไม่สามารถวนซ้ำได้ |
|
บรรทัด traceback ที่ซ้ำกันเป็นลำดับยาวจะถูกย่อเป็น [Previous line repeated {count} more times] |
|
ขณะนี้ Import จะแสดงข้อยกเว้นใหม่ ModuleNotFoundError เมื่อไม่พบโมดูล โค้ดที่ตรวจสอบ ImportError (ใน try-except) จะยังคงทำงานได้ |
|
เมธอดของคลาสที่ใช้ super() แบบไม่มีอาร์กิวเมนต์จะทำงานได้อย่างถูกต้องเมื่อถูกเรียกจากเมธอด metaclass ระหว่างการสร้างคลาส |
การเปลี่ยนแปลงในโมดูลบิวต์อิน:
ตัววนซ้ำของ array.array ที่หมดแล้วจะยังคงหมดอยู่แม้ว่า array ที่วนซ้ำจะถูกขยาย |
|
ฟังก์ชัน b2a_base64() ขณะนี้รับอาร์กิวเมนต์คีย์เวิร์ด newline ที่เป็นตัวเลือกเพื่อควบคุมว่าจะต่อท้ายอักขระขึ้นบรรทัดใหม่กับค่าที่ส่งคืนหรือไม่ |
สมบูรณ์ |
ได้เพิ่มค่าคงที่ใหม่ cmath.tau (τ) |
|
ค่าคงที่ใหม่: cmath.inf และ cmath.nan ที่สอดคล้องกับ math.inf และ math.nan รวมถึง cmath.infj และ cmath.nanj ที่สอดคล้องกับรูปแบบที่ใช้ใน complex repr |
|
ได้เพิ่มคลาสฐาน abstract ใหม่ Collection เพื่อแทนคลาส container ที่ระบุขนาดและวนซ้ำได้ |
|
คลาสฐาน abstract ใหม่ Reversible แทนคลาสที่วนซ้ำได้และยังมีเมธอด __reversed__() |
|
คลาสฐาน abstract ใหม่ AsyncGenerator แทนเจเนอเรเตอร์แบบอะซิงโครนัส |
|
ฟังก์ชัน namedtuple() ขณะนี้รับอาร์กิวเมนต์คีย์เวิร์ด module ที่เป็นตัวเลือก ซึ่งเมื่อระบุแล้วจะถูกใช้เป็น attribute __module__ ของคลาส named tuple ที่ส่งคืน |
|
อาร์กิวเมนต์ verbose และ rename สำหรับ namedtuple() ขณะนี้เป็นแบบ keyword-only |
|
อินสแตนซ์ collections.deque แบบเรียกซ้ำสามารถ pickle ได้แล้ว |
|
ได้เพิ่มฟังก์ชันแฮช BLAKE2 เข้าในโมดูล blake2b() และ blake2s() พร้อมใช้งานเสมอและรองรับฟีเจอร์ครบถ้วนของ BLAKE2 |
|
ได้เพิ่มฟังก์ชันแฮช SHA-3 sha3_224(), sha3_256(), sha3_384(), sha3_512() และฟังก์ชันแฮช SHAKE ได้แก่ shake_128() และ shake_256() |
|
ฟังก์ชันการสร้างคีย์จากรหัสผ่าน scrypt() ขณะนี้พร้อมใช้งานกับ OpenSSL 1.1.0 และใหม่กว่า |
|
json.load() และ json.loads() ขณะนี้รองรับอินพุตแบบไบนารี JSON ที่เข้ารหัสควรแสดงโดยใช้ UTF-8, UTF-16 หรือ UTF-32 |
|
ได้เพิ่มค่าคงที่ใหม่ math.tau (τ) |
สมบูรณ์ |
เมธอด close() ใหม่ช่วยให้ปิด iterator ของ scandir() ได้อย่างชัดเจน ปัจจุบัน iterator ของ scandir() รองรับโปรโตคอล context manager |
|
บน Linux ขณะนี้ os.urandom() จะบล็อกจนกว่า entropy pool ของ urandom ในระบบจะถูกเตรียมพร้อมเพื่อเพิ่มความปลอดภัย |
|
syscall getrandom() ของ Linux (รับไบต์แบบสุ่ม) ขณะนี้เปิดเผยเป็นฟังก์ชันใหม่ os.getrandom() |
|
เพิ่มการรองรับ modifier spans ในนิพจน์ปกติ ตัวอย่าง: '(?i:p)ython' ตรงกับ 'python' และ 'Python' แต่ไม่ตรงกับ 'PYTHON'; '(?i)g(?-i:v)r' ตรงกับ 'GvR' และ 'gvr' แต่ไม่ตรงกับ 'GVR' |
|
กลุ่มของ Match object สามารถเข้าถึงได้ด้วย __getitem__ ซึ่งเทียบเท่ากับ group() ดังนั้น mo['name'] ขณะนี้เทียบเท่ากับ mo.group('name') |
|
ปัจจุบัน Match objects รองรับอ็อบเจ็กต์แบบ index เป็น group indices |
|
ฟังก์ชัน ioctl() ขณะนี้รองรับรหัสควบคุม SIO_LOOPBACK_FAST_PATH |
|
ขณะนี้รองรับค่าคงที่ getsockopt() ได้แก่ SO_DOMAIN, SO_PROTOCOL, SO_PEERSEC และ SO_PASSSEC |
|
ขณะนี้ setsockopt() รองรับรูปแบบ setsockopt(level, optname, None, optlen: int) |
|
โมดูล socket ขณะนี้รองรับตระกูลที่อยู่ AF_ALG เพื่อเชื่อมต่อกับ Linux Kernel crypto API ได้เพิ่ม ALG_, SOL_ALG และ sendmsg_afalg() |
|
ได้เพิ่มค่าคงที่ Linux ใหม่ TCP_USER_TIMEOUT และ TCP_CONGESTION |
|
ssl รองรับ OpenSSL 1.1.0 โดยเวอร์ชันขั้นต่ำที่แนะนำคือ 1.0.2 |
|
นำ 3DES ออกจากชุด cipher suite เริ่มต้นและเพิ่ม ChaCha20 Poly1305 cipher suites |
|
SSLContext มีการกำหนดค่าเริ่มต้นที่ดีขึ้นสำหรับตัวเลือกและ cipher |
|
เซสชัน SSL สามารถคัดลอกจากการเชื่อมต่อฝั่ง client หนึ่งไปยังอีกการเชื่อมต่อด้วยคลาส SSLSession ใหม่ การ resume เซสชัน TLS สามารถเร่งความเร็วในการ handshake เริ่มต้น ลดเวลาแฝง และปรับปรุงประสิทธิภาพ |
|
เมธอด get_ciphers() ใหม่สามารถใช้เพื่อรับรายการ cipher ที่เปิดใช้งานตามลำดับความสำคัญ |
|
ค่าคงที่และ flag ทั้งหมดได้ถูกแปลงเป็น IntEnum และ IntFlags |
|
ได้เพิ่มโปรโตคอล TLS เฉพาะสำหรับ server และ client ใน SSLContext |
|
ได้เพิ่ม SSLContext.post_handshake_auth สำหรับเปิดใช้งาน และ ssl.SSLSocket.verify_client_post_handshake() สำหรับเริ่มการยืนยันตัวตนหลัง handshake ของ TLS 1.3 |
|
ขณะนี้รองรับ IEEE 754 half-precision float ผ่านตัวระบุรูปแบบ 'e' |
|
ฟังก์ชัน getfilesystemencodeerrors() ใหม่ส่งคืนชื่อโหมดข้อผิดพลาดที่ใช้ในการแปลงระหว่างชื่อไฟล์ Unicode และชื่อไฟล์ bytes |
|
ฟังก์ชัน compress() และ decompress() ขณะนี้รับ keyword arguments |
|
หมายเหตุ