পাইথনে ফাংশন আর্গামেন্টগুলো সবসময় রেফারেন্স দিয়ে পাস হয়। এটি id() ফাংশন দিয়ে যাচাই করা যায় — ফাংশনের ভেতর ও বাইরে একই অবজেক্টের আইডি পাওয়া যায়।
উদাহরণ
def foo(x):
print("id of received argument", id(x))
x.append("20")
return x
a = ["10"]
print("id of argument before calling function", id(a))
b = foo(a)
print("id of returned object", id(b))
print(b)
print(a)
আউটপুট
id of argument before calling function 1475589299912 id of received argument 1475589299912 id of returned object 1475589299912 ['10', '20'] ['10', '20']
ব্যাখ্যা
a,x(ফাংশনের ভেতর), এবংb(রিটার্ন করা মান) — তিনটিরid()একই।- অর্থাৎ, ফাংশনটি মূল লিস্ট অবজেক্টটিই মডিফাই করেছে।
- এটি কল-বাই-অবজেক্ট-রেফারেন্স (Call by Object Reference) মডেল — ইমিউটেবল অবজেক্টের ক্ষেত্রে এটি কল-বাই-ভ্যালুর মত কাজ করে, কিন্তু মিউটেবল অবজেক্টের ক্ষেত্রে পরিবর্তন রিফলেক্ট হয়।