1. جابهکردن دو مقدار بدون استفاده از متغیر ثالث
در برخی پروژهها مهم است که برنامه سرعت زیادی داشته باشد و برنامه از حافظه اصلی به شکل کاربردی استفاده کند. در چنین شرایطی توسعهدهندگاه از تکنیکهای مختلفی استفاده میکنند. اگر در نظر دارید مقدار دو متغیر را بدون استفاده از متغیر ثالثی تغییر دهید شیوه انجام آن به شرح زیر است:
x, y = 10, 20
print(x, y)
x, y = y, x
print(x, y)
در قطعه کد بالا دو مقدار x و y بدون استفاده از متغیر ثالث تغییر میکنند.
2. معکوس کردن یک رشته در پایتون
a = "GeeksForGeeks"
print("Reverse is", a[::-1])
3. ساخت یک رشته منفرد از تمامی عناصر درون یک فهرست
a = ["Geeks", "For", "Geeks"]
print(" ".join(a))
4. بهکارگیری زنجیرهای از عملگرهای مقایسهای
n = 10
result = 1 < n < 20
print(result)
result = 1 > n <= 9
print(result)
5. چاپ مسیر فایل مرتبط با ماژولها
import os
import socket
print(os)
print(socket)
خروجی قطعه کد بالا به شرح زیر است:
<module 'os' from '/usr/lib/python3.5/os.py'>
<module 'socket' from '/usr/lib/python3.5/socket.py'>
6. پیادهسازی مفهوم Enum در پایتون
class MyName:
Geeks, For, Geeks = range(3)
print(MyName.Geeks)
print(MyName.For)
print(MyName.Geeks)
7. برگرداندن چند مقدار از توابع
def x():
return 1, 2, 3, 4
a, b, c, d = x()
print(a, b, c, d)
8. پیدا کردن عنصری که بیشتر از سایر عناصر در یک فهرست تکرار شده است
test = [1, 2, 3, 4, 2, 2, 3, 1, 4, 4, 4]
print(max(set(test), key = test.count))
9. بررسی وضعیت حافظه یک شی
import sys
x = 1
print(sys.getsizeof(x))
10. چاپ رشتهای به تعداد N مرتبه
n = 2
a = "GeeksforGeeks"
print(a * n)
11. کد بررسی آناگرام بودن دو کلمه در پایتون
from collections import Counter
def is_anagram(str1, str2):
return Counter(str1) == Counter(str2)
# or without having to import anything
def is_anagram(str1, str2):
return sorted(str1) == sorted(str2)
print(is_anagram('geek', 'eegk'))
print(is_anagram('geek', 'peek'))
12. ذخیرهسازی سه مقدار یک فهرست درون سه متغیر جدید
>>> a = [1, 2, 3]
>>> x, y, z = a
>>> x
1
>>> y
2
>>> z
3
13. ساخت یک فهرست واحد بدون استفاده از حلقهها
import itertools
test = [[-1, -2], [30, 40], [25, 35]]
print(list(itertools.chain.from_iterable(test)))
#-> [-1, -2, 30, 40, 25, 35]
اگر یک فهرست ورودی با حلقههای تودرتو یا نوع تاپل به عنوان عنصار دارید، بهتر است از تکنیک زیر استفاده کنید.
def unifylist(l_input, l_target):
for it in l_input:
if isinstance(it, list):
unifylist(it, l_target)
elif isinstance(it, tuple):
unifylist(list(it), l_target)
else:
l_target.append(it)
return l_target
test = [[-1, -2], [1,2,3, [4,(5,[6,7])]], (30, 40), [25, 35]]
print(unifylist(test,[]))
#Output => [-1, -2, 1, 2, 3, 4, 5, 6, 7, 30, 40, 25, 35]
روش ساده دیگر برای ساخت یک فهرست واحد که شامل فهرستها و تاپلها است بهکارگیری بسته <more_itertools> در پایتون است. این تکنیک هم نیازی به حلقه ندارد. روش انجام اینکار به شرح زیر است:
import more_itertools
test = [[-1, -2], [1, 2, 3, [4, (5, [6, 7])]], (30, 40), [25, 35]]
print(list(more_itertools.collapse(test)))
#Output=> [-1, -2, 1, 2, 3, 4, 5, 6, 7, 30, 40, 25, 35]
14. پیادهسازی یک دستور switch-case در پایتون
def xswitch(x):
return xswitch._system_dict.get(x, None)
xswitch._system_dict = {'files': 10, 'folders': 5, 'devices': 2}
print(xswitch('default'))
print(xswitch('devices'))
#1-> None
#2-> 2
15. جستوجوی درون خطی برای پیشوندهای چندگانه درون یک رشته
print("http://www.google.com".startswith(("http://", "https://")))
print("http://www.google.co.uk".endswith((".com", ".co.uk")))
#1-> True
#2-> True
16. ساخت یک لغتنامه از دو مجموعه مرتبط با هم
t1 = (1, 2, 3)
t2 = (10, 20, 30)
print(dict (zip(t1,t2)))
#-> {1: 10, 2: 20, 3: 30}
17. بامبدا برای تقلید عملکرد چاپ
import sys
lprint=lambda *args:sys.stdout.write(" ".join(map(str,args)))
lprint("python", "tips",1000,1001)
#-> python tips 1000 1001
18. بهکارگیری __slots__to برای کم کردن سرباره حافظه
import sys
class FileSystem(object):
def __init__(self, files, folders, devices):
self.files = files
self.folders = folders
self.devices = devices
print(sys.getsizeof( FileSystem ))
class FileSystem1(object):
__slots__ = ['files', 'folders', 'devices']
def __init__(self, files, folders, devices):
self.files = files
self.folders = folders
self.devices = devices
print(sys.getsizeof( FileSystem1 ))
#In Python 3.5
#1-> 1016
#2-> 888
19. محاسبه فاکتوریل هر عددی تنها در یک خط
import functools
result = (lambda k: functools.reduce(int.__mul__, range(1,k+1),1))(3)
print(result)
#-> 6
20. بهکارگیری یک لغتنامه برای ذخیرهسازی یک سوییچ
stdcalc = {
'sum': lambda x, y: x + y,
'subtract': lambda x, y: x - y
}
print(stdcalc['sum'](9,3))
print(stdcalc['subtract'](9,3))
#1-> 12
#2-> 6
21. باز کردن عملگردهای یک تابع با استفاده از عملگر splat
def test(x, y, z):
print(x, y, z)
testDict = {'x': 1, 'y': 2, 'z': 3}
testList = [10, 20, 30]
test(*testDict)
test(**testDict)
test(*testList)
#1-> x y z
#2-> 1 2 3
#3-> 10 20 30
22. معکوس کردن یک رشته در یک خط
"Test Python"[::-1]
23. معکوس کردن یک فهرست
testList = [1, 3, 5]
testList.reverse()
print(testList)
#-> [5, 3, 1]
24. شناسایی نسخه پایتون در زمان اجرا
گاهی اوقات تمایلی نداریم برنامه ما در شرایطی اجرا شود که موتور پایتون کمتر از نسخهای باشد که برنامه خود را بر مبنای آن ساختهایم. برای انجام اینکار باید قطعه کوچکی برای بررسی این موضوع بنویسیم. قطعه کد زیر نحوه انجام اینکار را با فرمتی قابل فهم نشان میدهد.
import sys
#Detect the Python version currently in use.
if not hasattr(sys, "hexversion") or sys.hexversion != 50660080:
print("Sorry, you aren't running on Python 3.5\n")
print("Please upgrade to 3.5.\n")
sys.exit(1)
#Print Python version in a readable format.
print("Current Python version: ", sys.version)
25. ساده کردن دستور if
برای اعتبارسنجی چند مقدار، ما از روش زیر استفاده میکنیم
if m in [1,3,5,7]:
به جای روش فوق میتوان از روش زیر نیز استفاده کرد:
if m==1 or m==3 or m==5 or m==7:
26. بازرسی یک شی در پایتون
ما میتوانیم به بازرسی اشیا در پایتون با فراخوانی متد dir() بپردازیم. قطعه کد زیر نحوه انجام اینکار را نشان میدهد.
test = [1, 3, 5, 7]
print( dir(test) )
خروجی قطعه کد بالا به شرح زیر است:
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
27. تنظیم file sharing
پایتون اجازه اجرای یک سرور HTTP را میدهد که شما میتوانید برای بهاشتراکگذاری فایلهای از دایرکتوری ریشه سرور از آن استفاده کنید. فرمان زیر برای انجام اینکار استفاده میشود:
python3 -m http.server
28. دیباگ کردن اسکریپتها
ما میتوانیم نقاط شکستی در اسکریپتهای پایتون با استفاده از ماژول <pdb> ایجاد کنیم. قطعه کد زیر نحوه انجام اینکار را نشان میدهد:
import pdb
pdb.set_trace()
29. از کاربرد عملگر _ غافل نشوید
این قابلیت خیلی مفید است و بیشتر ما از وجود آن بی اطلاع هستیم. در کنسول پایتون ، هر زمان عبارتی را تست کنیم یا تابعی را فراخوانی کنیم، نتیجه به یک نام موقت ارسال میشود که یک زیرخط (_ ) است ارسال میشود. _ به آخرین خروجی از آخرین عبارت اجرایی اشاره دارد. به قطعه کد زیر دقت کنید.
>>> 2 + 1
3
>>> _
3
>>> print _
3
همانگونه که مشاهده میکنید دستور چاپ همراه با عملگر زیر خط خروجی را آخرین فرمان اجرایی را نشان میدهد.
ماهنامه شبکه را از کجا تهیه کنیم؟
ماهنامه شبکه را میتوانید از کتابخانههای عمومی سراسر کشور و نیز از دکههای روزنامهفروشی تهیه نمائید.
ثبت اشتراک نسخه کاغذی ماهنامه شبکه
ثبت اشتراک نسخه آنلاین
کتاب الکترونیک +Network راهنمای شبکهها
- برای دانلود تنها کتاب کامل ترجمه فارسی +Network اینجا کلیک کنید.
کتاب الکترونیک دوره مقدماتی آموزش پایتون
- اگر قصد یادگیری برنامهنویسی را دارید ولی هیچ پیشزمینهای ندارید اینجا کلیک کنید.
نظر شما چیست؟