পাইথন ভাষার সব প্যারামিটার (আর্গুমেন্ট) পাস বাই রেফারেন্স। এর মানে ফাংশনের ভিতরে একটি প্যারামিটার যা রেফার করে সেটি পরিবর্তন করলে কলিং ফাংশনটিও প্রতিফলিত হয়।
উদাহরণ
#!/usr/bin/python
def changeme(mylist):
"This changes a passed list into this function"
mylist.append([1,2,3,4])
print "Values inside the function: ", mylist
return
mylist = [10,20,30]
changeme(mylist)
print "Values outside the function: ", mylist
আউটপুট
এখানে পাস করা অবজেক্টের রেফারেন্স মেইনটেইন করা হচ্ছে এবং একই অবজেক্টে ভ্যালু অ্যাপেন্ড হচ্ছে। ফলাফল:
Values inside the function: [10, 20, 30, [1, 2, 3, 4]] Values outside the function: [10, 20, 30, [1, 2, 3, 4]]
আরেক উদাহরণ যেখানে আর্গুমেন্ট রেফারেন্স দ্বারা পাস হচ্ছে কিন্তু কলড ফাংশনের ভিতরে রেফারেন্স ওভাররাইট হচ্ছে।
উদাহরণ
#!/usr/bin/python
def changeme(mylist):
"This changes a passed list into this function"
mylist = [1,2,3,4] # এখানে mylist-এ নতুন রেফারেন্স অ্যাসাইন
print "Values inside the function: ", mylist
return
mylist = [10,20,30]
changeme(mylist)
print "Values outside the function: ", mylist
আউটপুট
প্যারামিটার mylist changeme ফাংশনের লোকাল। ফাংশনের ভিতরে mylist পরিবর্তন করলে বাইরের mylist-এ প্রভাব পড়ে না। ফাংশনটি কিছুই সম্পন্ন করে না এবং ফলাফল:
Values inside the function: [1, 2, 3, 4] Values outside the function: [10, 20, 30]