পাইথনে এটি তেমন কাজ করে না। পাইথন বস্তুর রেফারেন্স পাস করে। আপনার ক্রিয়াকলাপের ভিতরে আপনার একটি অবজেক্ট রয়েছে - আপনি সেই বস্তুকে (যদি সম্ভব হয়) রূপান্তর করতে পারেন। যাইহোক, পূর্ণসংখ্যা অপরিবর্তনীয় । একটি কর্মক্ষেত্র হ'ল একটি পাত্রে পূর্ণসংখ্যা পাস করা যা পরিবর্তিত হতে পারে:
def change(x):
x[0] = 3
x = [1]
change(x)
print x
এটি সর্বোপরি কুৎসিত / আনাড়ি, তবে আপনি পাইথনে আরও ভাল কিছু করতে যাচ্ছেন না। কারণটি পাইথনে, অ্যাসাইনমেন্ট ( =
) ডান হাতের ফলাফল হিসাবে যা কিছু বস্তু গ্রহণ করে এবং এটি বাম দিকে যা থাকে তার সাথে আবদ্ধ করে * (বা এটি উপযুক্ত ফাংশনে পাস করে)।
এটি বুঝতে পেরে আমরা দেখতে পাচ্ছি যে কেন কোনও ফাংশনের অভ্যন্তরে স্থাবর বস্তুর মান পরিবর্তন করার কোনও উপায় নেই - আপনি তার কোনও বৈশিষ্ট্য পরিবর্তন করতে পারবেন না কারণ এটি অপরিবর্তনীয়, এবং আপনি কেবল "পরিবর্তনশীল" কে একটি নতুন নির্ধারণ করতে পারবেন না মান হ'ল কারণ তখন আপনি প্রকৃতপক্ষে একটি নতুন অবজেক্ট তৈরি করছেন (যা পুরানোটির থেকে পৃথক) এবং নামটি দিয়ে যা স্থানীয় নেমস্পেসে পুরানো অবজেক্টটি ছিল।
সাধারণত কর্মক্ষেত্রটি হ'ল আপনি যে জিনিসটি চান তা কেবল ফিরিয়ে দেওয়া :
def multiply_by_2(x):
return 2*x
x = 1
x = multiply_by_2(x)
* উপরের প্রথম উদাহরণের ক্ষেত্রে, 3
আসলে পাস হয়ে যায় x.__setitem__
।