আপনি যদি সি / জাভা / ইত্যাদির কোনও ভাষা থেকে পাইথনে আসছেন। পরিবার, এটি আপনাকে a
"ভেরিয়েবল" হিসাবে চিন্তাভাবনা বন্ধ করতে এবং এটি একটি "নাম" হিসাবে ভাবতে শুরু করতে সহায়তা করতে পারে ।
a
, b
এবং c
সমান মান সহ বিভিন্ন ভেরিয়েবল নয়; তারা একই অভিন্ন মানের জন্য বিভিন্ন নাম। চলকগুলির মধ্যে প্রকার, পরিচয়, ঠিকানা এবং সমস্ত ধরণের স্টাফ রয়েছে।
নামগুলির মধ্যে একটিও নেই। মানগুলি অবশ্যই করে এবং আপনার একই মানের জন্য প্রচুর নাম থাকতে পারে।
আপনি যদি Notorious B.I.G.
একটি গরম কুকুর দেন, * Biggie Smalls
এবং Chris Wallace
একটি গরম কুকুর আছে। আপনি প্রথম উপাদান পরিবর্তন করেন তাহলে a
1 থেকে, প্রথম উপাদান b
এবং c
1 হয়।
যদি আপনি জানতে চান যে দুটি নাম একই জিনিসটির নামকরণ করছে কিনা, is
অপারেটরটি ব্যবহার করুন :
>>> a=b=c=[0,3,5]
>>> a is b
True
আপনি তারপর জিজ্ঞাসা:
এর থেকে আলাদা কী?
d=e=f=3
e=4
print('f:',f)
print('e:',e)
এখানে, আপনি নাম rebinding করছি e
মান 4
। এটি নামগুলিকে d
এবং কোনওভাবে প্রভাবিত করে না f
।
আপনার পূর্ববর্তী সংস্করণে, আপনি বরাদ্দ করেছিলেন a[0]
, না a
। সুতরাং, দৃষ্টিকোণ থেকে a[0]
, আপনি রিমন্ডিং করছি a[0]
, কিন্তু দৃষ্টিকোণ থেকে a
, আপনি এটি জায়গায় জায়গায় পরিবর্তন করছেন।
আপনি কোনও id
ফাংশনটি ব্যবহার করতে পারেন , যা আপনাকে কোনও অবজেক্টের পরিচয় উপস্থাপনের জন্য কিছু অনন্য নম্বর দেয়, ঠিক কোন বস্তুটি কোনটি যা is
সহায়তা করতে পারে না তা দেখার জন্য:
>>> a=b=c=[0,3,5]
>>> id(a)
4473392520
>>> id(b)
4473392520
>>> id(a[0])
4297261120
>>> id(b[0])
4297261120
>>> a[0] = 1
>>> id(a)
4473392520
>>> id(b)
4473392520
>>> id(a[0])
4297261216
>>> id(b[0])
4297261216
লক্ষ্য করুন যে a[0]
4297261120 থেকে 4297261216 এ পরিবর্তিত হয়েছে - এটি এখন ভিন্ন মানের একটি নাম। এবং b[0]
এখন একই নতুন মান জন্য একটি নাম। এটি কারণ a
এবং b
এখনও একই জিনিসটির নামকরণ করা হচ্ছে।
কভারগুলির নীচে, a[0]=1
আসলে তালিকার অবজেক্টে একটি পদ্ধতি কল করে। (এটি এর সমতুল্য a.__setitem__(0, 1)
।) সুতরাং, এটি আসলে কিছুতেই রিব্যান্ডিং নয়। এটি কল করার মতো my_object.set_something(1)
। অবশ্যই, সম্ভবত এই পদ্ধতিটি বাস্তবায়নের জন্য বস্তুটি কোনও উদাহরণের বৈশিষ্ট্যটি রিমান্ড করছে, তবে এটি গুরুত্বপূর্ণ নয়; গুরুত্বপূর্ণটি হ'ল আপনি কোনও কিছু বরাদ্দ দিচ্ছেন না, আপনি কেবলমাত্র বস্তুকে পরিবর্তন করছেন। এবং এটি একই a[0]=1
।
user570826 জিজ্ঞাসা করেছে:
আমাদের যদি হয়, a = b = c = 10
ঠিক ঠিক একই অবস্থা a = b = c = [1, 2, 3]
: আপনার একই মানের তিনটি নাম রয়েছে।
তবে এই ক্ষেত্রে মানটি একটি int
এবং int
অপরিবর্তনীয়। উভয় ক্ষেত্রেই, আপনি a
আলাদা মানটিতে (যেমন, a = "Now I'm a string!"
) ফেরত দিতে পারেন , তবে এটি মূল মানটিকে প্রভাবিত করবে না, যা এর জন্য b
এবং c
এখনও এর নাম থাকবে। পার্থক্য হচ্ছে একটি তালিকা সঙ্গে, আপনি মান পরিবর্তন করতে পারেন [1, 2, 3]
মধ্যে [1, 2, 3, 4]
করে, যেমন, a.append(4)
; যেহেতু যে আসলে মান পরিবর্তন b
এবং c
জন্য নাম হয়, b
এখন b হবে [1, 2, 3, 4]
। 10
আর কোনও কিছুতে মান পরিবর্তন করার কোনও উপায় নেই। 10
চিরদিনের জন্য 10, ক্লোদিয়ার মতো ভ্যাম্পায়ার চিরকাল 5 টি (অন্তত তিনি কিরস্টন ডানস্টের পরিবর্তে)।
* সতর্কতা: কুখ্যাত বিগকে কোনও গরম কুকুর দেবেন না। গ্যাংস্টা র্যাপ জম্বিগুলি কখনই মধ্যরাতের পরে খাওয়ানো উচিত নয়।
a
,b
এবং,c,
একই মান সব পয়েন্ট (এই ক্ষেত্রে একটি তালিকা), অথবা চাওa=0
,b=3
এবং,c=5
। সেক্ষেত্রে, আপনি চানa,b,c = [0,3,5]
বা শুধুa,b,c = 0,3,5
।