উত্তর:
এই ত্রুটি বার্তার অর্থ হল যে আপনি পাইথন 3 ব্যবহার করার চেষ্টা করছেন উদাহরণ অনুসরণ করতে বা পাইথন 2 print
স্টেটমেন্ট ব্যবহার করে এমন একটি প্রোগ্রাম চালানোর জন্য :
print "Hello, World!"
উপরের বিবৃতিটি পাইথন 3 তে কাজ করে না পাইথন 3-তে আপনাকে মুদ্রণের জন্য মানটির চারপাশে বন্ধনী যুক্ত করতে হবে:
print("Hello, World!")
"সিনট্যাক্স এরির: 'প্রিন্টের জন্য কল হয়ে যাওয়া বন্ধনী' হ'ল একটি নতুন ত্রুটি বার্তা যা পাইথন ৩.৪.২ এ প্রাথমিকভাবে যুক্ত করা হয়েছে যে পাইথন 3 চালানোর সময় পাইথন 2 টি টিউটোরিয়াল অনুসরণ করার চেষ্টা করা ব্যবহারকারীদের সহায়তা করার জন্য।
পাইথন 3-এ, মুদ্রণের মানগুলি একটি পৃথক বিবৃতি থেকে একটি সাধারণ ফাংশন কল হিসাবে পরিবর্তিত হয়েছিল, সুতরাং এখন এটির প্রথম বন্ধনী প্রয়োজন:
>>> print("Hello, World!")
Hello, World!
পাইথন 3 এর পূর্ববর্তী সংস্করণগুলিতে, দোভাষী কেবল জেনেরিক সিনট্যাক্স ত্রুটিটি রিপোর্ট করে, কী কী ভুল হতে পারে সে সম্পর্কে কোনও কার্যকর ইঙ্গিত না দিয়ে:
>>> print "Hello, World!"
File "<stdin>", line 1
print "Hello, World!"
^
SyntaxError: invalid syntax
হিসাবে কেন print
পাইথন 3 একজন সাধারণ ফাংশন, যে বিবৃতি মৌলিক ফর্ম সঙ্গে সম্পর্কযুক্ত করা হয়নি, বরং কিভাবে আপনি একটি trailing স্থান সঙ্গে stderr হবে একাধিক আইটেম মুদ্রণ বদলে লাইন বিভক্তি মত আরো জটিল জিনিষ করেনি হয়ে ওঠে।
পাইথন 2 এ:
>>> import sys
>>> print >> sys.stderr, 1, 2, 3,; print >> sys.stderr, 4, 5, 6
1 2 3 4 5 6
পাইথন 3 এ:
>>> import sys
>>> print(1, 2, 3, file=sys.stderr, end=" "); print(4, 5, 6, file=sys.stderr)
1 2 3 4 5 6
সেপ্টেম্বর 2017 এ পাইথন 3.6.3 রিলিজ দিয়ে শুরু করে পাইথন ২.x প্রিন্ট সিনট্যাক্স সম্পর্কিত কিছু ত্রুটি বার্তা তাদের পাইথন ৩.x সহযোগীদের সুপারিশ করতে আপডেট করা হয়েছে:
>>> print "Hello!"
File "<stdin>", line 1
print "Hello!"
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello!")?
যেহেতু "মুদ্রণের জন্য কলিংয়ে অনুপস্থিত" কেসটি একটি সংকলন সময়ের সিনট্যাক্স ত্রুটি এবং অতএব কাঁচা উত্স কোডটিতে অ্যাক্সেস রয়েছে তাই এটি প্রস্তাবিত প্রতিস্থাপনে বাকী লাইনের পুরো পাঠ্যকে অন্তর্ভুক্ত করতে সক্ষম। তবে, বর্তমানে এই অভিব্যক্তিটি চারপাশে রাখার জন্য উপযুক্ত উদ্ধৃতিগুলি নিয়ে কাজ করার চেষ্টা করা হচ্ছে না (এটি অসম্ভব নয়, এটি যথেষ্ট পরিমাণে জটিল যে এটি করা হয়নি)।
TypeError
ডান শিফ্ট অপারেটর জন্য উত্থাপিত কাস্টমাইজড করা হয়েছে:
>>> print >> sys.stderr
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean "print(<message>, file=<output_stream>)"?
কোডটি চালিত হওয়ার সময় এই ত্রুটিটি উত্থাপিত হওয়ার পরে, এটি সংকলিত হওয়ার পরিবর্তে এটির কাঁচা উত্স কোডে অ্যাক্সেস নেই এবং তাই ব্যবহারকারী প্রকৃতপক্ষে যে কোনও টাইপ না করে প্রস্তাবিত প্রতিস্থাপনের অভিব্যক্তিতে মেটা-ভেরিয়েবল ( <message>
এবং <output_stream>
) ব্যবহার করে । সিনট্যাক্স ত্রুটি মামলার বিপরীতে, কাস্টম রাইট শিফট ত্রুটি বার্তায় পাইথন এক্সপ্রেশনটির চারপাশে উদ্ধৃতি স্থাপন করা সোজা।
দুর্ভাগ্যক্রমে, পুরানো xkcd কমিকটি সম্পূর্ণরূপে আপ টু ডেট নয়।
পাইথন ৩.০ থেকে আপনাকে লিখতে হবে:
print("Hello, World!")
এবং কারও কাছে এখনও সেই antigravity
লাইব্রেরিটি লিখতে হবে :(
যদি আপনার কোডটি পাইথন 2 এবং 3 উভয় ক্ষেত্রেই কাজ করা উচিত হয় তবে আপনি আপনার প্রোগ্রামের শুরুতে এটি লোড করে এটি অর্জন করতে পারেন:
from __future__ import print_function # If code has to work in Python 2 and 3!
তারপরে আপনি পাইথন 3 উপায়ে মুদ্রণ করতে পারেন:
print("python")
আপনি যদি নতুন লাইন তৈরি না করে কিছু মুদ্রণ করতে চান - আপনি এটি করতে পারেন:
for number in range(0, 10):
print(number, end=', ')
মূলত পাইথন ৩.x থেকে আপনার প্রথম print
বন্ধনী ব্যবহার করা দরকার ।
পাইথন ২.x : "রিংয়ের লর্ড" মুদ্রণ করুন
পাইথন 3.x : মুদ্রণ (" রিংগুলির লর্ড")
print
একটি ছিল বিবৃতি মধ্যে 2.x কিন্তু এটি একটি এর ফাংশন মধ্যে 3.x । এখন, এর বেশ কয়েকটি ভাল কারণ রয়েছে।
>>> items = ['foo', 'bar', 'baz'] >>> print(*items, sep='+') foo+bar+baz
আমিও শুধু যোগ করতে পারে যে আমি মধ্যে বাক্য গঠন পরিবর্তন সম্পর্কে সবকিছু জানত Python2.7
এবং Python3
, এবং আমার কোড সঠিকভাবে হিসেবে লেখা হয়েছিল print("string")
এবং এমনকি
print(f"string")
...
তবে ডিবাগিংয়ের কিছুক্ষণ পরে আমি বুঝতে পারি যে আমার বাশ স্ক্রিপ্টটি পাইথনকে এইভাবে ডাকছে:
পাইথন ফাইল_নাম.পি
যা আমার অজগর স্ক্রিপ্টটি ডিফল্টরূপে python2.7
ত্রুটি দিয়েছে তা ব্যবহার করে কল করার প্রভাব ফেলেছিল । সুতরাং আমি আমার বাশ স্ক্রিপ্ট এ পরিবর্তন করেছি:
পাইথন 3 ফাইল_নাম.পি
স্ক্র্যাপটি চালনার জন্য অজগর 3 ব্যবহার করে কোনটি মোটা?
এখানে প্রত্যক্ষ উত্তরের বাইরে, পাইথন 2 এবং 3 এর মধ্যে অন্য মূল পার্থক্যটি নোট করা উচিত সরকারী পাইথন উইকি প্রায় সমস্ত প্রধান পার্থক্যের মধ্যে যায় এবং যখন আপনার কোনও সংস্করণ ব্যবহার করা উচিত সেদিকে দৃষ্টি নিবদ্ধ করে। এই অজগর মহাবিশ্ব এবং অজগর 3 এ যাওয়ার কোনওরকম অমীমাংসিত ধাঁধাটি ব্যাখ্যা করার জন্য এই ব্লগ পোস্টটিও দুর্দান্ত কাজ করে।
আমি যতদূর বলতে পারি, আপনি অজগর ভাষা শিখতে শুরু করেছেন। অজগর 3 রুটে চালিয়ে যাওয়ার আগে আপনার উপরোক্ত নিবন্ধগুলি বিবেচনা করা উচিত। আপনাকে কেবল আপনার সিনট্যাক্সের কিছু পরিবর্তন করতে হবে না, আপনাকে কী প্যাকেজগুলি পাওয়া যাবে তা সম্পর্কেও ভাবতে হবে (পাইথন 2 এর সুবিধা) এবং আপনার কোডে তৈরি হতে পারে এমন সম্ভাব্য অপ্টিমাইজেশন (পাইথন 3 এর সুবিধা) ।