مهم ترین تغییرات پایتون 3.7.1 ?


پایتون 3.7.1 چند هفته قبل (2018/10/20) منتشر شد
پایتون 3.7.1 چند هفته قبل (2018/10/20) منتشر شد




  • Add new time functions with nanosecond resolution
import time

time.clock_gettime_ns()
time.clock_settime_ns()
time.monotonic_ns()
time.perf_counter_ns()
time.process_time_ns()
time.time_ns()

تابعی که برای زمان وجود داشت time.time() بود که عددی اعشاری را برمیگرداند...

اما با تکنیک جدید نانوثانیه این مشکل برطرف شده، و در صورت نیاز محاسبات خیلی دقیقی رو میشه با این تکنیک انجام داد

  • Typing Enhancements
from typing import List
Vector = List[float]

def scale(scalar: float, vector: Vector) -> Vector:
    return [scalar * num for num in vector]
    
    # typechecks; a list of floats qualifies as a Vector.
new_vector = scale(2.0, [1.0, -4.2, 5.4])

پایتون بی نیاز از تعیین نوع داده متغییر هاست، ولی به گفته برخی باعث پیچیده تر شدن و ناخوانی کُد میشود. این سینتکس که در سری نسخه های پایتون 3 موجود بود در این بروزرسانی عملکرد بهتری پیدا کرده.

پایتون در زمان اجرا نوع متغییر را چک نمیکند(!)

from typing import NewType
UserId = NewType('UserId', int)
ProUserId = NewType('ProUserId', UserId) 


  • Built-in breakpoint()
breakpoint()
print("one step")
print("second step")

این تابع که دیباگ کردن برنامه استفاده میشد اکنون به صورت یک تابع داخل هسته پایتون قرار داده شده و دیگر نیاز به فراخوانی pdb نیست!

(پ.ن: در محیط pdb از کامند help برای دیدن لیست کار هایی که قادر به انجام هستین استفاده کنید و یا به سادگی کامند next را تایپ کنید!)


امکانات مهم دیگه که در این بروزرسانی میشه مشاهده کرد Await expression و Forced UTF-8 Runtime Mode هستند


خوشحال میشم اگه اشکالی در نوشته بالا هست بهم گوش زد بشه، و یا حتی باهم گپی درمورد پایتون داشته باشیم :)


برای مطالعه بیشتر: لینک

منابع:

1 2