آموزش پایتون - آرگومانهای فقط موقعیتی
آرگومانهای فقط موقعیتی
در پایتون امکان تعریف تابعی وجود دارد که یک یا چند آرگومان آن نمیتوانند مقدار خود را از طریق کلمات کلیدی دریافت کنند. به اینگونه آرگومانها آرگومانهای فقط موقعیتی (positional-only arguments) گفته میشود.
برای تبدیل یک آرگومان به حالت «فقط موقعیتی»، از علامت اسلش (/) استفاده کنید. تمام آرگومانهای قبل از این علامت، به عنوان آرگومانهای فقط موقعیتی در نظر گرفته میشوند.
تابع توکار ()input در پایتون نمونهای از آرگومانهای فقط موقعیتی است. سینتکس تابع input به این صورت است −
input(prompt = "")
پارامتر Prompt یک رشته توضیحی برای راهنمایی کاربر است. با این حال، شما نمیتوانید از کلمه کلیدی prompt در داخل پرانتز استفاده کنید.
مثال
در این مثال، ما از کلمه کلیدی prompt استفاده میکنیم که منجر به خطا میشود.
name = input(prompt="Enter your name ")
هنگام اجرا، این کد پیام خطای زیر را نشان میدهد −
name = input (prompt="Enter your name ")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: input() takes no keyword arguments
مثالهای آرگومانهای فقط موقعیتی
بیاورید با کمک چند مثال، آرگومانهای فقط موقعیتی را بهتر درک کنیم −
مثال ۱
در این مثال، با قرار دادن "/" در انتهای پارامترها، هر دو آرگومان تابع ()intr را به صورت فقط موقعیتی تعریف میکنیم.
def intr(amt, rate, /):
val = amt * rate / 100
return val
print(intr(316200, 4))
وقتی کد را اجرا میکنید، نتیجه زیر را نشان میدهد −
12648.0
مثال ۲
اگر تلاش کنیم از آرگومانها به عنوان کلمات کلیدی استفاده کنیم، پایتون همانطور که در مثال زیر نشان داده شده است خطا میدهد.
def intr(amt, rate, /):
val = amt * rate / 100
return val
print(intr(amt=1000, rate=10))
با اجرای این کد، پیام خطای زیر نمایش داده خواهد شد −
interest = intr(amt=1000, rate=10)
^^^^^^^^^^^^^^^^^^^^^^^
TypeError: intr() got some positional-only arguments passed as keyword arguments: 'amt, rate'
مثال ۳
یک تابع میتواند به گونهای تعریف شود که دارای برخی آرگومانهای فقط کلمهکلیدی و برخی آرگومانهای فقط موقعیتی باشد. در اینجا، x یک آرگومان اجباری فقط موقعیتی، y یک آرگومان موقعیتی معمولی، و z یک آرگومان فقط کلمهکلیدی است.
def myfunction(x, /, y, *, z):
print (x, y, z)
myfunction(10, y=20, z=30)
myfunction(10, 20, z=30)
کد بالا خروجی زیر را نشان میدهد −
10 20 30
10 20 30
پیشرفت مطالعه: وضعیت خواندهشدن این درس فقط در همین مرورگر ذخیره میشود؛ بدون نیاز به حساب کاربری.