کدام یک از گزینه های زیر یک لیست غیر قابل تغییر هستند؟
1️⃣: دیکشنری
▫ ️|3%(1)
2️⃣: تاپل
▫ ️|||||||||||||||||||||||||||||||||||||||||||||||||98%(39)
3️⃣: عدد
▫ ️0%(0)
👥: 40شرکت در نظر سنجی
1️⃣: دیکشنری
▫ ️|3%(1)
2️⃣: تاپل
▫ ️|||||||||||||||||||||||||||||||||||||||||||||||||98%(39)
3️⃣: عدد
▫ ️0%(0)
👥: 40شرکت در نظر سنجی
کدام یک از گزینه های زیر توسط یک تابعی که return ندارد، بازگردانده می شود؟
1️⃣: False
▫ ️0%(0)
2️⃣: None
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(40)
3️⃣: 0
▫ ️0%(0)
👥: 40شرکت در نظر سنجی
1️⃣: False
▫ ️0%(0)
2️⃣: None
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(40)
3️⃣: 0
▫ ️0%(0)
👥: 40شرکت در نظر سنجی
خروجی کد زیر چیست؟
nums = (55, 44, 33, 22)
print(max(min(nums[ : 2 ]), abs(-42)))
1️⃣: 2
▫ ️0%(0)
2️⃣: 42
▫ ️|2%(1)
3️⃣: 44
▫ ️|||||||||||||||||||||||||||||||||||||||||||||||||98%(41)
4️⃣: -42
▫ ️0%(0)
👥: 42شرکت در نظر سنجی
nums = (55, 44, 33, 22)
print(max(min(nums[ : 2 ]), abs(-42)))
1️⃣: 2
▫ ️0%(0)
2️⃣: 42
▫ ️|2%(1)
3️⃣: 44
▫ ️|||||||||||||||||||||||||||||||||||||||||||||||||98%(41)
4️⃣: -42
▫ ️0%(0)
👥: 42شرکت در نظر سنجی
⁉️ تست 128 : خروجی کد زیر چیست؟
def test(func, arg):
return func(func(arg))
def mult(x):
return x * x
print(test(mult, 2))
1️⃣: 2
▫ ️0%(0)
2️⃣: 4
▫ ️|3%(1)
3️⃣: 8
▫ ️0%(0)
4️⃣: 16
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||97%(36)
👥: 37شرکت در نظر سنجی
def test(func, arg):
return func(func(arg))
def mult(x):
return x * x
print(test(mult, 2))
1️⃣: 2
▫ ️0%(0)
2️⃣: 4
▫ ️|3%(1)
3️⃣: 8
▫ ️0%(0)
4️⃣: 16
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||97%(36)
👥: 37شرکت در نظر سنجی
✍️برنامه نویسی کاربردی (Functional programming)
همانطور که از نام آن پیداست، برنامه نویسی کاربردی یک استایل برنامه نویسی است که حول توابع کار می کند. کلید اصلی این نوع برنامه نویسی توابع سطح بالا (higher order funtions) هستند که قبلتر آن ها را به عنوان "استفاده از توابع به عنوان اشیا" دیدیم. توابع سطح بالا، توابع دیگر را به عنوان ورودی دریافت می کنند و یا توابع دیگر را به عنوان خروجی بر می گردانند.
def apply_twice (func, arg) :
return func(func(arg))
def add_five(x):
return x+5
print(apply_twice(add_five, 10))
خروجی :
>>>
20
>>>
📌تابع apply_twice، تابع دیگر را به عنوان ورودی دریافت می کند و آن را 2 بار در درون خود فراخوانی میکند.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
همانطور که از نام آن پیداست، برنامه نویسی کاربردی یک استایل برنامه نویسی است که حول توابع کار می کند. کلید اصلی این نوع برنامه نویسی توابع سطح بالا (higher order funtions) هستند که قبلتر آن ها را به عنوان "استفاده از توابع به عنوان اشیا" دیدیم. توابع سطح بالا، توابع دیگر را به عنوان ورودی دریافت می کنند و یا توابع دیگر را به عنوان خروجی بر می گردانند.
def apply_twice (func, arg) :
return func(func(arg))
def add_five(x):
return x+5
print(apply_twice(add_five, 10))
خروجی :
>>>
20
>>>
📌تابع apply_twice، تابع دیگر را به عنوان ورودی دریافت می کند و آن را 2 بار در درون خود فراخوانی میکند.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️توابع خالص (pure functions)
برنامه نویسی کاربردی به دنبال این است که از توابع خالص استفاده کند. توابع خالص هیچ گونه تاثیری خارج از خود تابع ندارند و فقط خروجی ای تولید می کنند که فقط و فقط به ورودی هایش متکی است.
همان طوری که توابع math کار میکنند، برای مثال: cos(x)، که با گرفتن یک ورودی x فقط و فقط مقدار cos را محاسبه می کند و آن را به عنوان خروجی می دهد.
مثالی از توابع خالص:
Def pure_function(x, y) :
Temp = x + 2*y
Return temp / (2*x + y)
توابع نا خالص :
Some_list = [ ]
Def impure(arg) :
Some_list.append(arg)
✍️تابع بالا ناخالص است چون مقدار some_list در خارج از تابع را تغییر می دهد.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
برنامه نویسی کاربردی به دنبال این است که از توابع خالص استفاده کند. توابع خالص هیچ گونه تاثیری خارج از خود تابع ندارند و فقط خروجی ای تولید می کنند که فقط و فقط به ورودی هایش متکی است.
همان طوری که توابع math کار میکنند، برای مثال: cos(x)، که با گرفتن یک ورودی x فقط و فقط مقدار cos را محاسبه می کند و آن را به عنوان خروجی می دهد.
مثالی از توابع خالص:
Def pure_function(x, y) :
Temp = x + 2*y
Return temp / (2*x + y)
توابع نا خالص :
Some_list = [ ]
Def impure(arg) :
Some_list.append(arg)
✍️تابع بالا ناخالص است چون مقدار some_list در خارج از تابع را تغییر می دهد.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️ تست 129 : این یک تابع خالص است؟
def func(x):
y = x**2
z = x+y
return z
1️⃣: بله
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(38)
2️⃣: خیر
▫ ️0%(0)
3️⃣: بستگی دارد
▫ ️0%(0)
👥: 38شرکت در نظر سنجی
def func(x):
y = x**2
z = x+y
return z
1️⃣: بله
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(38)
2️⃣: خیر
▫ ️0%(0)
3️⃣: بستگی دارد
▫ ️0%(0)
👥: 38شرکت در نظر سنجی
✍️توابع خالص – ( قسمت دوم)
استفاده از توابع خالص مزایا و معایبی دارد:
می توان از این توابع به راحتی نتیجه گیری کرد و از آن تست گرفت.
این توابع کارآمدتر هستند.
زمانی که ورودی تابع ارزیابی شد و محاسبات تابع انجام شد، خروجی می تواند نگهداری شود و بعدا به آن ارجاع شود (زمانی که به آن احتیاج باشد). از این طریق تعداد فراخوانی توابع هم کمتر می شود. به این کار memorization می گویند.
به صورت همزمان، آسان تر اجرا می شود.
مهمترین عیبی که وجود دارد این است که اگر فقط از توابع خالص استفاده شود، در ورودی و خروجی مشکلات پیچیده ای به وجود می آید که به صورت وراثتی باعث ایجاد تاثیرات جانبی میشود.
در بعضی مواقع هم نوشتن آن ها بسیار سخت است.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
استفاده از توابع خالص مزایا و معایبی دارد:
می توان از این توابع به راحتی نتیجه گیری کرد و از آن تست گرفت.
این توابع کارآمدتر هستند.
زمانی که ورودی تابع ارزیابی شد و محاسبات تابع انجام شد، خروجی می تواند نگهداری شود و بعدا به آن ارجاع شود (زمانی که به آن احتیاج باشد). از این طریق تعداد فراخوانی توابع هم کمتر می شود. به این کار memorization می گویند.
به صورت همزمان، آسان تر اجرا می شود.
مهمترین عیبی که وجود دارد این است که اگر فقط از توابع خالص استفاده شود، در ورودی و خروجی مشکلات پیچیده ای به وجود می آید که به صورت وراثتی باعث ایجاد تاثیرات جانبی میشود.
در بعضی مواقع هم نوشتن آن ها بسیار سخت است.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️ تست 130 : کدام یک از موارد زیر از فواید توابع خالص نیست؟
1️⃣: به صورت آسان تر به صورت موازی اجرا می شوند.
▫ ️|||||||||||||||||||||||46%(17)
2️⃣: نوشتنشان آسان تر است
▫ ️|||||||||||||||||||||||||51%(19)
3️⃣: آنالیزشان آسانتر است
▫ ️|3%(1)
👥: 37شرکت در نظر سنجی
1️⃣: به صورت آسان تر به صورت موازی اجرا می شوند.
▫ ️|||||||||||||||||||||||46%(17)
2️⃣: نوشتنشان آسان تر است
▫ ️|||||||||||||||||||||||||51%(19)
3️⃣: آنالیزشان آسانتر است
▫ ️|3%(1)
👥: 37شرکت در نظر سنجی
⁉️ تست 131 : به توابع anonymous چه می گویند؟
1️⃣: lambdas
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(36)
2️⃣: lamdas
▫ ️0%(0)
3️⃣: lombdas
▫ ️0%(0)
👥: 36شرکت در نظر سنجی
1️⃣: lambdas
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(36)
2️⃣: lamdas
▫ ️0%(0)
3️⃣: lombdas
▫ ️0%(0)
👥: 36شرکت در نظر سنجی
✍️Lambdas
زمانی که یک تابع تعریف می شود (با استفاده از def)، به صورت اتوماتیک این تابع به یک متغیر اختصاص داده می شود.
روش lambda با ساخت اشیا دیگری مثل لیست ها و یا integer ها متفاوت است و می تواند بدون اختصاص داده شدن به یک متغیر، بر روی هوا، ساخته شود. این روش قابل اعمال در توابع است که با استفاده از عبارت lambda ساخته میشوند.
این روش زمانی استفاده میشود که از یک تابع ساده، به عنوان متغیر ورودی در تابع دیگر استفاده میشود.
def my_func(f, arg):
return f(arg)
my_func(lambda x: 2*x*x, 5)
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
زمانی که یک تابع تعریف می شود (با استفاده از def)، به صورت اتوماتیک این تابع به یک متغیر اختصاص داده می شود.
روش lambda با ساخت اشیا دیگری مثل لیست ها و یا integer ها متفاوت است و می تواند بدون اختصاص داده شدن به یک متغیر، بر روی هوا، ساخته شود. این روش قابل اعمال در توابع است که با استفاده از عبارت lambda ساخته میشوند.
این روش زمانی استفاده میشود که از یک تابع ساده، به عنوان متغیر ورودی در تابع دیگر استفاده میشود.
def my_func(f, arg):
return f(arg)
my_func(lambda x: 2*x*x, 5)
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
✍️Lambdas (2)
توابعی که توسط lambda ساخته میشوند به قدرتمندی توابع دیگر نیستند. فقط محاسبات ساده و یک خطی را ساپورت می کند.
مثالی از توابع دیگر :
Def polynomial(x):
Return x**2 + 5*x + 4
Print(polynomial(-4))
همان تابع نوشته شده توسط lambda :
Print((lambda x : x**2 + 5*x + 4)(-4))
خروجی :
>>>
0
0
>>>
در کد بالا ما یک تابع بر روی هوا ساختیم و یک ورودی به آن فرستادیم.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
توابعی که توسط lambda ساخته میشوند به قدرتمندی توابع دیگر نیستند. فقط محاسبات ساده و یک خطی را ساپورت می کند.
مثالی از توابع دیگر :
Def polynomial(x):
Return x**2 + 5*x + 4
Print(polynomial(-4))
همان تابع نوشته شده توسط lambda :
Print((lambda x : x**2 + 5*x + 4)(-4))
خروجی :
>>>
0
0
>>>
در کد بالا ما یک تابع بر روی هوا ساختیم و یک ورودی به آن فرستادیم.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️ تست 132 : جای خالی را طوری پر کنید که یک تابع lambda ایجاد شود که مربع ورودی را برگرداند و برای ورودی عدد 8 را دریافت کند.
A = (..... x ... x * x) ( ... )
1️⃣: lambda - : - 8
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||97%(34)
2️⃣: lombda - 8 - 8
▫ ️0%(0)
3️⃣: func - : - 8
▫ ️|3%(1)
👥: 35شرکت در نظر سنجی
A = (..... x ... x * x) ( ... )
1️⃣: lambda - : - 8
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||97%(34)
2️⃣: lombda - 8 - 8
▫ ️0%(0)
3️⃣: func - : - 8
▫ ️|3%(1)
👥: 35شرکت در نظر سنجی
✍️Lambdas (3)
توابع lambda هم می توانند به متغیر ها اختصاص داده شوند و مانند توابع عادی به کار گرفته شوند.
Double = lambda x : x*2
Print(double(7))
خروجی :
>>>
14
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
توابع lambda هم می توانند به متغیر ها اختصاص داده شوند و مانند توابع عادی به کار گرفته شوند.
Double = lambda x : x*2
Print(double(7))
خروجی :
>>>
14
>>>
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️ تست 133 : خروجی کد زیر چیست؟
triple = lambda x : x* 3
add = lambda x, y : x + y
print(add(triple(3),4))
1️⃣: 7
▫ ️0%(0)
2️⃣: 34
▫ ️0%(0)
3️⃣: 13
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(42)
4️⃣: error
▫ ️0%(0)
👥: 42شرکت در نظر سنجی
triple = lambda x : x* 3
add = lambda x, y : x + y
print(add(triple(3),4))
1️⃣: 7
▫ ️0%(0)
2️⃣: 34
▫ ️0%(0)
3️⃣: 13
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(42)
4️⃣: error
▫ ️0%(0)
👥: 42شرکت در نظر سنجی
✍️map
توابع map و filter توابع سطح بالایی هستند که خیلی پر کاربرد هستند و بر روی لیست ها (یا اشیا iterable) اعمال می شوند.
تابع map یک تابع و یک iterable را به عنوان ورودی می گیرد، تابع اعمالی را بر روی مقادیر iterable اعمال می کند و یک iterable جدید را به عنوان خروجی می دهد.
ایتریبل ها (iterable) مجموعه ای از اشیا هستند که اعضای خود را یکی یکی ارایه دهند.
def add_five(x) :
return x+5
nums = [11, 22, 33, 44, 55]
result = list(map(add_five, nums))
print(result)
خروجی :
>>>
[16, 27, 38, 49, 60]
>>>
📌ما با استفاده از تابع lambda می توانستیم به راحتی به این خروجی دست پیدا کنیم.
Nums = [11, 22, 33, 44, 55]
Result = list(map(lambda x: x+5, nums))
Print(result)
💡برای اینکه خروجی را به لیست تبدیل کنیم باید از عبارت list استفاده کنیم.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
توابع map و filter توابع سطح بالایی هستند که خیلی پر کاربرد هستند و بر روی لیست ها (یا اشیا iterable) اعمال می شوند.
تابع map یک تابع و یک iterable را به عنوان ورودی می گیرد، تابع اعمالی را بر روی مقادیر iterable اعمال می کند و یک iterable جدید را به عنوان خروجی می دهد.
ایتریبل ها (iterable) مجموعه ای از اشیا هستند که اعضای خود را یکی یکی ارایه دهند.
def add_five(x) :
return x+5
nums = [11, 22, 33, 44, 55]
result = list(map(add_five, nums))
print(result)
خروجی :
>>>
[16, 27, 38, 49, 60]
>>>
📌ما با استفاده از تابع lambda می توانستیم به راحتی به این خروجی دست پیدا کنیم.
Nums = [11, 22, 33, 44, 55]
Result = list(map(lambda x: x+5, nums))
Print(result)
💡برای اینکه خروجی را به لیست تبدیل کنیم باید از عبارت list استفاده کنیم.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️ تست 134 : جای خالی زیر را طوری پر کنید که هر یک از اعضای لیست را 2 برابر کند با استفاده از تابع lambda.
nums = [11, 22, 33]
a = list(map( ... x : ... , ... ))
1️⃣: func - nums - x**2
▫ ️0%(0)
2️⃣: lambda - list - x*2
▫ ️0%(0)
3️⃣: lambda - x*2 - nums
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(33)
👥: 33شرکت در نظر سنجی
nums = [11, 22, 33]
a = list(map( ... x : ... , ... ))
1️⃣: func - nums - x**2
▫ ️0%(0)
2️⃣: lambda - list - x*2
▫ ️0%(0)
3️⃣: lambda - x*2 - nums
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||||100%(33)
👥: 33شرکت در نظر سنجی
✍️Filter
تابع filter، مجموعه ی iterable ها را فیلتر میکند و آن هایی که با شرط مورد نیاز ما جور نیستند را حذف می کند.
Nums = [11, 22, 33, 44, 55]
Res = list(filter(lambda x : x%2 == 0, nums))
Print(res)
خروجی :
>>>
[22, 44]
>>>
💡در اینجا هم مانند تابع map احتیاج داریم که برای تبدیل خروجی به لیست از list استفاده کنیم.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تابع filter، مجموعه ی iterable ها را فیلتر میکند و آن هایی که با شرط مورد نیاز ما جور نیستند را حذف می کند.
Nums = [11, 22, 33, 44, 55]
Res = list(filter(lambda x : x%2 == 0, nums))
Print(res)
خروجی :
>>>
[22, 44]
>>>
💡در اینجا هم مانند تابع map احتیاج داریم که برای تبدیل خروجی به لیست از list استفاده کنیم.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️تست 135 : جای خالی را طوری پر کنید که اعداد کمتر از 5 را از لیست خارج کند.
nums = [1,2,5,8,3,0,7]
res = list( ... (lambda x :x ... 5, ...)) print(res)
nums = [1,2,5,8,3,0,7]
res = list( ... (lambda x :x ... 5, ...)) print(res)
Anonymous Poll
3%
map - < - filter
22%
filter - > - nums
0%
filter - < - map
75%
filter - < - nums
✍️تولید کننده ها (generators)
تولید کننده ها (generators) یک نوعی از iterable ها هستند مانند لیست ها و tupleها.
برخلاف لیست ها، نمی توانیم آن را اندیس دهی کنیم. اما می توانیم روی اعضای آن به صورت تکرار شونده با استفاده از loop اعمالی را انجام دهیم. generator ها می توانند توسط توایع و یا عبارت yield ساخته شوند.
def countdown():
i= 5
while I > 0 :
yield i
I -=1
For I in countdown():
Print(i)
خروجی :
>>>
5
4
3
2
1
⚠️عبارت yield برای تعریف یک generator استفاده می شود و می تواند جایگزین خروجی تابعی شود و برای فراخوانی کننده اش بدون اینکه نیاز باشد متغیر های محلی اش را از بین ببرد، خروجی تولید کند.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
تولید کننده ها (generators) یک نوعی از iterable ها هستند مانند لیست ها و tupleها.
برخلاف لیست ها، نمی توانیم آن را اندیس دهی کنیم. اما می توانیم روی اعضای آن به صورت تکرار شونده با استفاده از loop اعمالی را انجام دهیم. generator ها می توانند توسط توایع و یا عبارت yield ساخته شوند.
def countdown():
i= 5
while I > 0 :
yield i
I -=1
For I in countdown():
Print(i)
خروجی :
>>>
5
4
3
2
1
⚠️عبارت yield برای تعریف یک generator استفاده می شود و می تواند جایگزین خروجی تابعی شود و برای فراخوانی کننده اش بدون اینکه نیاز باشد متغیر های محلی اش را از بین ببرد، خروجی تولید کند.
❓بعد مطالعه متن فوق به سوال زیر لطفا پاسخ بدهید:
🗂 مرکز آموزش پایتون
➖➖➖➖➖
🆔 : @pythonchallenge
⁉️ تست 136 : چه عبارتی در توابع استفاده می شود تا تبدیل به generator ها شوند؟
1️⃣: yield
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||97%(36)
2️⃣: generate
▫ ️0%(0)
3️⃣: return
▫ ️|3%(1)
👥: 37شرکت در نظر سنجی
1️⃣: yield
▫ ️||||||||||||||||||||||||||||||||||||||||||||||||97%(36)
2️⃣: generate
▫ ️0%(0)
3️⃣: return
▫ ️|3%(1)
👥: 37شرکت در نظر سنجی