tgoop.com/pythonwithmedev/361
Create:
Last Update:
Last Update:
اگه اینارو نمیدونی ادعایی تو برنامه نویسی نداشته باش!
شاید پارامترهای 'arg' و 'kwarg' توی تعریف توابع یا داکیومنت های کتابخونه های مختلف #پایتون دیده باشین.
اما این دوتا پارامتر دقیقا چیکار میکنن؟
زمان تعریف توابع میشه یک یا چند آرگیومنت رو به عنوان ورودی به اون تابع تعریف کرد اما اگر ندونیم که ورودی ها دقیقا چند تا هستند یا در آینده بخواییم چیزهای دیگه رو هم به عنوان ورودی به تابع بدیم به مشکل برمیخوریم و اینجاست که این دو تا پارامتر وارد عمل میشن.
پارامتر *arg: اگر تابعی از این پارامتر استفاده کنه به ترتیب وردی هایی که بهش داده شده رو میگیره و داخل پارامترهاش میریزه اما هر ورودی بیش تر از تعداد ورودی های ثابت رو به *arg اختصاص میده
def testfunc(one,*argv):
for arg in argv:
print(arg)
testfunc('Hello', 'this', 'is', 'SiliconBrain')
توی مثال بالا تابع مقدار ورودی 'one' رو با "hello" پر میکنه و باقی ورودی ها رو داخل *arg میریزه.
پارامتر *arg از مجوعه پارامترهای position based هست یعنی ترتیب ورودی هایی که بهش داده میشه اهمیت داره و به تبع اون میشه به همون ترتیب داخل تابع بهشون دسترسی داشت.
پارامتر **kwarg: این پارامتر هم مثل پارامتر قبلی برای ورودی دادن اضافی به توابع استفاده میشه با این تفاوت که ساختار اون به صورت دیکشنری هست و ورودی هایی که از این طریق به تابع داده میشن رو باید به صورت مقادیر {key:value} تعریف کرد.
def testfunc(arg1, **kwargs):
for key, value in kwargs.items():
print(f"{key} == {value}")
testfunc("Hi", first='this', mid='is', last='SiliconBrain')
در مثال بالا مقدار arg1 با "Hi" پر میشه و بقیه ورودی ها با **kwarg اختصاص پیدا میکنند در نتیجه داخل تابع به جای دسترسی به ورودی ها با استفاده از slicing که در *arg استفاده میشه.
نکته مهم: نام گذاری برای این دو پارامتر آزاد هست و هر اسمی که بعد از * یا ** بیاد همون کاربرد موارد گفته شده بالا رو داره.
#python
BY 🧑💻Cyber.vision🧑💻
Share with your friend now:
tgoop.com/pythonwithmedev/361