পাইথন একটি মেকানিজম ব্যবহার করে যাকে "Call-by-Object" বলা হয়, এটিকে কখনো "Call by Object Reference" বা "Call by Sharing" ও বলা হয়।
যদি আপনি ইমিউটেবল আর্গুমেন্ট যেমন ইন্টিজার, স্ট্রিং বা টাপল ফাংশনে পাস করেন, তবে এটি Call-by-value-এর মতো আচরণ করে। কিন্তু মিউটেবল আর্গুমেন্ট পাস করলে বিষয়টি আলাদা।
পাইথন ভাষার সব প্যারামিটার (আর্গুমেন্ট) পাস-বাই-রেফারেন্স হয়। অর্থাৎ ফাংশনের ভিতরে প্যারামিটার কী রেফার করছে সেটা পরিবর্তন করলে কলিং ফাংশনেও পরিবর্তনটি প্রতিফলিত হয়।
উদাহরণ
student = {'Archana': 28, 'krishna': 25, 'Ramesh': 32, 'vineeth': 25}
def test(student):
new = {'alok': 30, 'Nevadan': 28}
student.update(new)
print("Inside the function", student)
return
test(student)
print("outside the function:", student)
আউটপুট
Inside the function {'Archana': 28, 'krishna': 25, 'Ramesh': 32, 'vineeth': 25, 'alok': 30, 'Nevadan': 28}
outside the function: {'Archana': 28, 'krishna': 25, 'Ramesh': 32, 'vineeth': 25, 'alok': 30, 'Nevadan': 28}