عدم ایجاد فایلهای کش ' __pycache__'
1 2 3 4 |
# first way is to set an environment variable $ export PYTHONDONTWRITEBYTECODE=1 # to make it permanent, put it in '.bashrc' file # second way is to run python script with '-B' option |
نصب یک نسخه مشخص کتابخانه در pip
1 2 |
$ pip install 'pytest>=4.0.1' $ pipenv install 'redis==2.10.6' |
دانلود پکیچها و ذخیره اونها در یک مسیر خاص
1 |
$ pip download -r requirements.txt -d destination_dir |
نصب پکیجها از یک مسیر خاص
1 |
$ pip install -r requirements.txt --find-links=destination_dir |
دیدن مستندات پایتون با مرورگر در پورت 1234
1 |
$ pydoc -p 1234 -b |
راه اندازی وب سرور در مسیر جاری در پورت 8000 (برای مشاهده فایلها در مرورگر)
1 |
$ python -m http.server 8000 --bind 127.0.0.1 |
کانتکس منیجر، در کانتکس منیجر عبارت yield شده به متغیر اشاره شده در with تخصیص داده میشود همچنین وقتی کد از بلاک with خارح می شود کدهای قسمت finally اجرا خواهند شد
1 2 3 4 5 6 7 8 9 10 11 12 |
from contextlib import contextmanager @contextmanager def open_connection(): try: conn = connection.open() yield conn.open() finally: connection.close() with open_connection() as conn: pass |
مانع شدن بروز یک خطای مشخص
1 2 3 4 |
import contextlib, os with contextlib.suppress(FileNotFoundError): os.remove("somefile") |
list comprehension و generator expression
1 2 3 |
base = [1, 2, 3] result = [i for i in base] # list comprehension result = (i for i in base) # generator expression |
ترکیب متغیرها با zip
1 2 3 4 5 6 |
a = [1, 2, 1] b = ["a", "b", "c"] c = ["@", "#", "$"] for number, alpha, mark in zip(a, b, c): print(number, alpha, mark) |
پیایش یک لیست به همراه ایندکس هر عضو
1 2 3 |
a = [1, 2, 3, 4, 5] for index, value in enumerate(a); print(index, value) |
ایجاد دیکشنری
1 2 3 4 5 6 |
result = dict([('a', 0),('b', 1),('c', 2),('d', 3),('e', 4)]) # Or result = dict(a=0, b=1, c=2, d=3, e=4) # Or result = dict(zip(["a", "b", "c", "d", "e"], range(5))) >>> {"a": 0, "b": 1, "c": 2, "d": 3, "e": 4} |
نوع داده OrderedDict یک دیکشنری هست که ترتیب ورود و خروج متغیر ها مانند لیست در آن حفظ می شود
1 2 3 4 |
from collections import OrderedDict result = OrderedDict(zip(["a", "b", "c", "d", "e"], range(5))) >>> OrderedDict([('a', 0), ('b', 1), ('c', 2), ('d', 3), ('e', 4)]) |
نوع داده namedtuple که با عضوهاش میشه مثل عضوهای کلاس رفتار کرد
1 2 3 4 5 |
from collections import namedtuple Person = namedtuple("Person", "name age") result = Person(name="test", age=1) print(result.age, result.name) |
سفارشی سازی یک تابع
1 2 3 4 5 |
from functools import partial import requests get_github = partial(requests.get, url="https://google.com") print(get_github().text) |
محک زدن سرعت اجرای یک تابع
1 2 3 4 |
import timeit t = timeit.Timer(stmt="run()", setup="from test imort run") t.timeit(number=1) |
پیش فرض کردن یک نوع داده خاص برای عضوهای یک دیکشنری
1 2 3 4 5 6 7 8 9 |
from collections import defaultdict d = defaultdict(int) d['a'] += 0 # OK # or d = {} d.setdefault('a', 0) d['a'] += 0 # OK |
قرار دادن یک مقدار خاص برای یک عضو دیکشنری در صورت نبود آن
1 2 3 4 |
d = {} d.get('X') # => None d.setdefault('X', 'test') d['X'] # => 'test' |
یپدا کردن فایل سوس یک ماژول یا پکیج
1 2 3 |
import imp imp.find_module('logging') # (None, '/usr/lib/python3.6/logging', ('', '', 5) |
نمایش استاندارد زمان و تاریخ (بر اساس منطقه زمانی سیستم)
1 2 3 |
from datetime import datetime current_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S") # '2019-02-21 15:53:08 |
نمایش ماژول های ایمپورت شده
1 2 |
import sys print(sys.modules) |
ایجاد فایلهای بایت کد برای کدهای بایتون
1 |
$ python -m compileall . |
دیدن نسخه یک ماژول
1 2 3 |
# run dir(MODULE) and check which on of these presents: __version, VERSION, version import psutil print(psutil.__version__) |
بروزرسانی تمام پکیجهای نصب شده پایتون
1 |
$ pip list --outdated --format=freeze | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip3 install -U |