3 مهر 1402
تهران، خیابان آزادی، تقاطع قریب
برنامه نویسی نرم افزار

5 ویژگی جالب پایتون 3.10

5 ویژگی جالب پایتون 3.10

Switch Case اینجاست!

پایتون یک زبان برنامه‌ نویسی بسیار کاربرپسند است، اما اگر بگوییم که پایتون 3.10 کاربرپسندتر هم هست چه؟

بدون نیاز به ساختارهای if، elif و else یا دیکشنری توابع، اکنون می‌توانیم از match به جای آن استفاده کنیم!

				
					
def http_error(status):
    match status:
        case 400:
            return "Bad request"
        case 401 | 403:
            return "Not allowed"
        case 404:
            return "Not found"
        case 418:
            return "I'm a teapot"
        case _:
            return "Something's wrong with the Internet"


# point is an (x, y) tuple
def check_point(point):
    x = 10
    y = 26
    match point:
        case (0, 0):
            print("Origin")
        case (0, y):
            print(f"Y={y}")
        case (x, 0):
            print(f"X={x}")
        case (x, y):
            print(f"X={x}, Y={y}")
        case _:
            raise ValueError("Not a point")
				
			

برای کسب اطلاعات بیشتر، PEP-636 – تطبیق الگوی ساختاری: آموزش را بخوانید.

چک Zip Length

zip() یک تابع داخلی در پایتون است که به تازگی، توسعه‌دهندگان پایتون توجه بیشتری به آن نشان داده‌اند. این تابع اکنون می‌تواند چک کند که طول لیست‌های zipped به همان اندازه است یا خیر.

				
					x = [1, 2, 3, 4]
y = [5, 7, 8]

print(list(zip(x, y)))
# [(1, 5), (2, 7), (3, 8)]
print(list(zip(x, y, strict=True)))
# ValueError: zip() argument 2 is shorter than argument 1
				
			

آیا به آرگومان strict توجه کردید؟ این آرگومان به zip() می‌گوید که طول لیست‌ها یکسان است یا خیر. در غیر این صورت، یک ValueError  را throw می‌کند.

برای کسب اطلاعات بیشتر PEP-618 – افزودن Optional Length-Checking برای zip را بخوانید.

تایپ Hint آسان‌تر شده است

Union را به یاد بیاورید که به ما اجازه می‌دهد بررسی کنیم که آیا یک آرگومان معادل چندین نوع است یا خیر. بنابراین، اکنون فقط لازم است که یک | داشته باشیم.

				
					# Instead of
# def f(list: List[Union[int, str]], param: Optional[int]) -> Union[float, str]
def f(list: List[int | str], param: int | None) -> float | str:
    pass

# Instead of typing.List[typing.Union[str, int]]
list[str | int]

# Instead of typing.Dict[str, typing.Union[int, float]]
dict[str, int | float]

isinstance(5, int | str)
# True
isinstance("5", int | str)
# True
				
			

خیلی تمیزتر شد!

پیام‌های Error بهتر

پایتون یک زبان برنامه‌ نویسی بسیار کاربرپسند است، اما اگر باز هم بگوییم که این نسخه کاربرپسندتر است چه؟

پایتون اکنون Error Messageهای بسیار قابل فهم‌تری را برمی‌گرداند.

				
					# Python 3.9
print("hello world"
# SyntaxError: unexpected EOF while parsing
      
# python 3.10
print("hello world"
#   print("hello world"
#        ^
# SyntaxError: '(' was never closed

# Python 3.9
foo(x, z for z in range(10), t, w)
#    foo(x, z for z in range(10), t, w)
#           ^
# SyntaxError: Generator expression must be parenthesized
      
# python 3.10
foo(x, z for z in range(10), t, w)
#    foo(x, z for z in range(10), t, w)
#           ^^^^^^^^^^^^^^^^^^^^
# SyntaxError: Generator expression must be parenthesized
				
			

برای مثال‌ها و اطلاعات بیشتر، و این‌که در پایتون 3.10  چه اتفاقات جدیدی رخ داده است، Error Messageهای بهتر را بخوانید.

بدون نیاز به Backslash

این یکی شخصی است! وقتی این تغییر در لیست تغییرات پایتون منتشر شد، به شخصه خیلی خوشحال شدم!

Parenthesized context managerها اکنون به طور رسمی مجاز هستند، به این معنی که هنگام breaking عبارات با line جدید، نیازی به اضافه کردن backslash نداریم.

				
					# Old
with (open('file1.txt') as foo \
      open('file2.txt') as bar):
  pass

# New (No backslash)
with (open('file1.txt') as foo
      open('file2.txt') as bar):
  pass
				
			

پایتون هوشمندتر می‌شود – توابع جدید در ماژول statistic معرفی شده در پایتون 3.10

correlation() – ضریب همبستگی پیرسون را برای دو inputبرمی‌گرداند.

covariance() – کوواریانس سمپل دو input x و y را برمی‌گرداند.

linear_regression() – slope و intercept  پارامترهای رگرسیون خطی ساده‌ی برآورد شده با استفاده از حداقل مربعات معمولی (OLS) را برمی‌گرداند.

منبع: medium       نویسنده: عمری قیلار، مهندس سینیور پلتفرم

Leave feedback about this

  • کیفیت
  • قیمت
  • خدمات

PROS

+
Add Field

CONS

+
Add Field
Choose Image
Choose Video
X