آرگومان تابع در برنامه نویسی پایتون

4 سال پیش

آرگومان تابع در برنامه نویسی پایتون

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، آرگومان تابع در برنامه نویسی پایتون (function-argument) را فرا می گیرید و می توانید تابعی را تعریف کنید که تعداد متغیر آرگومان ها را بگیرد. در این مقاله، شما می آموزید که چنین توابع را با استفاده از استدلال های پیش فرض، کلیدواژه و دلخواه تعریف کنید.

پیشنهاد ویژه : پکیج آموزش پایتون

آرگومان تابع در پایتون

در مبحث تابع تعریف شده توسط کاربر، در مورد تعریف یک تابع و فراخوانی آن یاد گرفتیم. یک تابع ابتدا باید تعریف و سپس، فراخوانی شود. در غیر این صورت،  منجر به خطا می شود. به عنوان مثال.

def greet(name, msg):
    """This function greets to
    the person with the provided message"""
    print("Hello", name + ', ' + msg)

greet("Monica", "Good morning!"

 

خروجی

Hello Monica, Good morning!

 

در اینجا ، تابع ()greet دو پارامتر دارد.

از آنجا که ما این تابع را با دو آرگومان فراخوانی کرده ایم، به راحتی اجرا می شود و هیچ خطایی نداریم.

اگر آن را با تعداد دیگری از آرگومان ها فراخوانی کنیم، مفسر پیام خطایی را نشان می دهد. در زیر فراخوانی این تابع با یک و یا بدون آرگومان به همراه پیام های خطای مربوطه وجود دارد.

>>> greet("Monica")    # only one argument
TypeError: greet() missing 1 required positional argument: 'msg'

 

>>> greet()    # no arguments
TypeError: greet() missing 2 required positional arguments: 'name' and 'msg'

 

 

آرگومان ‌های متغیر تابع در پایتون

تاکنون، توابع تعداد مشخصی از آرگومان ها داشتند. در پایتون ، روشهای دیگری برای تعریف یک تابع وجود دارد که می تواند تعداد متغیر آرگومان را بگیرد.

در زیر سه شکل مختلف از این نوع شرح داده شده است.

 

آرگومان های پیش فرض در پایتون

آرگومان های تابع می توانند مقادیر پیش فرض در پایتون داشته باشند.

با استفاده از عملگر تخصیص (=) می توانیم مقدار پیش فرض آرگومان را ارائه دهیم. به عنوان مثال.

def greet(name, msg="Good morning!"):
    """
    This function greets to
    the person with the
    provided message.

    If the message is not provided,
    it defaults to "Good
    morning!"
    """

    print("Hello", name + ', ' + msg)


greet("Kate")
greet("Bruce", "How do you do?")

 

خروجی

Hello Kate, Good morning!
Hello Bruce, How do you do?

 

در این تابع پارامتر name مقدار پیش فرض ندارد و در هنگام فراخوانی مورد نیاز است (اجباری).

از طرف دیگر ، پارامتر msg مقدار پیش فرض Good morning را دارد. بنابراین، هنگام فذاخوانی اختیاری است. اگر مقداری ارائه شود، مقدار پیش فرض را بازنویسی می کند.

هر تعداد آرگومان در یک تابع می تواند یک مقدار پیش فرض داشته باشد. اما وقتی آرگومان پیش فرض گرفتیم، تمام آرگومان های سمت راست آن نیز باید مقادیر پیش فرض داشته باشند.

این بدان معناست که بگوییم، آرگومانهای غیر پیش فرض نمی توانند آرگومانهای پیش فرض را دنبال کنند. به عنوان مثال، اگر هدر تابع را در بالا تعریف کرده بودیم:

def greet(msg = "Good morning!", name):

 

با خطای زیر مواجه خواهیم شد:

SyntaxError: non-default argument follows default argument

 

آرگومان های کلیدواژه در پایتون

وقتی تابعی را با مقادیری فراخوانی می کنیم، این مقادیر با توجه به موقعیت آنها به آرگومان ها اختصاص می یابند.

به عنوان مثال، در تابع ()greet، هنگامی که ما آن را به عنوان greet(“Bruce”, “How do you do?”) فراخوانی می کنیم ، مقدار “Bruce” به نام آرگومان اختصاص می یابد و به طور مشابه “How do you do?” ” به msg.

پایتون اجازه می دهد تا توابع با استفاده از آرگومان های کلیدواژه فراخوانی شوند. وقتی توابع را از این طریق فراخوانی می کنیم، می توان ترتیب (موقعیت) آرگومان ها را تغییر داد. فراخوانی های زیر به عملکرد فوق همه معتبر هستند و نتیجه یکسانی دارند.

# ۲ keyword arguments
greet(name = "Bruce",msg = "How do you do?")

# ۲ keyword arguments (out of order)
greet(msg = "How do you do?",name = "Bruce") 

۱ positional, 1 keyword argument
greet("Bruce", msg = "How do you do?")

 

همانطور که می بینیم، می توانیم آرگومان های موقعیتی را با آرگومان های کلمه کلیدی در هنگام فراخوانی تابع ترکیب کنیم. اما باید توجه داشته باشیم که استدلال های کلیدواژه باید از استدلال های موضعی پیروی کنند.

داشتن یک استدلال موضعی بعد از استدلال های کلیدواژه منجر به خطا خواهد شد. به عنوان مثال ، فراخوانی عملکرد به شرح زیر است:

greet(name="Bruce","How do you do?")

 

منجر به خطا خواهد شد:

SyntaxError: non-keyword arg after keyword arg

 

آرگومان‌ های دلخواه در پایتون

بعضی اوقات، ما از تعداد آرگومان هایی که به یک تابع منتقل می شوند را نمی دانیم. پایتون به ما اجازه می دهد تا از طریق فراخوانی تابع با تعداد دلخواه آرگومان ها، این  وضعیت را مدیریت کنیم.

در تعریف تابع، ما از علامت ستاره (*) قبل از نام پارامتر برای نشان دادن این نوع آرگومان استفاده می کنیم. به عنوان مثال.

def greet(*names):
    """This function greets all
    the person in the names tuple."""

    # names is a tuple with arguments
    for name in names:
        print("Hello", name)


greet("Monica", "Luke", "Steve", "John")

 

خروجی

Hello Monica
Hello Luke
Hello Steve
Hello John

 

در اینجا ، ما تابع را با چندین آرگومان فراخوانی کرده ایم. این آرگومان ها قبل از اینکه به تابع منتقل شوند، به یک تاپل پیچیده می شوند. در داخل تابع ، ما از یک حلقه for برای بازیابی تمام آرگومان ها استفاده می کنیم.

منبع.

لیست جلسات قبل آموزش برنامه نویسی پایتون

  1. آموزش نصب و اجرای برنامه نویسی پایتون
  2. کلیدواژه ها و شناسه های برنامه نویسی پایتون
  3. دستورات، تورفتگی ها و کامنت ها در برنامه نویسی پایتون
  4. متغیرها، ثابت ها و لیترال ها در برنامه نویسی پایتون 
  5. انواع داده ها در برنامه نویسی پایتون
  6. تبدیل نوع در برنامه نویسی پایتون
  7. ورودی، خروجی و وارد کردن در برنامه نویسی پایتون
  8. عملگرها در برنامه نویسی پایتون
  9. نام و دامنه در برنامه نویسی پایتون
  10. دستور شرطی if…else در برنامه نویسی پایتون
  11. حلقه for در برنامه نویسی پایتون
  12. حلقه while در برنامه نویسی پایتون
  13. دستورات break و continue در برنامه نویسی پایتون
  14. دستور pass در برنامه نویسی پایتون
  15. توابع در برنامه نویسی پایتون
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه