Facebook Pixel
Searching...
فارسی
EnglishEnglish
EspañolSpanish
简体中文Chinese
FrançaisFrench
DeutschGerman
日本語Japanese
PortuguêsPortuguese
ItalianoItalian
한국어Korean
РусскийRussian
NederlandsDutch
العربيةArabic
PolskiPolish
हिन्दीHindi
Tiếng ViệtVietnamese
SvenskaSwedish
ΕλληνικάGreek
TürkçeTurkish
ไทยThai
ČeštinaCzech
RomânăRomanian
MagyarHungarian
УкраїнськаUkrainian
Bahasa IndonesiaIndonesian
DanskDanish
SuomiFinnish
БългарскиBulgarian
עבריתHebrew
NorskNorwegian
HrvatskiCroatian
CatalàCatalan
SlovenčinaSlovak
LietuviųLithuanian
SlovenščinaSlovenian
СрпскиSerbian
EestiEstonian
LatviešuLatvian
فارسیPersian
മലയാളംMalayalam
தமிழ்Tamil
اردوUrdu
Python Tricks

Python Tricks

A Buffet of Awesome Python Features
توسط Dan Bader 2017 326 صفحات
4.44
1k+ امتیازها
گوش دادن
گوش دادن

نکات کلیدی

1. توابع پایتون اشیاء درجه یک هستند

توابع اشیاء هستند—می‌توان آن‌ها را به متغیرها اختصاص داد، در ساختارهای داده ذخیره کرد، به توابع دیگر ارسال و از آن‌ها بازگرداند.

توابع به عنوان داده. در پایتون، توابع به عنوان شهروندان درجه یک در نظر گرفته می‌شوند، به این معنی که می‌توان با آن‌ها مانند هر شیء دیگری کار کرد. این امر امکان استفاده از پارادایم‌های برنامه‌نویسی قدرتمند را فراهم می‌کند:

  • اختصاص توابع به متغیرها
  • ذخیره توابع در لیست‌ها، دیکشنری‌ها یا سایر ساختارهای داده
  • ارسال توابع به عنوان آرگومان به توابع دیگر
  • بازگرداندن توابع از توابع دیگر
  • تعریف توابع درون توابع دیگر (توابع تو در تو)

این انعطاف‌پذیری تکنیک‌های پیشرفته برنامه‌نویسی مانند توابع مرتبه بالا، بسته‌ها و الگوهای برنامه‌نویسی تابعی را ممکن می‌سازد و پایتون را به زبانی همه‌کاره و بیانی برای حل مسائل پیچیده تبدیل می‌کند.

2. دکوراتورها رفتار توابع را بهبود و تغییر می‌دهند

دکوراتورها بلوک‌های ساختاری قابل استفاده مجددی تعریف می‌کنند که می‌توانید برای تغییر رفتار یک تابع قابل فراخوانی بدون تغییر دائمی آن اعمال کنید.

شکر نحوی برای تغییر. دکوراتورها راهی تمیز و قابل استفاده مجدد برای گسترش یا تغییر رفتار توابع یا کلاس‌ها ارائه می‌دهند:

  • آن‌ها یک تابع را می‌پیچند و رفتار آن را بدون تغییر کد منبع تغییر می‌دهند
  • استفاده‌های رایج شامل لاگ‌گیری، زمان‌بندی، کنترل دسترسی و کش کردن است
  • دکوراتورها می‌توانند روی هم قرار گیرند و به یک تابع واحد چندین تغییر اعمال کنند
  • آن‌ها اصل جداسازی نگرانی‌ها را ترویج می‌دهند و کد را مدولار نگه می‌دارند

دکوراتورها با استفاده از نحو @ پیاده‌سازی می‌شوند و کد را خواناتر و قابل نگهداری‌تر می‌کنند. آن‌ها از توابع درجه یک و بسته‌های پایتون برای ارائه مکانیزمی قدرتمند برای متا-برنامه‌نویسی استفاده می‌کنند.

3. *args و **kwargs امکان انعطاف‌پذیری در آرگومان‌های تابع را فراهم می‌کنند

*args و **kwargs به شما اجازه می‌دهند توابعی با تعداد متغیر آرگومان‌ها در پایتون بنویسید.

انعطاف‌پذیری آرگومان‌های متغیر. این عناصر نحو خاص به توابع اجازه می‌دهند هر تعداد آرگومان موقعیتی یا کلیدواژه‌ای را بپذیرند:

  • *args آرگومان‌های موقعیتی اضافی را به یک تاپل جمع‌آوری می‌کند
  • **kwargs آرگومان‌های کلیدواژه‌ای اضافی را به یک دیکشنری جمع‌آوری می‌کند
  • آن‌ها انعطاف‌پذیری در تعریف توابع را فراهم می‌کنند و امکان گسترش آینده را می‌دهند
  • برای ایجاد توابع پوششی یا APIهایی با پارامترهای اختیاری مفید هستند

این ویژگی امکان ایجاد توابع عمومی‌تر را فراهم می‌کند و به نوشتن کدی کمک می‌کند که می‌تواند بدون تغییر امضای تابع به نیازهای در حال تغییر سازگار شود.

4. درک‌ها نحو مختصری برای ایجاد مجموعه‌ها ارائه می‌دهند

درک‌ها فقط شکر نحوی فانتزی برای یک الگوی حلقه for ساده هستند.

ایجاد مجموعه‌های زیبا. درک‌های لیست، مجموعه و دیکشنری راهی فشرده برای ایجاد مجموعه‌ها بر اساس تکرارگرهای موجود ارائه می‌دهند:

  • آن‌ها ایجاد و پر کردن یک مجموعه را در یک خط ترکیب می‌کنند
  • اغلب خواناتر و سریع‌تر از حلقه‌های for معادل هستند
  • می‌توانند شامل شرایطی برای فیلتر کردن عناصر باشند
  • برای لیست‌ها، مجموعه‌ها و دیکشنری‌ها در دسترس هستند

مثال‌ها:

  • درک لیست: [x*2 for x in range(10) if x % 2 == 0]
  • درک مجموعه: {word.lower() for word in words}
  • درک دیکشنری: {k: v**2 for k, v in my_dict.items()}

در حالی که قدرتمند هستند، مهم است که تعادل بین اختصار و خوانایی را حفظ کنید و از درک‌های بیش از حد پیچیده که ممکن است نیت کد را مبهم کنند، اجتناب کنید.

5. توابع و عبارات مولد ایجاد تکرارگرها را ساده می‌کنند

مولدها بسیاری از کدهای تکراری مورد نیاز هنگام نوشتن تکرارگرهای مبتنی بر کلاس را انتزاع می‌کنند.

تکرار بدون زحمت. مولدها راهی ساده برای ایجاد تکرارگرها بدون نیاز به پیاده‌سازی کامل کلاس ارائه می‌دهند:

  • از کلمه کلیدی yield برای تولید یک سری مقادیر استفاده کنید
  • از نظر حافظه کارآمد هستند، زیرا مقادیر را به صورت لحظه‌ای تولید می‌کنند
  • می‌توانند در حلقه‌های for، درک‌های لیست و سایر زمینه‌های تکرارگر استفاده شوند
  • عبارات مولد نحو مختصری برای مولدهای ساده ارائه می‌دهند

توابع مولد:

def countdown(n):
    while n > 0:
        yield n
        n -= 1

عبارت مولد:

squares = (x*x for x in range(10))

مولدها به ویژه برای کار با مجموعه داده‌های بزرگ یا توالی‌های بی‌نهایت مفید هستند، زیرا همه مقادیر را به طور همزمان در حافظه ذخیره نمی‌کنند.

6. دیکشنری‌ها ساختارهای داده‌ای همه‌کاره و قدرتمند هستند

دیکشنری‌ها ساختار داده مرکزی در پایتون هستند.

ذخیره‌سازی کلید-مقدار کارآمد. دیکشنری‌ها آرایه‌های انجمنی سریع، انعطاف‌پذیر و غنی از ویژگی‌ها ارائه می‌دهند:

  • پیچیدگی زمانی متوسط O(1) برای جستجوی کلید، درج و حذف
  • از هر شیء قابل هش به عنوان کلید پشتیبانی می‌کنند (رشته‌ها، اعداد، تاپل‌ها)
  • روش‌هایی مانند get() برای دسترسی ایمن به کلیدها با مقادیر پیش‌فرض ارائه می‌دهند
  • می‌توانند برای شبیه‌سازی عبارات switch/case از زبان‌های دیگر استفاده شوند

ویژگی‌های پیشرفته دیکشنری:

  • OrderedDict: ترتیب کلیدهای وارد شده را به خاطر می‌سپارد
  • defaultdict: مقادیر پیش‌فرض برای کلیدهای گم‌شده ارائه می‌دهد
  • ChainMap: جستجو در چندین دیکشنری به عنوان یک نگاشت واحد

دیکشنری‌ها برای پیاده‌سازی پایتون اساسی هستند و به طور گسترده در خود زبان و در بسیاری از کتابخانه‌ها و فریم‌ورک‌های پایتون استفاده می‌شوند.

7. تکنیک‌های حلقه‌زنی مؤثر خوانایی کد را بهبود می‌بخشند

نوشتن حلقه‌های به سبک C در پایتون غیرپایتونی در نظر گرفته می‌شود.

تکرار پایتونی. پایتون چندین روش ایدئوماتیک برای حلقه‌زنی بر روی توالی‌ها و انجام تکرارها ارائه می‌دهد:

  • از for item in iterable به جای ایندکس‌گذاری استفاده کنید
  • هنگامی که به هر دو ایندکس و مقدار نیاز دارید از enumerate() استفاده کنید
  • از zip() برای حلقه‌زنی بر روی چندین توالی به طور همزمان استفاده کنید
  • از ماژول itertools برای تکرارهای پیچیده بهره ببرید

مثال‌ها:

# به جای:
for i in range(len(items)):
    print(i, items[i])

# استفاده کنید:
for i, item in enumerate(items):
    print(i, item)

# حلقه‌زنی بر روی دو لیست:
for name, age in zip(names, ages):
    print(f"{name} is {age} years old")

این تکنیک‌ها به کدی مختصرتر، خواناتر و کارآمدتر منجر می‌شوند و با فلسفه پایتون در مورد وضوح و سادگی همسو هستند.

8. مفاهیم برنامه‌نویسی شیءگرا سازماندهی کد را بهینه می‌کنند

کلاس‌های پایه انتزاعی (ABCs) اطمینان می‌دهند که کلاس‌های مشتق شده روش‌های خاصی از کلاس پایه را پیاده‌سازی می‌کنند.

طراحی کد ساختاریافته. ویژگی‌های شیءگرای پایتون ابزارهای قدرتمندی برای سازماندهی و ساختاردهی کد ارائه می‌دهند:

  • کلاس‌ها داده و رفتار را محصور می‌کنند
  • وراثت امکان استفاده مجدد از کد و تخصصی‌سازی را فراهم می‌کند
  • کلاس‌های پایه انتزاعی رابط‌ها را تعریف و پیاده‌سازی را تحمیل می‌کنند
  • ویژگی‌ها دسترسی کنترل‌شده به ویژگی‌ها را فراهم می‌کنند
  • روش‌های خاص (روش‌های دندر) امکان سفارشی‌سازی رفتار شیء را فراهم می‌کنند

مفاهیم کلیدی OOP در پایتون:

  • چندریختی از طریق تایپ اردکی
  • وراثت چندگانه و ترتیب حل روش (MRO)
  • ترکیب به عنوان جایگزینی برای وراثت
  • متاکلاس‌ها برای کنترل پیشرفته ایجاد کلاس

استفاده مؤثر از اصول OOP به ساختارهای کدی قابل نگهداری‌تر، قابل توسعه‌تر و مدولارتر منجر می‌شود.

9. ساختارهای داده در پایتون عملکردهای متنوعی ارائه می‌دهند

اگر به دنبال پشتیبانی از پردازش موازی نیستید، پیاده‌سازی ارائه شده توسط collections.deque یک انتخاب پیش‌فرض عالی برای پیاده‌سازی یک ساختار داده صف FIFO در پایتون است.

سازماندهی داده متناسب. پایتون مجموعه‌ای غنی از ساختارهای داده داخلی و کتابخانه استاندارد را برای رفع نیازهای مختلف ارائه می‌دهد:

  • لیست‌ها: آرایه‌های پویا برای توالی‌های عمومی
  • تاپل‌ها: توالی‌های غیرقابل تغییر برای مجموعه‌های ثابت
  • مجموعه‌ها: مجموعه‌های بدون ترتیب از عناصر منحصر به فرد
  • دک‌ها: صف‌های دو سر برای درج/حذف کارآمد در هر دو انتها
  • Heapq: پیاده‌سازی صف اولویت
  • Counter: چندمجموعه برای شمارش اشیاء قابل هش

انتخاب ساختار داده مناسب می‌تواند به طور قابل توجهی بر عملکرد و وضوح کد شما تأثیر بگذارد. عواملی مانند:

  • عملیات مورد نیاز (مثلاً درج‌های مکرر، حذف‌ها، جستجوها)
  • استفاده از حافظه
  • نیازهای ایمنی رشته
  • نیاز به ترتیب یا مرتب‌سازی

درک ویژگی‌ها و مبادلات ساختارهای داده مختلف راه‌حل‌های کارآمدتر و زیباتری برای مسائل برنامه‌نویسی فراهم می‌کند.

10. قالب‌بندی کارآمد رشته وضوح کد را افزایش می‌دهد

اگر رشته‌های قالب شما توسط کاربر تأمین می‌شوند، از رشته‌های قالب برای جلوگیری از مسائل امنیتی استفاده کنید. در غیر این صورت، از درج رشته‌های ادبی اگر در پایتون 3.6+ هستید و از قالب‌بندی رشته "سبک جدید" اگر نیستید، استفاده کنید.

ساختار رشته‌ای واضح و امن. پایتون چندین روش برای قالب‌بندی رشته ارائه می‌دهد که هر کدام نقاط قوت خود را دارند:

  • قالب‌بندی %-: سبک قدیمی، هنوز به طور گسترده استفاده می‌شود
  • str.format(): خواناتر و انعطاف‌پذیرتر
  • f-strings: مختصر و قدرتمند، در پایتون 3.6+ در دسترس
  • رشته‌های قالب: ایمن‌تر برای قالب‌های تأمین شده توسط کاربر

مثال f-strings:

name = "Alice"
age = 30
print(f"{name} is {age} years old")

رشته‌های قالب برای ورودی کاربر:

from string import Template
user_input = Template("Hello, $name!")
print(user_input.substitute(name="Bob"))

انتخاب روش مناسب قالب‌بندی رشته خوانایی، قابلیت نگهداری و امنیت کد را بهبود می‌بخشد، به ویژه هنگام کار با داده‌های تأمین شده توسط کاربر یا ساختارهای رشته‌ای پیچیده.

آخرین به‌روزرسانی::

FAQ

What's "Python Tricks: A Buffet of Awesome Python Features" about?

  • Overview: "Python Tricks" by Dan Bader is a guide to mastering Python by exploring its advanced features and idiomatic practices. It aims to elevate a Python developer's skills from intermediate to advanced.
  • Content Structure: The book is structured into chapters that cover various Python features, including cleaner code patterns, effective functions, object-oriented programming, and data structures.
  • Practical Examples: Each chapter includes practical examples and code snippets to illustrate the concepts, making it easier for readers to understand and apply them.
  • Community Insights: The book also shares insights from the Python community, including feedback from experienced developers, to provide a well-rounded perspective on Python programming.

Why should I read "Python Tricks: A Buffet of Awesome Python Features"?

  • Skill Enhancement: The book is designed to help Python developers become more effective, knowledgeable, and practical in their coding practices.
  • Advanced Techniques: It introduces advanced Python features and idioms that can significantly improve code quality and efficiency.
  • Real-World Application: The examples and tricks are applicable to real-world scenarios, making it a valuable resource for professional development.
  • Community Engagement: Reading the book can also connect you with the broader Python community, as it includes insights and feedback from other developers.

What are the key takeaways of "Python Tricks: A Buffet of Awesome Python Features"?

  • Cleaner Code Patterns: Learn how to write cleaner and more maintainable Python code using patterns like context managers and assertions.
  • Effective Functions: Understand the power of first-class functions, decorators, and argument unpacking to create more flexible and reusable code.
  • Object-Oriented Programming: Gain insights into Python's OOP features, including class and instance variables, abstract base classes, and namedtuples.
  • Data Structures and Iteration: Explore Python's built-in data structures and learn how to use iterators, generators, and comprehensions effectively.

How does Dan Bader define a "Python Trick"?

  • Teaching Tool: A Python Trick is a short code snippet meant to teach an aspect of Python with a simple illustration.
  • Motivational Example: It serves as a motivating example, enabling readers to dig deeper and develop an intuitive understanding of Python.
  • Community Origin: The concept started as a series of code screenshots shared on Twitter, which received positive feedback and led to the creation of the book.
  • Accessible Learning: The tricks are designed to be accessible and easy to understand, making them suitable for developers looking to enhance their Python skills.

What are some patterns for cleaner Python code mentioned in the book?

  • Assertions: Use assertions to automatically detect errors in your programs, making them more reliable and easier to debug.
  • Complacent Comma Placement: Adopt a code style that avoids comma placement issues in lists, dicts, or set constants.
  • Context Managers: Simplify resource management patterns using the with statement and context managers.
  • Underscores and Dunders: Understand the meaning of single and double underscores in variable and method names to write more idiomatic Python code.

How does "Python Tricks" explain the use of decorators?

  • Behavior Modification: Decorators allow you to extend and modify the behavior of a callable without permanently changing it.
  • Reusable Building Blocks: They define reusable building blocks that can be applied to functions or classes to add functionality like logging or access control.
  • Syntax and Stacking: The book explains the @ syntax for decorators and how multiple decorators can be stacked to accumulate their effects.
  • Debugging Best Practices: It recommends using functools.wraps to carry over metadata from the undecorated callable to the decorated one for better debugging.

What are the differences between class, instance, and static methods in Python?

  • Instance Methods: Require a class instance and can access the instance through the self parameter, allowing them to modify object state.
  • Class Methods: Use the @classmethod decorator and take a cls parameter, allowing them to modify class state but not instance state.
  • Static Methods: Use the @staticmethod decorator and do not take self or cls parameters, making them independent of class and instance state.
  • Use Cases: The book provides examples of when to use each method type, emphasizing their role in communicating developer intent and maintaining code.

How does "Python Tricks" suggest handling dictionary default values?

  • Avoid Explicit Checks: Instead of using explicit key in dict checks, use the get() method to provide a default value for missing keys.
  • EAFP Principle: Follow the "easier to ask for forgiveness than permission" coding style by using try...except blocks to handle KeyError exceptions.
  • Defaultdict Usage: In some cases, the collections.defaultdict class can be helpful for automatically handling missing keys with default values.
  • Concise Implementation: The book provides examples of how to implement these techniques concisely and effectively.

What are some advanced string formatting techniques covered in the book?

  • Old Style Formatting: Uses the %-operator for simple positional formatting, similar to printf-style functions in C.
  • New Style Formatting: Introduced in Python 3, it uses the format() method for more powerful and flexible string formatting.
  • Literal String Interpolation: Available in Python 3.6+, it allows embedded Python expressions inside string constants using f-strings.
  • Template Strings: A simpler and less powerful mechanism for string formatting, useful for handling user-generated format strings safely.

How does "Python Tricks" explain the use of list comprehensions?

  • Syntactic Sugar: List comprehensions are a concise way to create lists by iterating over a collection and applying an expression to each item.
  • Template Pattern: The book provides a template pattern for transforming for-loops into list comprehensions and vice versa.
  • Filtering Elements: Comprehensions can include conditions to filter elements, allowing for more complex list generation.
  • Readability Considerations: While powerful, the book cautions against overusing comprehensions, especially with deep nesting, to maintain code readability.

What are some key quotes from "Python Tricks" and what do they mean?

  • "Mastering Python programming isn’t just about grasping the theoretical aspects of the language." This emphasizes the importance of understanding and adopting the conventions and best practices used by the Python community.
  • "A book that works like a buffet of awesome Python features (yum!) and keeps motivation levels high." This highlights the book's approach of presenting Python features in an engaging and motivating way.
  • "Python’s assert statement is a debugging aid that tests a condition as an internal self-check in your program." This quote underscores the importance of using assertions for debugging and maintaining code reliability.
  • "Decorators define reusable building blocks you can apply to a callable to modify its behavior without permanently modifying the callable itself." This explains the power and flexibility of decorators in enhancing code functionality.

How does "Python Tricks" address the use of virtual environments?

  • Dependency Isolation: Virtual environments help isolate project dependencies, preventing version conflicts between packages and Python versions.
  • Best Practice: The book recommends using virtual environments for all Python projects to keep dependencies separate and avoid headaches.
  • Activation and Deactivation: It explains how to create, activate, and deactivate virtual environments to manage project-specific dependencies.
  • Security Benefits: Using virtual environments reduces security risks by avoiding the need for superuser permissions when installing packages.

نقد و بررسی

4.44 از 5
میانگین از 1k+ امتیازات از Goodreads و Amazon.

کتاب ترفندهای پایتون به دلیل رویکرد مختصر و در عین حال عمیق خود به موضوعات متوسط و پیشرفته پایتون بسیار مورد تحسین قرار گرفته است. خوانندگان از نکات عملی، توضیحات واضح و تمرکز بر بهترین شیوه‌ها قدردانی می‌کنند. بسیاری از آن به عنوان منبعی مفید برای پر کردن شکاف‌های دانشی و بهبود مهارت‌های کدنویسی یاد کرده‌اند. لحن محاوره‌ای و ساختار منظم کتاب، آن را قابل دسترس و لذت‌بخش می‌سازد. در حالی که برخی از توسعه‌دهندگان با تجربه آن را کمتر چالش‌برانگیز یافتند، اکثر افراد توافق دارند که این کتاب منبعی عالی برای کسانی است که به دنبال تعمیق دانش خود در پایتون و نوشتن کدهای بیشتر به سبک بومی هستند.

درباره نویسنده

دن بیدر یک متخصص و مدرس محترم در زمینه‌ی پایتون است. او به خاطر توانایی‌اش در توضیح مفاهیم پیچیده‌ی برنامه‌نویسی به شیوه‌ای روشن و قابل‌فهم شناخته می‌شود. بیدر بنیان‌گذار Real Python، یک منبع آنلاین محبوب برای آموزش‌ها و دوره‌های پایتون است. او تجربه‌ی گسترده‌ای در توسعه‌ی نرم‌افزار دارد و با شرکت‌هایی مانند گوگل و مایکروسافت همکاری کرده است. سبک نوشتاری بیدر به خاطر دوستانه و جذاب بودنش تحسین می‌شود و محتوای فنی را برای یادگیرندگان قابل‌دسترس‌تر می‌کند. کار او بر کمک به توسعه‌دهندگان برای بهبود مهارت‌های پایتون و پذیرش بهترین شیوه‌ها در کدنویسی تمرکز دارد.

0:00
-0:00
1x
Dan
Andrew
Michelle
Lauren
Select Speed
1.0×
+
200 words per minute
Create a free account to unlock:
Requests: Request new book summaries
Bookmarks: Save your favorite books
History: Revisit books later
Ratings: Rate books & see your ratings
Try Full Access for 7 Days
Listen, bookmark, and more
Compare Features Free Pro
📖 Read Summaries
All summaries are free to read in 40 languages
🎧 Listen to Summaries
Listen to unlimited summaries in 40 languages
❤️ Unlimited Bookmarks
Free users are limited to 10
📜 Unlimited History
Free users are limited to 10
Risk-Free Timeline
Today: Get Instant Access
Listen to full summaries of 73,530 books. That's 12,000+ hours of audio!
Day 4: Trial Reminder
We'll send you a notification that your trial is ending soon.
Day 7: Your subscription begins
You'll be charged on Feb 25,
cancel anytime before.
Consume 2.8x More Books
2.8x more books Listening Reading
Our users love us
50,000+ readers
"...I can 10x the number of books I can read..."
"...exceptionally accurate, engaging, and beautifully presented..."
"...better than any amazon review when I'm making a book-buying decision..."
Save 62%
Yearly
$119.88 $44.99/year
$3.75/mo
Monthly
$9.99/mo
Try Free & Unlock
7 days free, then $44.99/year. Cancel anytime.
Settings
Appearance
Black Friday Sale 🎉
$20 off Lifetime Access
$79.99 $59.99
Upgrade Now →