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 | |
หมายเหตุ