मुख्य सामग्री पर जाएँ

Python स्ट्रिंग इंटरपोलेशन: शुरुआती के लिए मार्गदर्शिका

Python स्ट्रिंग इंटरपोलेशन, उसका उद्देश्य, और कब उपयोग करें—के बारे में जानें। व्यावहारिक उदाहरण और सर्वोत्तम प्रथाएँ शामिल हैं।
· 10 मि॰ पढ़ें

AI के साथ खोजें

मान लीजिए आप किसी व्यक्ति का नाम और पेशा आउटपुट करना चाहते हैं। आप निम्नानुसार एक साधारण प्रोग्राम लिख सकते हैं।

# Define variables
name = 'Mark'
profession = 'Astronaut'
age = 7


# Output info
output_string = ('My name is ' + name +
                ', I am ' + str(age) + ' years old ' +
                'and my profession is ' + profession + '.')
print(output_string)
   My name is Mark, I am 7 years old and my profession is Astronaut.

यह तरीका संक्षिप्तता और पठनीयता से वंचित है। सौभाग्य से, स्ट्रिंग इंटरपोलेशन बेहतर समाधान देती है। यह वेरिएबल्स, एक्सप्रेशंस, या फ़ंक्शन के आउटपुट को सीधे स्ट्रिंग में डालने की सुविधा देती है, जिससे स्ट्रिंग हैंडलिंग गतिशील हो जाती है और मैनुअल कंकेटनेशन की जरूरत नहीं रहती।

स्ट्रिंग इंटरपोलेशन का उपयोग करते हुए, हम कोड को इस प्रकार लिख सकते हैं।

# Define variables
name = 'Mark'
profession = 'Astronaut'
age = 7


# Output info
output_string = f'My name is {name}, I am {age} years old and my profession is {profession}.'
print(output_string)
   My name is Mark, I am 7 years old and my profession is Astronaut.

स्ट्रिंग इंटरपोलेशन वाले संस्करण में बेतरतीब कंकेटनेशन के बिना, एक्सप्रेशंस को सीधे स्ट्रिंग के अंदर शामिल किया जा सकता है। जैसा कि आप देख सकते हैं, यह तरीका कहीं अधिक साफ-सुथरा है।

Python में बेसिक स्ट्रिंग इंटरपोलेशन

Python में स्ट्रिंग इंटरपोलेशन के कई तरीके उपलब्ध हैं। सबसे सामान्यतः सुझाया गया तरीका formatted string literals है, जिसे f-strings भी कहा जाता है, और ये Python 3.6 से उपलब्ध हैं।

एक और तरीका, जो Python 3.6 से पुराने कोड में अक्सर दिखता है, .format() मेथड है। यद्यपि यह तरीका f-strings की तुलना में अधिक verbose है, कभी-कभी इसके कुछ फायदे भी होते हैं (विवरण नीचे)।

अंततः, आप लेगेसी कोड में %-स्टाइल फॉर्मैटिंग भी देख सकते हैं।

f-strings का उपयोग (Python 3.6+)

f-strings (formatted string literals) Python में स्ट्रिंग को फॉर्मैट करने का शक्तिशाली और संक्षिप्त तरीका हैं। इन्हें Python 3.6 में पेश किया गया था और ये वेरिएबल्स, एक्सप्रेशंस और फ़ंक्शन कॉल्स को सीधे स्ट्रिंग्स में जोड़ने का पठनीय और प्रभावी तरीका देती हैं।

f-string के बेसिक सिंटैक्स का एक साधारण उदाहरण निम्न है।

name = 'Mark'
output_string = f'My name is {name}.'
print(output_string)
   My name is Mark.

इस कोड में, output_string वेरिएबल को एक f-string असाइन की गई है। शुरुआती उद्धरण-चिह्न से पहले लगा f प्रीफिक्स इंगित करता है कि स्ट्रिंग एम्बेडेड एक्सप्रेशंस को सपोर्ट करती है। name वेरिएबल का मूल्य इवाल्यूएट होकर स्ट्रिंग में सम्मिलित हो जाता है, और आउटपुट बनता है: "My name is Mark."

सिर्फ वेरिएबल वैल्यू ही नहीं, बल्कि गणनाएँ या एक्सप्रेशंस भी f-strings में डाले जा सकते हैं। यह उदाहरण देखें।

import math


a = 3.0
b = 4.0


# Use string interpolation for the formula
print(f'The hypotenuse of a triangle with base {a} and side {b} is {math.sqrt(a ** 2 + b ** 2)}.')
   The hypotenuse of a triangle with base 3.0 and side 4.0 is 5.0.

एक्सप्रेशन math.sqrt(a ** 2 + b ** 2) का इवाल्यूएशन सीधे स्ट्रिंग के भीतर होता है, जिससे पहले अलग से मान निकालकर स्ट्रिंग में डालने की आवश्यकता नहीं रहती।

.format() मेथड का उपयोग

f-strings की तरह, .format() मेथड भी स्ट्रिंग में वेरिएबल्स और एक्सप्रेशंस डालने देता है। .format() मेथड का बेसिक सिंटैक्स इस प्रकार है।

name = 'Mark'
output_string = 'My name is {}.'.format(name)
print(output_string)
   My name is Mark.

कर्ली ब्रैकेट्स {} प्लेसहोल्डर का काम करती हैं, जो संकेत देती हैं कि उस स्थान पर किसी वेरिएबल का मान डाला जाएगा। .format() मेथड में दिए गए आर्ग्युमेंट के आधार पर निर्धारित होता है कि प्लेसहोल्डर में कौन-सा मान डाला जाएगा।

Positional arguments

यदि आपको कई वेरिएबल्स के लिए कई प्लेसहोल्डर चाहिएँ तो क्या होगा? यह कोड देखें।

name = 'Mark'
age = 7


# The placeholders are filled in order of the arguments
output_string = 'My name is {} and I am {} years old.'.format(name, age)


print(output_string)
   My name is Mark and I am 7 years old.

इस उदाहरण में दो वेरिएबल्स name और age उपयोग हुए हैं। परिणामस्वरूप, स्ट्रिंग में दो प्लेसहोल्डर हैं, और वेरिएबल्स को उसी क्रम में डाला जाता है जिसमें वे .format() मेथड में दिए गए हैं। इन आर्ग्युमेंट्स को *positional* आर्ग्युमेंट्स कहा जाता है क्योंकि स्ट्रिंग में उनकी जगह मेथड की आर्ग्युमेंट लिस्ट में उनकी पोज़िशन से तय होती है।

इंडेक्स्ड और नेम्ड प्लेसहोल्डर

प्लेसहोल्डर विचार के एक वैरिएशन के रूप में, यह उदाहरण देखें।

name = 'Mark'
age = 7


# Print age twice
output_string = 'My name is {} and I am {} years old. My twin brother is also {} years old.'.format(name, age, age)
print(output_string)
   My name is Mark and I am 7 years old. My twin brother is also 7 years old.

यहाँ, हमने age वेरिएबल के मान का दो बार पुन: उपयोग किया। इस तरह एक ही वेरिएबल को कई बार शामिल करना भद्दा लगता है और पठनीयता घटाता है। क्या .format() से फॉर्मैट की गई स्ट्रिंग में किसी वेरिएबल का पुन: उपयोग बिना दोहराए किया जा सकता है? हाँ, *indexed placeholders* का उपयोग करके।

name = 'Mark'
age = 7


# Use indexed placeholders
output_string = 'My name is {0} and I am {1} years old. My twin brother is also {1} years old.'.format(name, age)
print(output_string)
   My name is Mark and I am 7 years old. My twin brother is also 7 years old.

इस उदाहरण में, हमने कर्ली ब्रैकेट्स के भीतर वेरिएबल्स के क्रम को स्पष्ट रूप से परिभाषित किया है, जो Python के ज़ीरो-बेस्ड इंडेक्सिंग का पालन करता है। साथ ही, हमने इंडेक्स 1 वाले वेरिएबल का पुन: उपयोग किया, उसे दोहराया नहीं।

पोज़िशनल इंडेक्सिंग के विकल्प के रूप में आप नेम्ड आर्ग्युमेंट्स का उपयोग भी कर सकते हैं, जहाँ हर आर्ग्युमेंट को एक नाम दिया जाता है।

print('My name is {name} and I am {age} years old.'.format(name='Mark', age=7))
   My name is Mark and I am 7 years old.

नेम्ड आर्ग्युमेंट का इवाल्यूएशन उसी कर्ली ब्रैकेट्स में होता है जिसमें उसका नाम दिया गया है। नतीजतन, {name} प्लेसहोल्डर को "Mark" मान से बदला जाता है, और {age} प्लेसहोल्डर 30 से बदला जाता है।

% ऑपरेटर का उपयोग

स्ट्रिंग इंटरपोलेशन का अंतिम तरीका % ऑपरेटर है। यह C की printf() कमांड के समान कार्य करता है। इसका उपयोग अब अप्रचलित है और f-strings या .format() के पक्ष में दृढ़ता से हतोत्साहित किया जाता है। यहाँ इसका उल्लेख इसलिए है क्योंकि आप इसे लेगेसी कोडबेस में देख सकते हैं।

% ऑपरेटर का बेसिक फॉर्मैट है: "format string" % values। फॉर्मैट स्ट्रिंग में प्लेसहोल्डर होते हैं, जैसे %s स्ट्रिंग के लिए, जिन्हें मानों से बदला जाता है। उदाहरण के लिए, निम्न उदाहरण "Hello, Mark." प्रिंट करता है

'Hello %s' % 'Mark'
   'Hello Mark'

अन्य सामान्य फॉर्मैट स्पेसिफ़ायर्स निम्न तालिका में दिखाए गए हैं।

Specifier

Meaning

Example

%s

स्ट्रिंग

"Hello %s" % "Alice" → "Hello Alice"

%d

इंटीजर (दशमलव)

"Age: %d" % 25 → "Age: 25"

%f

फ़्लोट (डिफ़ॉल्ट 6 डेसिमल)

"Pi: %f" % 3.14159 → "Pi: 3.141590"

%.nf

फ़्लोट (n दशमलव स्थान)

"%.2f" % 3.14159 → "3.14"

%x

हेक्साडेसिमल (लोअरकेस)

"%x" % 255 → "ff"

%X

हेक्साडेसिमल (अपरकेस)

"%X" % 255 → "FF"

%o

ऑक्टल

"%o" % 255 → "377"

% ऑपरेटर की कई सीमाएँ हैं। एक तो यह f-strings की तुलना में कम पठनीय है। यह कोड देखें।

name = "Alice"
age = 30
height = 5.6


# The % operator is hard to scan
message = "My name is %s, I am %d years old, and my height is %.1f feet." % (name, age, height)
print(message)
   My name is Alice, I am 30 years old, and my height is 5.6 feet.

क्या यह कोड एक नज़र में स्पष्ट है? शायद नहीं। प्लेसहोल्डर और उन्हें भरने वाले वेरिएबल्स के बीच बहुत-सा विज़ुअल पार्सिंग करना पड़ता है। इतना आगे-पीछे स्कैन करना भ्रमित करने वाला हो सकता है।

अब, f-strings का उपयोग करते हुए समकक्ष कोड देखें।

# This is much cleaner
message = f"My name is {name}, I am {age} years old, and my height is {height:.1f} feet."
print(message)
   My name is Alice, I am 30 years old, and my height is 5.6 feet.

न तो स्कैनिंग की जरूरत है, न ही अपारदर्शी फॉर्मैटिंग स्ट्रिंग्स की। कोड साफ़, समझने में आसान और लिखने में सरल है। आप DataCamp के Python Programming skill track के साथ स्पष्ट, अनुकूलित कोड लिखने के अन्य टिप्स सीख सकते हैं। 

एडवांस्ड Python स्ट्रिंग इंटरपोलेशन तकनीकें

अब जब हमने Python स्ट्रिंग इंटरपोलेशन की मूल बातें समझ ली हैं, तो कुछ उन्नत उपयोगों पर नज़र डालें। 

Python मल्टीलाइन स्ट्रिंग इंटरपोलेशन

f-strings का उपयोग मल्टीलाइन कॉन्टेंट के लिए भी किया जा सकता है, जब आप ट्रिपल कोट्स (सिंगल या डबल) के साथ f सिग्निफ़ायर लगाते हैं। टेक्स्ट को कई पंक्तियों में लिखा जा सकता है, और आउटपुट में वही फॉर्मैट ज्यों का त्यों दिखाई देता है।

name = 'Mark'
profession = 'Astronaut'
age = 7


# This is an example of a multiline string
bio = f"""
Name: {name}
Profession: {profession}
Age: {age}
"""
print(bio)
   Name: Mark

   Profession: Astronaut

   Age: 7

 मल्टीलाइन स्ट्रिंग्स .format() मेथड से भी बनाई जा सकती हैं।

name = 'Mark'
profession = 'Astronaut'
age = 7


# This is a multiline string with .format()
bio = """
Name: {}
Profession: {}
Age: {}
""".format(name, profession, age)
print(bio)
   Name: Mark

   Profession: Astronaut

   Age: 7

मल्टीलाइन स्ट्रिंग इंटरपोलेशन के उपयोग मामले

आप मल्टीलाइन स्ट्रिंग इंटरपोलेशन का उपयोग क्यों करना चाहेंगे? इसके कई उपयोग हैं। कुछ उदाहरण:

  • मल्टीलाइन ईमेल या संदेश जनरेट करना
  • लॉगिंग और डीबगिंग
  • डायनामिक रूप से SQL क्वेरी बनाना

मल्टीलाइन ईमेल या संदेश जनरेट करना

मान लें कि आप किसी टेक कॉन्फ़्रेंस के कई आमंत्रितों को एक फॉर्म लेटर भेज रहे हैं।

name = "Alice"
event = "Annual Tech Conference"
date = "March 15, 2025"


email = """Dear {name},


We are pleased to invite you to the {event} taking place on {date}.
We hope you can join us for an exciting experience.


Best regards, 
The Event Team""".format(name=name, event=event, date=date)


print(email)
   Dear Alice,

  

   We are pleased to invite you to the Annual Tech Conference taking place on March 15, 2025.

   We hope you can join us for an exciting experience.

  

   Best regards, 

   The Event Team

f-strings के साथ, फॉर्म लेटर बनाना सरल और प्रभावी है। नाम, इवेंट या तारीख बदलने के लिए, बस वेरिएबल्स में बदलाव करें और स्ट्रिंग अपने-आप अपडेट हो जाती है।

लॉगिंग और डीबगिंग

मल्टीलाइन स्ट्रिंग्स, लॉग्स के लिए एरर मैसेज प्रिंट करने में उपयोगी हैं।

error_code = 404
url = '/missing-page'
timestamp = '2025-02-05 12:30:00'
error_message = 'The requested page could not be found.'


log_message = f"""[ERROR {error_code}]
Time: {timestamp}
URL: {url}


{error_message}"""


print(log_message)
   [ERROR 404]

   Time: 2025-02-05 12:30:00

   URL: /missing-page

 

   The requested page could not be found.

यह तरीका लॉग संदेशों को संरचित रखता है और ठीक से फॉर्मैटेड लॉग्स के साथ डीबगिंग को आसान बनाता है।

डायनामिक रूप से SQL क्वेरी जनरेट करना

SQL क्वेरीज़ को मल्टीलाइन स्ट्रिंग्स का उपयोग करके डायनामिक रूप से बनाया जा सकता है।

table = 'users'
column = 'email'
value = '[email protected]'


query = f"""SELECT *
FROM {table}
WHERE {column} = '{value}';"""


print(query)
   SELECT *

   FROM users

   WHERE email = '[email protected]';

यह तरीका SQL क्वेरीज़ को पठनीय बनाता है और इंडेंटेशन बनाए रखता है। साथ ही, स्ट्रिंग कंकेटनेशन के लिए + का उपयोग करने की आवश्यकता समाप्त हो जाती है।

अन्य उपयोग मामलों में शामिल हैं:

  • फॉर्मैटेड कॉन्ट्रैक्ट लिखना
  • Markdown या $\LaTeX$ दस्तावेज़ बनाना
  • मल्टीलाइन HTML/XML टेम्पलेट्स
  • API प्रतिक्रियाएँ या JSON-जैसा टेक्स्ट जनरेट करना

मल्टीलाइन स्ट्रिंग इंटरपोलेशन के फायदे

जैसा कि हमने देखा, मल्टीलाइन स्ट्रिंग इंटरपोलेशन के कई फायदे हैं।

  • स्ट्रिंग इंटरपोलेशन में \n एस्केप कैरेक्टर की जरूरत बिना फॉर्मैटिंग संरक्षित रहती है। 
  • सिंगल-लाइन फॉर्मैटिंग की तुलना में स्ट्रिंग इंटरपोलेशन पठनीयता बढ़ाती है। 
  • लॉग्स, क्वेरीज़, रिपोर्ट्स जैसे स्ट्रक्चर्ड टेक्स्ट के साथ काम करते समय अव्यवस्था कम होती है। 
  • इंडेंटेशन बिगाड़े बिना डायनामिक टेक्स्ट जनरेट करने देती है। 

संख्याओं और विशेष मानों का फॉर्मैटिंग

f-string में दशमलव स्थानों की संख्या नियंत्रित करने के लिए यह सिंटैक्स उपयोग करें: f'{value:.nf}', जहाँ value फ्लोटिंग-पॉइंट संख्या है, n दशमलव स्थानों की संख्या है, और f (. के बाद वाला) फ्लोट फॉर्मैटिंग को दर्शाता है।

उदाहरण के लिए, निम्न कोड $\pi$ को विभिन्न दशमलव स्थानों तक आउटपुट करता है।

pi = 3.1415926535


print(f'Pi rounded to 2 decimal places: {pi:.2f}')
print(f'Pi rounded to 4 decimal places: {pi:.4f}')
print(f'Pi rounded to 0 decimal places: {pi:.0f}')
   Pi rounded to 2 decimal places: 3.14
   Pi rounded to 4 decimal places: 3.1416
   Pi rounded to 0 decimal places: 3

फॉर्मैटिंग .format() मेथड के साथ भी इसी तरह होती है।

print('Pi rounded to 2 decimal places: {:.2f}'.format(pi))
print('Pi rounded to 4 decimal places: {:.4f}'.format(pi))
print('Pi rounded to 0 decimal places: {:.0f}'.format(pi))
   Pi rounded to 2 decimal places: 3.14
   Pi rounded to 4 decimal places: 3.1416
   Pi rounded to 0 decimal places: 3

आप f-string में प्रतिशत फॉर्मैट करने के लिए :.nf सिंटैक्स को % के साथ जोड़कर उपयोग कर सकते हैं, जहाँ n दशमलव स्थानों की संख्या है।

score = 0.875
print(f"Success rate: {score:.2%}")
   Success rate: 87.50%

आप f-string में मुद्रा फॉर्मैट करने के लिए :, का उपयोग हजारों के सेपरेटर हेतु और .nf का उपयोग दशमलव स्थानों के लिए कर सकते हैं। आप $, €, या £ जैसे मुद्रा प्रतीकों को सीधे स्ट्रिंग में शामिल कर सकते हैं।

amount = 98765.4321


print(f"USD: ${amount:,.2f}")
print(f"EUR: €{amount:,.2f}")
print(f"GBP: £{amount:,.2f}")
   USD: $98,765.43

   EUR: €98,765.43

   GBP: £98,765.43

डिक्शनरी और लिस्ट्स के साथ f-strings का उपयोग

Python में डिक्शनरी के साथ f-strings उपयोग करने के लिए, कर्ली ब्रैकेट्स के अंदर स्क्वेयर-ब्रैकेट नोटेशन (dict['key']) से वैल्यू एक्सेस करें या ** के साथ डिक्शनरी को अनपैक करें।

person = {
   'name': 'Alice',
   'age': 30,
   'city': 'New York'
}


print(f"My name is {person['name']}, I am {person['age']} years old, and I live in {person['city']}.")
   My name is Alice, I am 30 years old, and I live in New York.

हर कुंजी को मैन्युअली एक्सेस करने के बजाय, आप डिक्शनरी को f-string में इस प्रकार अनपैक कर सकते हैं।

person = {
   'name': 'Alice',
   'age': 30,
}


print(f'My name is {name} and I am {age} years old.'.format(**person))
   My name is Alice and I am 7 years old.

मिसिंग कीज़ के लिए एरर से बचने हेतु, डिक्शनरी एक्सेस के लिए get() का उपयोग करें।

person = {"name": "Alice"}


# Error: key 'city' is missing
print(f"City: {person['city']}") 
   ---------------------------------------------------------------------------




   KeyError                                  Traceback (most recent call last)




   Cell In[87], line 4

         1 person = {"name": "Alice"}

         3 # Error: key 'city' is missing

   ----> 4 print(f"City: {person['city']}")







   KeyError: 'city'
print(f"City: {person.get('city', 'Not specified')}")
   City: Not specified

स्ट्रिंग इंटरपोलेशन तरीकों के फायदे और नुकसान

जैसा कि हमने देखा, f-strings और .format() दोनों ही स्ट्रिंग इंटरपोलेशन के लिए उपयोगी तरीके हैं। आइए प्रत्येक तरीके के फायदे और नुकसान की तुलना देखें।

Feature

f-strings

.format()

% formatting

Readability

🟢 सर्वश्रेष्ठ

🟡 ठीक-ठाक

🔴 कठिन

Performance

🟢 सबसे तेज़

🟡 धीमा

🔴 सबसे धीमा

Supports Expressions

🟢 हाँ

🟡 अप्रत्यक्ष

🔴 नहीं

multiline Support

🟢 हाँ

🟢 हाँ

🔴 नहीं

Ease of Use

🟢 सबसे आसान

🟡 मध्यम

🔴 कठिन

Debugging (= Operator)

🟢 हाँ (Python 3.8+)

🔴 नहीं

🔴 नहीं

आपको कब .format() को f-strings पर प्राथमिकता देनी चाहिए?

Advantage

क्यों उपयोग करें .format()

लेगेसी Python सपोर्ट

Python 2.7+ में काम करता है

लचीला ऑर्डरिंग

प्लेसहोल्डर्स का आसान रीऑर्डर

डायनामिक फॉर्मैटिंग

जब फॉर्मैट स्पेसिफ़ायर डायनामिक हो

{} ब्रेसेस को बेहतर हैंडल करता है

अतिरिक्त मैनुअल एस्केपिंग से बचाता है

डिक्शनरी के साथ बेहतर

डिक्ट कीज़ का उपयोग आसान

सामान्य गलतियाँ और सर्वोत्तम प्रथाएँ

नीचे, आप Python स्ट्रिंग इंटरपोलेशन के लिए कुछ ट्रबलशूटिंग तरीके और शीर्ष सुझाव पा सकते हैं। 

कर्ली ब्रेसेस के साथ सिंटैक्स एरर्स से बचना

कर्ली ब्रेसेस वाली स्ट्रिंग इंटरपोलेशन में कई तरह की सिंटैक्स गलतियाँ हो सकती हैं।

  • सुनिश्चित करें कि हर { का मिलान करने वाला } हो
print('Hello, my name is {name!'}
     Cell In[96], line 1

       print('Hello, my name is {name!'}
                                       ^
   SyntaxError: closing parenthesis '}' does not match opening parenthesis '('

सौभाग्य से, यह त्रुटि सीधी है, और समाधान आसान।

  • लिटरल {} दिखाने के लिए {{ और }} का उपयोग करें

यदि आप इंटरपोलेटेड स्ट्रिंग में कर्ली ब्रेसेस प्रिंट करना चाहते हैं तो क्या होगा? कर्ली ब्रैकेट्स के अंदर की किसी भी चीज़ का इवाल्यूएशन (करने का प्रयास) होगा।

print(f'Set notation: {a, b, c}')
   ---------------------------------------------------------------------------

   NameError                                 Traceback (most recent call last)

   Cell In[101], line 1

   ----> 1 print(f'Set notation: {a, b, c}')

   NameError: name 'c' is not defined

Python कर्ली ब्रैकेट्स के अंदर a, b, c को एक टपल के रूप में समझता है और a से जुड़े मान को ढूँढने का प्रयास करता है। चूँकि ऐसा कोई वेरिएबल मौजूद नहीं है, यह KeyError उठाता है। समाधान है डबल कर्ली ब्रेसेस {{}} का उपयोग।

print("Set notation: {{a, b, c}}")

   Set notation: {{a, b, c}}

प्रदर्शन तुलना: f-strings बनाम .format()

आइए f-strings और .format() के प्रदर्शन की तुलना करें।

import timeit


name = "Alice"
age = 30
pi = 3.1415926535


# Measure f-string performance
f_string_time = timeit.timeit('f"My name is {name} and I am {age} years old."', globals=globals(), number=1000000)


# Measure .format() performance
format_time = timeit.timeit('"My name is {} and I am {} years old.".format(name, age)', globals=globals(), number=1000000)


# Measure f-string performance with expressions
f_string_expr_time = timeit.timeit('f"Pi rounded to 2 decimal places: {pi:.2f}"', globals=globals(), number=1000000)


# Measure .format() performance with expressions
format_expr_time = timeit.timeit('"Pi rounded to 2 decimal places: {:.2f}".format(pi)', globals=globals(), number=1000000)


# Print results
print(f"f-string (simple): {f_string_time:.6f} seconds")
print(f".format() (simple): {format_time:.6f} seconds")
print(f"f-string (with expression): {f_string_expr_time:.6f} seconds")
print(f".format() (with expression): {format_expr_time:.6f} seconds")
   f-string (simple): 0.080447 seconds

   .format() (simple): 0.129860 seconds

   f-string (with expression): 0.123171 seconds

   .format() (with expression): 0.146242 seconds

जैसा कि आप देख सकते हैं, दक्षता के दृष्टिकोण से, .format() की तुलना में f-strings को प्राथमिकता देनी चाहिए।

साफ़ और पठनीय स्ट्रिंग इंटरपोलेशन के लिए सर्वोत्तम प्रथाएँ

यह सुनिश्चित करने के लिए कि आपकी स्ट्रिंग फॉर्मैटिंग स्पष्ट, प्रभावी और रखरखाव योग्य हो, इंटरपोलेटेड स्ट्रिंग्स का उपयोग करते समय इन सर्वोत्तम प्रथाओं का पालन करें।

  • पठनीयता के लिए f-strings को प्राथमिकता दें (Python 3.6+)
# Recommended
name = "Alice"
age = 30
print(f"My name is {name} and I am {age} years old.")


# Not Recommended (Less readable)
print("My name is {} and I am {} years old.".format(name, age))


# Avoid using % formatting (Outdated)
print("My name is %s and I am %d years old." % (name, age))
   My name is Alice and I am 30 years old.

   My name is Alice and I am 30 years old.

   My name is Alice and I am 30 years old.
  • स्पष्टता के लिए नेम्ड प्लेसहोल्डर का उपयोग करें
# Named placeholders (readable)
user = {"name": "Alice", "age": 30}
print(f"My name is {user['name']} and I am {user['age']} years old.")


# Using indexes in .format() (not as readable)
print("My name is {0} and I am {1} years old.".format("Alice", 30))
   My name is Alice and I am 30 years old.

   My name is Alice and I am 30 years old.
  • मल्टीलाइन स्ट्रिंग्स को पठनीय रखें।
name = "Alice"
age = 30


message = f"""Hello, {name}!


We are happy to invite you to our event.
At {age} years old, you are eligible for the VIP pass.


Best regards,
Event Team
"""
print(message)
   Hello, Alice!


   We are happy to invite you to our event.

   At 30 years old, you are eligible for the VIP pass.


   Best regards,

   Event Team  
  • बेहतर डीबगिंग के लिए लॉगिंग में f-strings का उपयोग करें

Python 3.8 और बाद के संस्करण f-strings में डीबगिंग हेतु = का समर्थन करते हैं।

value = 42


# Output: value = 42
print(f"{value = }") 
   value = 42

निष्कर्ष

स्ट्रिंग इंटरपोलेशन Python में एक शक्तिशाली फ़ीचर है जो स्ट्रिंग फॉर्मैटिंग को अधिक साफ़, पठनीय और कुशल बनाता है। उपलब्ध तरीकों में, f-strings सबसे आधुनिक और अनुशंसित तरीका है, जो .format() और % फॉर्मैटिंग जैसे पुराने तरीकों की तुलना में बेहतर प्रदर्शन, स्पष्टता और लचीलापन प्रदान करता है। 

सर्वोत्तम प्रथाओं का पालन करके—जैसे नेम्ड प्लेसहोल्डर का उपयोग, दशमलव सटीकता नियंत्रित करना, पठनीयता के लिए टेक्स्ट को एलाइन करना, और मिसिंग डिक्शनरी कीज़ को शालीनता से हैंडल करना—आप Python में साफ़, पेशेवर और रखरखाव योग्य स्ट्रिंग फॉर्मैटिंग लिख सकते हैं। 

चाहे आप फ़ॉर्मैटेड रिपोर्ट, मल्टीलाइन संदेश, या स्ट्रक्चर्ड डेटा आउटपुट बना रहे हों, f-strings वेरिएबल्स और एक्सप्रेशंस को सहज रूप से एकीकृत करने का सरल लेकिन शक्तिशाली तरीका प्रदान करती हैं। f-strings अपनाने से न केवल आपके कोड की गुणवत्ता सुधरेगी बल्कि दक्षता भी बढ़ेगी। 

Python स्ट्रिंग इंटरपोलेशन पर अधिक जानकारी के लिए, DataCamp के संसाधन देखें:

Python स्ट्रिंग इंटरपोलेशन FAQs

Python में स्ट्रिंग इंटरपोलेशन क्या है?

स्ट्रिंग इंटरपोलेशन वह प्रक्रिया है जिसमें वेरिएबल्स, एक्सप्रेशंस या फ़ंक्शन आउटपुट को सीधे स्ट्रिंग में डाला जाता है। Python इसे f-strings, .format(), और % फॉर्मैटिंग के माध्यम से सपोर्ट करता है।

क्या f-strings सभी Python संस्करणों में उपलब्ध हैं?

नहीं, f-strings को Python 3.6 में पेश किया गया था। यदि आप पुराना संस्करण उपयोग कर रहे हैं, तो आपको .format() या % फॉर्मैटिंग का उपयोग करना होगा।

f-strings को .format() और % फॉर्मैटिंग पर क्यों प्राथमिकता दी जाती है?

f-strings, .format() और % फॉर्मैटिंग की तुलना में तेज़, अधिक पठनीय और अधिक संक्षिप्त हैं। ये डायरेक्ट वेरिएबल एम्बेडिंग और इनलाइन एक्सप्रेशंस की अनुमति देती हैं, जिससे ये अधिक कुशल बनती हैं।

क्या मैं डिक्शनरी के साथ f-strings उपयोग कर सकता/सकती हूँ?

हाँ, आप f-strings के अंदर डिक्शनरी वैल्यू एक्सेस कर सकते हैं:

user = {"name": "Alice", "age": 30}
print(f"My name is {user['name']} and I am {user['age']} years old.")

वैकल्पिक रूप से, डिक्शनरी अनपैक करें:

print(f"My name is {name} and I am {age}.".format(**user))
मैं f-strings का उपयोग करके संख्याओं को कैसे फॉर्मैट करूँ?

आप फॉर्मैट स्पेसिफ़ायर्स का उपयोग करके दशमलव स्थान नियंत्रित कर सकते हैं और हजारों सेपरेटर जोड़ सकते हैं:

pi = 3.14159
print(f"Pi: {pi:.2f}")
Mark Pedigo

लेखक

Mark Pedigo

मार्क पेडिगो, PhD, स्वास्थ्यसेवा डेटा विज्ञान, प्रोग्रामिंग और शिक्षा में विशेषज्ञता वाले एक प्रतिष्ठित डेटा वैज्ञानिक हैं। गणित में PhD, कंप्यूटर साइंस में B.S., और AI में प्रोफेशनल सर्टिफिकेट रखने वाले मार्क तकनीकी ज्ञान को व्यावहारिक समस्या-समाधान से प्रभावी रूप से जोड़ते हैं। उनके करियर में धोखाधड़ी का पता लगाने, शिशु मृत्यु दर की भविष्यवाणी, और वित्तीय पूर्वानुमान से जुड़ी भूमिकाएँ शामिल रही हैं, साथ ही NASA के लागत आकलन सॉफ़्टवेयर में उनके योगदान भी हैं। एक शिक्षक के रूप में, उन्होंने DataCamp और वॉशिंगटन यूनिवर्सिटी इन सेंट लुईस में पढ़ाया है और कनिष्ठ प्रोग्रामरों का मार्गदर्शन किया है। खाली समय में, मार्क अपनी पत्नी मैंडी और कुत्ते हार्ले के साथ मिनेसोटा की प्राकृतिक सुंदरता का आनंद लेते हैं और जैज़ पियानो बजाते हैं।

विषय