توی پایتون میتونید با استفاده از * اولین ایتم و اخرین ایتم و ایتم های وسط رو جداگانه بگیرید
#python
@CleverDevs
@CleverDevsGp
#python
@CleverDevs
@CleverDevsGp
برای دیکد و اینکد کردن متن توی پایتون میتونید از کد های زیر استفاده کنید
اینکد
دیکد
by @Mer_Py
#python
@CleverDevs
@CleverDevs
اینکد
import base64
encoded_data = base64.b64encode("Encode this text")
print("Encoded text with base 64 is")
print(encoded_data)
دیکد
import base64
decoded_data = base64.b64decode("RW5jb2RlIHRoaXMgdGV4dA==")
print("decoded text is ")
print(decoded_data)
by @Mer_Py
#python
@CleverDevs
@CleverDevs
👍17🤣6👌1🆒1
تو این پست میخوام درباره venv تو پایتون توضیح بدم
وقتی شما پایتون رو روی سیستمتون نصب میکنید کلی پکیج استاندارد هم همراهش نصب میشن ولی برای بیشتر پروژه ها شما باید یه سری پکیج های ثانویه رو هم با pip نصب کنید
وقتی پروژه هاتون پیچیده تر میشه اینکه بفهمید کدوم پکیج برا کدوم پروژهاس سخت تر میشه همچنین ممکنه پروژه های مختلف از ورژن های مختلف یک پکیج استفاده کنن
برای اینکه پروژه هاتون رو ساختارمند تر کنید باید برای هر پروژه یک محیط مجازی درست کنید (virtual environment ) این محیط در واقع یه کپی از پایتون اصلی نصب شده رو سیستمون هست و شما میتونید همه پکیجای مربوط به پروژتون رو اینجا نصب کنید و این پکیجا با پیکج های پروژه های دیگه تداخلی نخواهند داشت
با کامند زیر میتونید یه محیط مجازی جدید هرجا که خواستید درست کنید
document:
https://docs.python.org/3/library/venv.html
#python
@CleverDevs
@CleverDevsGp
وقتی شما پایتون رو روی سیستمتون نصب میکنید کلی پکیج استاندارد هم همراهش نصب میشن ولی برای بیشتر پروژه ها شما باید یه سری پکیج های ثانویه رو هم با pip نصب کنید
وقتی پروژه هاتون پیچیده تر میشه اینکه بفهمید کدوم پکیج برا کدوم پروژهاس سخت تر میشه همچنین ممکنه پروژه های مختلف از ورژن های مختلف یک پکیج استفاده کنن
برای اینکه پروژه هاتون رو ساختارمند تر کنید باید برای هر پروژه یک محیط مجازی درست کنید (virtual environment ) این محیط در واقع یه کپی از پایتون اصلی نصب شده رو سیستمون هست و شما میتونید همه پکیجای مربوط به پروژتون رو اینجا نصب کنید و این پکیجا با پیکج های پروژه های دیگه تداخلی نخواهند داشت
با کامند زیر میتونید یه محیط مجازی جدید هرجا که خواستید درست کنید
python -m venv /path/to/new/virtual/environment
document:
https://docs.python.org/3/library/venv.html
#python
@CleverDevs
@CleverDevsGp
🔥8👍4❤3🆒1
مدیریت مموری میتونه تاثیر بسزایی روی پرفورمنس اپلیکیشن شما داشته باشه .
توی پایتون شما میتونید با sys.getsizeof() ببیند هر متغیری چقدر از حافظه مموری رو اشغال کرده تا اگه متغیری مصرف بهینه ای نداشت بتونید کدتون رو اصلاح کنید و به برنامتون سرعت بدید
#python
@CleverDevs - @CleverDevsGp
توی پایتون شما میتونید با sys.getsizeof() ببیند هر متغیری چقدر از حافظه مموری رو اشغال کرده تا اگه متغیری مصرف بهینه ای نداشت بتونید کدتون رو اصلاح کنید و به برنامتون سرعت بدید
#python
@CleverDevs - @CleverDevsGp
👍15🔥4🆒4💯1
تو پایتون با این روش میتونید یه لیست بسازید و به تعداد دلخواه ایتم با مقدار اولیه توش بزارید
#python
@CleverDevs - @CleverDevsGp
#python
@CleverDevs - @CleverDevsGp
👍18🔥4❤🔥2❤1👎1
توی این پست میخوام درباره assert توی پایتون توضیح بدم
این کلیدواژه که کاربرد اصلی اون برای دیباگ کردنه
یه شرط میگیره اگه شرط true باشه شتر دیدی ندیدی اما اگه اگه شرط false باشه ارور میده و برنامه متوقف میشه
همچنین میتونید یه ارور مسیج کاستوم هم براش بزاید
مثال توی تصویر هم یکی از کاربرد های این کلیدواژه رو نوشته مثلا وقتی شما دارید یه فروشگاه با پایتون میزنید برا قسمت کد تخفیف اینطوری میتونید چک کنید که مبلغ بعد تخفیف کمتر از صفر یا بیشتر از مبلغ اصلی نباشه وگرنه AssertionError میده
#python
@CleverDevs - @CleverDevs
این کلیدواژه که کاربرد اصلی اون برای دیباگ کردنه
یه شرط میگیره اگه شرط true باشه شتر دیدی ندیدی اما اگه اگه شرط false باشه ارور میده و برنامه متوقف میشه
همچنین میتونید یه ارور مسیج کاستوم هم براش بزاید
Devs = "stupid"الان تعیین کردیم که اگه Devs برابر با Clever نبود ارور بده و متن ارور رو هم بعد کاما نوشتیم
assert Devs == "Clever","Devs must be clever"
مثال توی تصویر هم یکی از کاربرد های این کلیدواژه رو نوشته مثلا وقتی شما دارید یه فروشگاه با پایتون میزنید برا قسمت کد تخفیف اینطوری میتونید چک کنید که مبلغ بعد تخفیف کمتر از صفر یا بیشتر از مبلغ اصلی نباشه وگرنه AssertionError میده
#python
@CleverDevs - @CleverDevs
🔥11👍9⚡2
یکی از بچه های چنل یه چت بات ساده با پایتون نوشته که تایتل مقاله ویکی پدیا میگیره و در باره اون مقاله ازش سوال میپرسید
گیت هاب پروژه :
https://github.com/NextProduction/42
اگه هم خواستید تستش کنید فایل theproject42 رو به عنوان نوت بوک توی colab باز کنید و کد هاشو ران کنید
// شماهم اگه پروژه ای داشتید که خواستید معرفی کنید برام بفرستید@mmdrsdev
#python #ai
@CleverDevs - @CleverDevsGp
گیت هاب پروژه :
https://github.com/NextProduction/42
اگه هم خواستید تستش کنید فایل theproject42 رو به عنوان نوت بوک توی colab باز کنید و کد هاشو ران کنید
// شماهم اگه پروژه ای داشتید که خواستید معرفی کنید برام بفرستید
#python #ai
@CleverDevs - @CleverDevsGp
🔥15👍4🤣3⚡1
عبارت with توی پایتون چیه و به چه دردی میخوره؟!
عبارت with برای مدیریت کردن خطا بدرد میخوره و میتونه کدمون رو تمیز تر و قابل خوندن تر بکنه
مدیریت فایل ها و... رو راحت تر میکنه مثلا تو کد بالا سه تیکه کد داریم که همشون یه کار انجام میدن اما سومی هم راحت تره هم مطمئن تر مثلا برخلاف دوتای اولی تو سومی نیازی نیست file.close رو بنویسید و خود with زحمتش رو برامون میکشه
تو کد بالا قسمت اول که اصلا مستعد باگه و ولش کنید قسمت دوم اوکیه ولی خب کدمون رو سخت میکنه ولی وقتی از with استفاده کی هم باگ نداری و هم کدت اسون تره در واقع سومی در نهایت به دومی ترجمه میشه
اگه خواستید بیشتر در باره with statement بدونید مقاله زیر رو بخونید
https://www.geeksforgeeks.org/with-statement-in-python/
#python
@CleverDevs - @CleverDevsGp
عبارت with برای مدیریت کردن خطا بدرد میخوره و میتونه کدمون رو تمیز تر و قابل خوندن تر بکنه
مدیریت فایل ها و... رو راحت تر میکنه مثلا تو کد بالا سه تیکه کد داریم که همشون یه کار انجام میدن اما سومی هم راحت تره هم مطمئن تر مثلا برخلاف دوتای اولی تو سومی نیازی نیست file.close رو بنویسید و خود with زحمتش رو برامون میکشه
تو کد بالا قسمت اول که اصلا مستعد باگه و ولش کنید قسمت دوم اوکیه ولی خب کدمون رو سخت میکنه ولی وقتی از with استفاده کی هم باگ نداری و هم کدت اسون تره در واقع سومی در نهایت به دومی ترجمه میشه
اگه خواستید بیشتر در باره with statement بدونید مقاله زیر رو بخونید
https://www.geeksforgeeks.org/with-statement-in-python/
#python
@CleverDevs - @CleverDevsGp
👍20🔥6👎2👌1
یکی از چیزای باحالی که تو پایتون هست یه شعر به اسم zen of python هستش که اصول کد زدن درست رو توش گفته . ذن پایتون رو Tim Peters توی سال 2004 نوشته و تو پایتون گذاشته
برای دیدن ذن کافیه این تیکه کد زیر رو توی پایتون بنویسید
و این خروجی رو بگیرید
#python | peps
@CleverDevs - @CleverDevsGp
برای دیدن ذن کافیه این تیکه کد زیر رو توی پایتون بنویسید
import this
و این خروجی رو بگیرید
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
CleverDevs are better than other devs
#python | peps
@CleverDevs - @CleverDevsGp
😁26👍9👌3❤2👎1
توی پایتون همه دیتاها با آبحکت ها یا ارتباط بین آبجکت ها نشون داده میشن ; عجب زبونیه ، همش آبجکته. چیزایی مثل list , string , function توی پایتون آبجکت هستن
بر همین اساس ما یه تابع که آبجکت هست رو میتونم مثل هر ابجکت دیگه ای بریزیم توی یه متغیر دیگه یه نگاه به این کد بندازید
حالا میایم این تابع رو میریزیم توی یه تابع دیگه
دیدم که فانکشن دوم هم مث اولی درست حسابی کار میکنه اما اگه بیایم فانکشن اصلی رو با کلیدواژه del پاک کنیم چی میشه ؟
حالا پایتون میاد و به هر فانکشنی که میسازید یه هویت میده که میتونید با اتریبیوت name بهش دسترسی داشته باشید
همونطور که میبینید هویت فانکشن bark همون yell شد چون که دقیقا یه ابجکت رو کپی کردیم رو متغیر جدید پس اتریبیوت هاش هم تغییری نکردن
اما با اینکه name اسم فانکشن اصلی رو برمیگردونه تغییر تو نحوه صدا زدن فانکشن bark برامون ایجاد نمیشه
درواقع name برای دیباگ کردن بدرد میخوره
#python
@CleverDevs - @CleverDevsGp
بر همین اساس ما یه تابع که آبجکت هست رو میتونم مثل هر ابجکت دیگه ای بریزیم توی یه متغیر دیگه یه نگاه به این کد بندازید
def yell(text):
return text.upper() + '!'
>>> yell("cleverdevs")
CLEVERDEVS
حالا میایم این تابع رو میریزیم توی یه تابع دیگه
bark = yell
>>> bark('mammad')
MAMMAD
دیدم که فانکشن دوم هم مث اولی درست حسابی کار میکنه اما اگه بیایم فانکشن اصلی رو با کلیدواژه del پاک کنیم چی میشه ؟
>>> del yell
>>> yell('hello?')
NameError: "name 'yell' is not defined"
>>> bark('hey')
'HEY!'
حالا پایتون میاد و به هر فانکشنی که میسازید یه هویت میده که میتونید با اتریبیوت name بهش دسترسی داشته باشید
>>> bark.__name__
'yell'
همونطور که میبینید هویت فانکشن bark همون yell شد چون که دقیقا یه ابجکت رو کپی کردیم رو متغیر جدید پس اتریبیوت هاش هم تغییری نکردن
اما با اینکه name اسم فانکشن اصلی رو برمیگردونه تغییر تو نحوه صدا زدن فانکشن bark برامون ایجاد نمیشه
درواقع name برای دیباگ کردن بدرد میخوره
#python
@CleverDevs - @CleverDevsGp
👍22🔥4👌3❤1
ارور ها نقش مهمی تو برنامه نویسی و دیباگ کردن دارن و سرعت دیباگ کردن مارو چند برابر میکنن
توی پایتون ما میتونیم کلاس های exception خودمون رو تعریف کنیم و در جای مناسب به عنوان ارور بالا ببریمش
مثلا من میام و یه exception میسازم به اسم DevIsNotCleverException و از کلاس Exception که پیشفرض توی پایتون هستت ارث بری میکنم تا هروقت خواستم تو برنامه همچین اروری باشه بالا ببرمش
برای اینکه ارور رو نشون بدیم کافیه از raise استفاده کنیم
حالا اگه برنامه رو اجرا کنیم ارور DevIsNotCleverException میگیریم
این ویژگی توی پایتون برای راحت تر دیباگ کردنه پس سعی کنید حتما حتما ارور های معنی دار بسازید وگرنه کار خودتون رو سخت تر میکنید و برعکس عمل میکنید در واقع
اگه تیمی کار میکنید حتما باید یه داکیومنت برای این ارور ها داشته باشید تا همه اعضای تیم بدونن که هر اروری اومد مشکل از کجاس
و اینکه من نخواستم پست طولانی بشه و مثال ساده ای ازش زدم اگه دوست داشتید برای توضیحات بیشتر میتونید یه نگاه به این لینک بندازید (فیلتره)
https://martinxpn.medium.com/custom-exceptions-in-python-creating-custom-exceptions-59-100-days-of-python-4f26de8e851d
#python
@CleverDevs - @CleverDevsGp
توی پایتون ما میتونیم کلاس های exception خودمون رو تعریف کنیم و در جای مناسب به عنوان ارور بالا ببریمش
مثلا من میام و یه exception میسازم به اسم DevIsNotCleverException و از کلاس Exception که پیشفرض توی پایتون هستت ارث بری میکنم تا هروقت خواستم تو برنامه همچین اروری باشه بالا ببرمش
class DevIsNotCleverException(Exception):
pass
برای اینکه ارور رو نشون بدیم کافیه از raise استفاده کنیم
raise DevIsNotCleverException('Dev must be Clever')
حالا اگه برنامه رو اجرا کنیم ارور DevIsNotCleverException میگیریم
این ویژگی توی پایتون برای راحت تر دیباگ کردنه پس سعی کنید حتما حتما ارور های معنی دار بسازید وگرنه کار خودتون رو سخت تر میکنید و برعکس عمل میکنید در واقع
اگه تیمی کار میکنید حتما باید یه داکیومنت برای این ارور ها داشته باشید تا همه اعضای تیم بدونن که هر اروری اومد مشکل از کجاس
و اینکه من نخواستم پست طولانی بشه و مثال ساده ای ازش زدم اگه دوست داشتید برای توضیحات بیشتر میتونید یه نگاه به این لینک بندازید (فیلتره)
https://martinxpn.medium.com/custom-exceptions-in-python-creating-custom-exceptions-59-100-days-of-python-4f26de8e851d
#python
@CleverDevs - @CleverDevsGp
👍14👌6🔥4❤2
List Slicing و عملگر سوشی توی پایتون
توی پایتون شما میتونید شما میتونید با عملگر سوشی لیست هاتون رو با حالت های مختلف برش بزنید
همونطور که توی کد میبینید عملگر سوشی سه تا پارامتر داره
اولیش start یا جایی برش ازش شروع میشه که دیفالتش 0 هستش
دومین پارامتر end هستش که جایی رو نشون میده که برش تموم میشه و دیفالتش طول لیسته (فقط حواستون باشه که توی لیست جدید خود ایندکس end وجود نداره و اخرین عضو لیست ایندکس قبل end هستش)
و آخرین پارامتر هم step میشه که دیفالتش 1 هست و نشون دهنده گام های انتخاب عضوه یعنی چی ؟ مثلا اگه 1 بشه قدم هاش یدونه یدونس و همه اعضای موجود تو بازه ای که انتخاب کردید رو انتخاب میکنه یا مثلا اگه پارامتر step برابر با 2 باشه میاد و یکی در میون اعضا رو از اون بازه مورد نظر انتخاب میکنه
اما بریم سراغ مثال که کامل تر جا بیوفته موضوع
فک کنید ما یه لیست داریم اعداد 0 تا 9 و میخوایم از بین اعداد 3 تا 7 یکی در میون انتخاب کنیم برا این کار باید پارامتر start رو برابر با 3 بزاریم که شروع بازه هستش و پارامتر end رو برابر با 8 میزاریم که ایندکسش یکی بعد از ایندکس اخرین عضو لیستمونه و step رو 2 میزاریم تا گام هاش دوتا دوتا باشه و یکی در میون انتخاب کنه
یا میتونید لیستتون رو برعکس کنید به کد زیر نگا کنید
اومدیم و start و end رو همون مقدار دیفالتشون گذاشتیم و مقدار step رو برابر با منفی 1 گذاشتیم تا لیست رو از اخر به اول بخونه
البته میتونید جای اینکار از list.reverse() استفاده کنید
همینطور با استفاده از عملگر سوشی میتونید محتوای لیست رو خالی کنید که میتونید سرچ کنید و دربارش بخونید حتما
فقط اینکه حواستون باشه ممکنه خوانایی کدتون رو پایین بیاره و سعی کنید بیش از حد ازش استفاده نکنید
#python
@CleverDevs - @CleverDevsGp
توی پایتون شما میتونید شما میتونید با عملگر سوشی لیست هاتون رو با حالت های مختلف برش بزنید
>>> lst = [1, 2, 3, 4, 5]
>>> lst
[1, 2, 3, 4, 5]
# lst[start:end:step]
>>> lst[1:3:1]
[2, 3]
همونطور که توی کد میبینید عملگر سوشی سه تا پارامتر داره
اولیش start یا جایی برش ازش شروع میشه که دیفالتش 0 هستش
دومین پارامتر end هستش که جایی رو نشون میده که برش تموم میشه و دیفالتش طول لیسته (فقط حواستون باشه که توی لیست جدید خود ایندکس end وجود نداره و اخرین عضو لیست ایندکس قبل end هستش)
و آخرین پارامتر هم step میشه که دیفالتش 1 هست و نشون دهنده گام های انتخاب عضوه یعنی چی ؟ مثلا اگه 1 بشه قدم هاش یدونه یدونس و همه اعضای موجود تو بازه ای که انتخاب کردید رو انتخاب میکنه یا مثلا اگه پارامتر step برابر با 2 باشه میاد و یکی در میون اعضا رو از اون بازه مورد نظر انتخاب میکنه
اما بریم سراغ مثال که کامل تر جا بیوفته موضوع
فک کنید ما یه لیست داریم اعداد 0 تا 9 و میخوایم از بین اعداد 3 تا 7 یکی در میون انتخاب کنیم برا این کار باید پارامتر start رو برابر با 3 بزاریم که شروع بازه هستش و پارامتر end رو برابر با 8 میزاریم که ایندکسش یکی بعد از ایندکس اخرین عضو لیستمونه و step رو 2 میزاریم تا گام هاش دوتا دوتا باشه و یکی در میون انتخاب کنه
>>> CleverList = [0,1,2,3,4,5,6,7,8,9]
>>> CleverList[3:8:2]
# Output : [3,5,7]
یا میتونید لیستتون رو برعکس کنید به کد زیر نگا کنید
>>> CleverList = [0,1,2,3,4,5,6,7,8,9]
>>> CleverList[::-1]
# Output : [9,8,7,6,5,4,3,2,1,0]
اومدیم و start و end رو همون مقدار دیفالتشون گذاشتیم و مقدار step رو برابر با منفی 1 گذاشتیم تا لیست رو از اخر به اول بخونه
البته میتونید جای اینکار از list.reverse() استفاده کنید
همینطور با استفاده از عملگر سوشی میتونید محتوای لیست رو خالی کنید که میتونید سرچ کنید و دربارش بخونید حتما
فقط اینکه حواستون باشه ممکنه خوانایی کدتون رو پایین بیاره و سعی کنید بیش از حد ازش استفاده نکنید
#python
@CleverDevs - @CleverDevsGp
👍14🔥4🆒3💯2⚡1👌1
توی پایتون چندین کتابخانه وجود دارند که به شما اجازه میدن کد جاوا اسکریپت را اجرا کنید💻
یکی از محبوب ترینشون PyExecJS هست این کتابخانه یک اینترفیس ساده برای اجرا کردن کد جاوا اسکریپت با استفاده از موتورهای مختلف جاوا اسکریپت ارائه میده
مثال با استفاده از PyExecJS
نصب PyExecJS:
برای نصبش میتونید از pip استفاده کنید:
نمونه کد:
اینجا یه مثال ساده میزنم براتون:
سایر کتابخانهها
بغیر از PyExecJS، کتابخانههای دیگه ای هم هستند که میشه ازشون برای اجرا کردن کد جاوا اسکریپت توی پایتون استفاده کرد، مثل Node.js با استفاده از ماژول subprocess پایتون. در این روش، شما میتونید یک اسکریپت جاوا اسکریپت رو اجرا کنید.
مثال با استفاده از subprocess
نمونه کد:
اینجا یه مثال ساده دیگه میزنم:
این روش انعطافپذیری بیشتری میده چون شما میتونید از تمامی قابلیتهای Node.js استفاده کنید.
#python #javascript
@CleverDevs - @CleverDevsGp
یکی از محبوب ترینشون PyExecJS هست این کتابخانه یک اینترفیس ساده برای اجرا کردن کد جاوا اسکریپت با استفاده از موتورهای مختلف جاوا اسکریپت ارائه میده
مثال با استفاده از PyExecJS
نصب PyExecJS:
برای نصبش میتونید از pip استفاده کنید:
pip install PyExecJS
نمونه کد:
اینجا یه مثال ساده میزنم براتون:
import execjs
# جاوا اسکریپت ساده که یک تابع تعریف میکند و اون رو اجرا میکنه
js_code = """
function hello(name) {
return "Hello, " + name + "!";
}
"""
# کامپایل و اجرا کد جاوا اسکریپت
ctx = execjs.compile(js_code)
result = ctx.call("hello", "World")
print(result) # باید "Hello, World!"رو پرینت کنه
سایر کتابخانهها
بغیر از PyExecJS، کتابخانههای دیگه ای هم هستند که میشه ازشون برای اجرا کردن کد جاوا اسکریپت توی پایتون استفاده کرد، مثل Node.js با استفاده از ماژول subprocess پایتون. در این روش، شما میتونید یک اسکریپت جاوا اسکریپت رو اجرا کنید.
مثال با استفاده از subprocess
نمونه کد:
اینجا یه مثال ساده دیگه میزنم:
import subprocess
# جاوا اسکریپت ساده که یک تابع تعریف میکند و اون رو اجرا میکنه
js_code = """
console.log("Hello, World!");
"""
# ذخیره کد جاوا اسکریپت در یک فایل
with open("script.js", "w") as file:
file.write(js_code)
# اجرا کردن فایل جاوا اسکریپت با استفاده از Node.js
result = subprocess.run(["node", "script.js"], capture_output=True, text=True)
print(result.stdout) # باید "Hello, World!" را پرینت کند
این روش انعطافپذیری بیشتری میده چون شما میتونید از تمامی قابلیتهای Node.js استفاده کنید.
#python #javascript
@CleverDevs - @CleverDevsGp
🔥9👍5🆒3⚡2👌2❤1💯1
پارامتر های args* و kwargs** توی پایتون چی هستن ؟
توی پایتون ما علاوه برا پارامتر هایی که به طور معمول موقع تعریف تابع مشخص میکنیم دونوع پارامتر دیگه داریم که با ستاره مشخص میشن Non-keyword args و keyword args که پاس دادنشون موقع فراخوانی تابع الزامی نیست و آرگیومنت های اضافه ای که موقع فراخوانی تابع بهش پاس میدیم جای این پارامتر ها قرار میگیرن
اما چطور باید این پارامتر هارو تعریف کنیم و ازشون استفاده کنیم. فرض کنید ما یه تابع به اسم user داریم که به عنوان پارامتر اول آیدی میگیره و به عنوان پارامتر های بعدی یه سری دیتا بدون keyword مثلا اسم زبان های برنامه نویسی طرف و یه سری دیتا با keyword به عنوان اطلاعات شخصی طرف میگیره
حالا اگه این کد رو ران کنیم آیدی رو مثل یه پارامتر معمولی پرینت میکنه
بقیه آرگیومنت هایی که keyword ندارن میرن جزو langs که یه tuple هستش
و آرگیومنت هایی هم که که keyword دارن میرن جزو userinfo که یه dictionary هستش
و خروجی یه همچین چیزی میشه :
برای اینکه بیشتر دربارشون بخونید میتونید لینک زیر رو ببینید
https://www.geeksforgeeks.org/args-kwargs-python/
#python
@CleverDevs - @CleverDevsGp
توی پایتون ما علاوه برا پارامتر هایی که به طور معمول موقع تعریف تابع مشخص میکنیم دونوع پارامتر دیگه داریم که با ستاره مشخص میشن Non-keyword args و keyword args که پاس دادنشون موقع فراخوانی تابع الزامی نیست و آرگیومنت های اضافه ای که موقع فراخوانی تابع بهش پاس میدیم جای این پارامتر ها قرار میگیرن
اما چطور باید این پارامتر هارو تعریف کنیم و ازشون استفاده کنیم. فرض کنید ما یه تابع به اسم user داریم که به عنوان پارامتر اول آیدی میگیره و به عنوان پارامتر های بعدی یه سری دیتا بدون keyword مثلا اسم زبان های برنامه نویسی طرف و یه سری دیتا با keyword به عنوان اطلاعات شخصی طرف میگیره
def user(id,*langs,**userinfo):
print(id)
print(langs)
print(userinfo)
user(1,"php","python",name="Mammad",channel="CleverDevs")
حالا اگه این کد رو ران کنیم آیدی رو مثل یه پارامتر معمولی پرینت میکنه
بقیه آرگیومنت هایی که keyword ندارن میرن جزو langs که یه tuple هستش
و آرگیومنت هایی هم که که keyword دارن میرن جزو userinfo که یه dictionary هستش
و خروجی یه همچین چیزی میشه :
1
('php', 'python')
{'name': 'Mammad', 'channel': 'CleverDevs'}
برای اینکه بیشتر دربارشون بخونید میتونید لینک زیر رو ببینید
https://www.geeksforgeeks.org/args-kwargs-python/
#python
@CleverDevs - @CleverDevsGp
2👍32🔥8👌3⚡2
یه چیزی که درباره پایتون رو مخمه ، شما به 90 درصد افراد غیربرنامه نویس بگی که برنامه نویس هستی بر میگردن میگن پایتون بلدی؟ من یه زمان پایتون یاد میگرفتم (هلو ورلد چاپ کرده)
#python #fun
@CleverDevs - @CleverDevsGp
#python #fun
@CleverDevs - @CleverDevsGp
🤣148👍21😁4💔3