পাইথন স্ট্রিং পদ্ধতিটি কল করে কেন আপনি যদি তার আউটপুট বরাদ্দ না করেন?


136

আমি একটি সাধারণ স্ট্রিং প্রতিস্থাপন করার চেষ্টা করি, তবে কেন এটি কাজ করছে বলে মনে হয় না:

X = "hello world"
X.replace("hello", "goodbye")

আমি শব্দ পরিবর্তন করতে চান helloকরতে goodbye, এভাবেই স্ট্রিং পরিবর্তন করা উচিত "hello world"কাছে "goodbye world"। তবে এক্স মাত্র রয়ে গেছে "hello world"। আমার কোড কেন কাজ করছে না?

উত্তর:


232

এটি কারণ পাইথনগুলিতে স্ট্রিংগুলি অপরিবর্তনীয়

যার মানে X.replace("hello","goodbye")ফেরৎ একটি কপি Xতৈরি প্রতিস্থাপন সঙ্গে । এজন্য আপনাকে এই লাইনটি প্রতিস্থাপন করতে হবে:

X.replace("hello", "goodbye")

এই লাইন সহ:

X = X.replace("hello", "goodbye")

আরো বিস্তৃতভাবে, এই সব পাইথন স্ট্রিং পদ্ধতি একটি স্ট্রিং বিষয়বস্তু "এ জায়গা" কে জন্য সত্য , যেমন replace, strip, translate, lower/ upper, join...

আপনি যদি এটি ব্যবহার করতে চান এবং এড়াতে না চান তবে আপনাকে অবশ্যই তাদের আউটপুট কোনও কিছুতে নির্ধারণ করতে হবে eg

X  = X.strip(' \t')
X2 = X.translate(...)
Y  = X.lower()
Z  = X.upper()
A  = X.join(':')
B  = X.capitalize()
C  = X.casefold()

ইত্যাদি।


1
গোঁড়া পয়েন্ট: স্ট্রিং জন্য ভাবে পরিবর্তিত করা যেতে পারে x += 'a'বিশেষ ক্ষেত্রে, যেমন stackoverflow.com/a/40996908/6260170
Chris_Rands

@ ক্রিস_আর্যান্ডস: দেখে মনে হচ্ছে আপনি ঠিক আছেন, তবে বাইরে থেকে এটির সত্যিকারের মিউটেবিলিটি প্রভাব নেই - কিছু বাস্তবায়ন পরীক্ষা করে দেখায় যে এটি সত্যিকার অর্থে ব্যবহৃত হয়েছে কিনা, এবং যদি না হয় (তবে পরিবর্তনের বিষয়টি পরিলক্ষিত হবে না), এটি বাস্তবে রূপান্তরিত হবে। এটা কি সত্যি?
টেডেক

@ টেডেক ভাল আমি মনে করি এটি বাস্তব তবে এটি কেবল একটি সিপথন অপ্টিমাইজেশন এবং এখানে সরাসরি প্রাসঙ্গিক নয় (এজন্য আমি বলেছিলাম যে আমি
পেডেন্টিক ছিলাম

0

সকল স্ট্রিং ফাংশন যেমন lower, upper, stripমূল পরিবর্তন ছাড়া একটি স্ট্রিং ফিরে যেতে হবে। আপনি যদি মনে করেন যে কোনও স্ট্রিং সংশোধন করার চেষ্টা করেন তবে well it is an iterableএটি ব্যর্থ হবে।

x = 'hello'
x[0] = 'i' #'str' object does not support item assignment

স্ট্রিংগুলি অপরিবর্তনীয় হওয়ার গুরুত্ব সম্পর্কে একটি ভাল পঠন রয়েছে: পাইথন স্ট্রিংগুলি অপরিবর্তনীয় কেন? এগুলি ব্যবহারের জন্য সেরা অনুশীলন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.