روز 30 – انواع استدلال در پایتون

انواع استدلال ها:
استدلال های موقعیتی:
مقادیر به ترتیب منتقل شده به پارامترها اختصاص می یابد.
def display(first_name, last_name):
print("Welcome", first_name, last_name)
display("Lakshmi", "Pritha")
Welcome Lakshmi Pritha
def find_total(l):
total = 0
for num in l:
total+=num
print(total)
marks = [90,56, 78]
find_total(marks)
224
آرگومان های متغیر طول:
آرگومان های طول متغیر همچنین به عنوان آرگومان های دلخواه خوانده می شوند.
روش/عملکرد مشابه با تعداد مختلف آرگومان یا با انواع مختلف آرگومان.
بعضی اوقات ما نمی دانیم که چند استدلال به یک عملکرد منتقل می شود. پایتون راه هایی برای رسیدگی به این کار با * فراهم می کند
def find_total(*l):
total = 0
for num in l:
total+=num
print(total)
mark1 = 100
mark2 = 90
mark3 = 87
find_total(mark1, mark2,mark3)
find_total(45,54)
find_total()
277
99
0
استدلال های کلمه کلیدی:
آرگومان های کلیدی با مشخص کردن نام پارامتر به دنبال آن یک علامت برابر (=) و مقدار مورد نظر برای آن.
def display(*marks,name):
print('Welcome', name)
print(marks)
display(90,80,name="Lakshmi")
display(80,name="pritha")
Welcome Lakshmi
(90, 80)
Welcome pritha
(80,)
استدلال های پیش فرض:
آرگومان های پیش فرض پارامترهایی هستند که مقادیر پیش فرض دارند. اگر آرگومان هنگام فراخوانی تابع تصویب نشود ، از مقدار پیش فرض استفاده می شود.
def login(username, password="admin"):
print(username, password)
login("abcd", "abcd")
login("pqrs")
abcd abcd
pqrs admin
آرگومان های متغیر متغیر کلمه کلیدی:
آرگومان های با طول متغیر کلمه کلیدی به شما امکان می دهد تعداد متغیر آرگومان های کلمه کلیدی را به یک تابع منتقل کنید.
def login(**args):
print(args)
login(name="raja")
{'name': 'raja'}
def login(**args):
print(args)
login(name="raja", age=25, city='madurai')
{'name': 'raja', 'age': 25, 'city': 'madurai'}
def modify(l):
l.append(100)
print(f'Inside modify, {l}')
l = [10,20,30]
print(f'Outside modify {l}')
modify(l)
print(f'Outside modify2 {l}')
Outside modify [10, 20, 30]
Inside modify, [10, 20, 30, 100]
Outside modify2 [10, 20, 30, 100]
فقط کلمات کلیدی:
آرگومان های فقط کلمه کلیدی هنگام فراخوانی عملکرد باید با نام مشخص شوند.
از نماد * در امضای عملکرد استفاده می شود تا نشان دهد آرگومان های بعدی فقط کلمات کلیدی هستند.
def add(*, no1, no2):
return no1+no2
print(add(10,20)) # It returns error
print(add(no1=100,no2=200)) #output:300
فرهنگ لغت بازگشت عملکرد:
در پایتون ، تابعی که یک فرهنگ لغت را باز می گرداند به این معنی است که عملکرد یک شیء فرهنگ لغت را ایجاد و برمی گرداند.
تابع zip () دو لیست را با عناصر عاقلانه ترکیب می کند ، و DICT () جفت های حاصل را به یک فرهنگ لغت تبدیل می کند.
def display(player_names, scores):
return dict(zip(player_names, scores))
player_names = ['virat', 'rohit']
scores = [100,105]
result = display(player_names, scores)
print(result)
{'virat': 100, 'rohit': 105}
آرگومان های پیش فرض قابل تغییر:
هنگامی که از یک لیست یا فرهنگ لغت به عنوان یک آرگومان پیش فرض استفاده می کنید ، فقط یک بار شروع می شود. اگر آرگومان در حین فراخوانی عملکرد اصلاح شود ، تغییرات در تماس های آینده ادامه می یابد.
def add(no, l=[]):
l.append(no)
return l
print(add(10))
print(add(20))
[10]
[10, 20]
def add(no, l=None):
l.append(no)
return l
print(add(10))
print(add(20))
AttributeError: 'NoneType' object has no attribute 'append'
def add(no, l=None):
l = []
l.append(no)
return l
print(add(10))
print(add(20))
[10]
[20]
انواع متغیرها:
متغیر جهانی:
توابع خارجی تعریف شده: متغیرهای جهانی معمولاً در خارج از کلیه توابع ، در سطح بالای کد اعلام می شوند.
no = 10
def f1():
print(no)
def f2():
print(no)
f1()
f2()
10
10
متغیر محلی:
متغیرهای محلی در داخل توابع یا بلوک کد اعلام می شوند.
no = 10
def f1():
no2 = 100
print(no)
print(no2)
f1()
10
100
اگر متغیر محلی و جهانی می تواند یک مقدار یکسان داشته باشد به معنای تقدم به متغیر محلی است.
amount = 10000
def shopping():
amount = 1000
print(amount)
shopping()
1000
کلمه کلیدی جهانی به شما امکان می دهد مقدار متغیر جهانی را در داخل عملکرد تغییر دهید.
amount = 10000
def shopping():
global amount
print("Total Amount for Trip is",amount)
amount = 1000
print("Shopping Amount",amount)
shopping()
Total Amount for Trip is 10000
Shopping Amount 1000
توابع داخلی:
توابع داخلی توابعی هستند که در داخل توابع دیگر تعریف شده اند.
آنها می توانند از عملکرد بیرونی خود به متغیرها دسترسی پیدا کنند.
def open_fridge():
capacity = 165
print("opening fridge", capacity)
def take_water():
capacity = 1
print("Drink Water", capacity)
take_water()
open_fridge()
opening fridge 165
Drink Water 1
def open_fridge():
capacity = 165
print("opening fridge", capacity)
def take_water():
print("Drink Water", capacity)
take_water()
open_fridge()
opening fridge 165
Drink Water 165
def open_tank():
tank = 2
print(f'Inside open_tank {tank}')
def fill_petrol():
nonlocal tank # Refers to the variable 'tank' from the enclosing scope
tank = tank + 3
print(f'Inside fill_petrol {tank}')
fill_petrol()
open_tank()
Inside open_tank 2
Inside fill_petrol 5