Skip to content

Programming Idioms

Language Structure

  • Expression: Evaluates to a value

    >>> 23
    23
    >>> 23l
    23L
    >>> range(4)
    [0, 1, 2, 3]
    >>> 2L*bin(2)
    '0b100b10'
    >>> def func(a):        # Statement, just part of the example...
    ...     return a*a      # Statement...
    ...
    >>> func(3)*4
    36
    >>> func(5) is func(a=5)
    True
    
  • Statement: Do Something and are often composed of expressions (or other statements)

    >>> x + 2                # an expression
    >>> x = 1                # a statement
    >>> y = x + 1            # a statement
    >>> print y              # a statement (in 2.x)
    2
    

Principles

  • EAFP: Easier to ask for forgiveness than permission (try/except)
  • LBYL: Look Before You Leap (if/else)

Functions

  • Closure: به معنی بسته، وقتی که یه فانکشن داخل یک فانکشن مادر هستش و متغیر های مادرشو یادش میمونه با این که اسکوپ فانکشن مادرش تموم شده.
  • Procedure: به معنی روش، وقتی یه فانکشن چیزی ریترن نمیکنه بهش میگن، مثل فانکشن پرینت در پایتون.

OOP

  • Cohesion: به معنی انسجام، زمانی که متد های یک کلاس به هم مربوط باشند و در آن متد بی ربط که اصل سینگل ریسپانسیبیلیتی را زیر سوال نبرد وجود نداشته باشد میگویند آن کلاس کوهیژن بالایی دارد.
  • POCO (Plain Old Class Object): کلاس های ساده ای که برای استفاده در دل یک فریمورک یا کتابخانه خاصی آماده نشده اند (مثلا دکوریتور یا اتربیوت خاصی
  • Fluent Interface: In software engineering, a fluent interface is an object-oriented API whose design relies extensively on method chaining. Its goal is to increase code legibility by creating a domain-specific language (DSL).

Data Structures

  • FIFO - LIFO: خلاصه دو کلمه first-in first-out و last-in first-out هستن که نمونه اولی سیستم های صف و نمونه دومی حافظه استک مموری هستش.
  • Stack: نحوه ذخیره دیتایی که آخرین المنت وارد شده اول خارج می شود.
  • Queue: نحوه ذخیره دیتایی که اولین المنت وارد شده اول خارج می شود.
  • BFS (breadth-first search): سرچ افقی یک درخت
  • DFS (depth-first search): سرچ عمودی در یک درخت