পাইথন কমান্ড লাইন থেকে প্রস্থান করা হচ্ছে


152

পাইথন কমান্ড লাইন থেকে প্রস্থান করতে, আমাকে প্রস্থান টাইপ করতে হবে ()। আমি প্রস্থান টাইপ করুন, এটি বলে

Use exit() or Ctrl-Z plus Return to exit

সাধারণত আপনি টাইপ করার সময় exit, আপনি প্রোগ্রামটি থেকে বেরিয়ে আসতে চাইবেন। দোভাষী আমাকে উপরের ত্রুটিটি কেন দেয় যখন যখন এটি জানে যে আমি কমান্ড লাইনটি প্রস্থান করার চেষ্টা করছি? কেন এটি কেবল প্রস্থান করে না? আমি জানি এটি কোন গুরুত্ব দেয় না এবং এটি একটি নির্বোধ প্রশ্ন তবে আমি উত্সাহী।


এটি কীভাবে প্রায়শই ()শেষের দিকে ফাংশনগুলির সাথে ডাকা হয় তার সাথে এটি করাতে পারে ... অন্যথায়, এটি (সম্ভবত) পরিবর্তনশীল হতে পারে ... বা কোনও ধরণের অবজেক্ট ...
Summea

ডান তবে দোভাষী জানেন যে আমি প্রস্থান করার চেষ্টা করছি এবং কেন বার্তাটি প্রিন্ট করে। অন্যথায় এটি একটি ত্রুটি বার্তা মুদ্রিত হত। যদি এটি জানে যে আমি প্রস্থান করার চেষ্টা করছি তবে এটি কেবল প্রস্থান করতে পারে।
অঙ্ক

1
প্রস্থান বা প্রস্থান () বিশ্বে আমার প্রায় 20% ইনস্টলেশন আমার জন্য একটি ত্রুটি ছুড়ে ফেলেছে ... কেবলমাত্র সিটিআরএল + জেড + রিটার্ন ধারাবাহিকভাবে কাজ করে।
পাওলো কারওয়ালহো

উত্তর:


37

আমার অজগর দোভাষী exitআসলে একটি স্ট্রিং এবং না একটি ফাংশন - 'Use Ctrl-D (i.e. EOF) to exit.'। প্রবেশ করে আপনার দোভাষীকে পরীক্ষা করতে পারেনtype(exit)

সক্রিয় অজগরটিতে যা ঘটছে তা হ'ল প্রস্থানটি একটি ফাংশন। আপনি যদি ফাংশনটি কল না করেন তবে এটি বস্তুর স্ট্রিং প্রতিনিধিত্ব মুদ্রণ করবে। প্রত্যাবর্তিত যে কোনও অবজেক্টের জন্য এটি ডিফল্ট আচরণ। এটি ঠিক যে ডিজাইনাররা ভেবেছিলেন লোকেরা দোভাষী থেকে প্রস্থান করতে প্রস্থানটি টাইপ করার চেষ্টা করতে পারে, তাই তারা প্রস্থান কার্যকারীর স্ট্রিং প্রতিনিধিত্বকে একটি সহায়ক বার্তা বানিয়েছে। আপনি টাইপ করে str(exit)বা এমনকি এই আচরণটি পরীক্ষা করতে পারেন print exit


14
উইন্ডোজ (ভাল, ডস) যেখানে আপনি ইউনিক্স-এর মতো সিস্টেমে Ctrl-D করবেন সেখানে Ctrl-Z হ'ল।
কার্ল নচেটেল

@ কার্লকনেটেল আহ, জেনে ভাল good উইন্ডোতে প্রোগ্রামিংয়ের আমার খুব কম অভিজ্ঞতা আছে।
ডুনস

60

এটি আমার পক্ষে কাজ করে, অজগর প্রম্পট থেকে বেরিয়ে আসার সেরা উপায়।

প্রস্থান ()


4
আমি এই উত্তর সম্পর্কে বিভ্রান্ত ... প্রশ্ন নিজেই বলেছে যে তারা ইতিমধ্যে এটি জানে যে exit()কাজ করে, এবং তারা জানতে চান কেন exitপেরেন ছাড়া কাজ করে না। সুতরাং এই উত্তরটি কেবল প্রশ্নের একটি অংশ পুনরাবৃত্তি করে এবং আসলে এর উত্তর দেয় না।
বেন লি

প্রশ্নটি না পড়ার জন্য আমি এই উত্তরটিকে নীচে নামাতে চাই, তবে আমি মনে করি বেশিরভাগ অজগর স্থাপনার জন্য এটি সঠিক; এটি কেবলমাত্র ব্যবহারকারী বলেছেন যে এটি তাদের ক্ষেত্রে কাজ করে না, সুতরাং এটির প্রস্তাব দেওয়া উচিত ... অনুচিত।
27

37

আপনি যখন exitকমান্ড লাইনটি টাইপ করেন, এটি সেই নামের সাথে ভেরিয়েবলটি খুঁজে পায় এবং তাতে __repr__(বা __str__) কল দেয়। সাধারণত, আপনি যেমন একটি ফলাফল পেতে চাই:

<function exit at 0x00B97FB0>

তবে তারা exitপরিবর্তে কোনও সহায়ক বার্তা প্রদর্শন করার জন্য সেই ফাংশনটিকে নতুন করে সংজ্ঞায়িত করার সিদ্ধান্ত নিয়েছে । এটি একটি নির্বোধ আচরণ হোক বা না হোক এটি একটি বিষয়গত প্রশ্ন, তবে এটি "স্রেফ প্রস্থান" না করার একটি সম্ভাব্য কারণ হ'ল:

ধরুন আপনি কোনও ডিবাগারে কিছু কোড খুঁজছেন, উদাহরণস্বরূপ, এবং অবজেক্টগুলির একটি exitফাংশনটির উল্লেখ করেছে । ডিবাগার যখন সেই __repr__ফাংশনটি আপনার কাছে প্রদর্শন করার জন্য সেই অবজেক্টটিতে কল করার চেষ্টা করে , প্রোগ্রাম হঠাৎ বন্ধ হয়ে যায়! এটি সত্যিই অপ্রত্যাশিত হবে এবং এর মোকাবিলার পদক্ষেপগুলি বিষয়গুলিকে আরও জটিল করে তুলতে পারে (উদাহরণস্বরূপ, আপনি যদি সেই আচরণটি কমান্ড লাইনের মধ্যে সীমাবদ্ধ করেন এমনকি যদি আপনি exitকোনও বৈশিষ্ট্য হিসাবে কিছু বস্তু মুদ্রণের চেষ্টা করেন তবে কী হবে ?)


4
এই ক্ষেত্রে, আসল প্রস্থান ফাংশন এমনকি সুযোগ ব্যতীত হয় আপনি যদি না থাকেন import sys, যার পরে আপনি দোভাষী থেকে প্রস্থান করতে sys.exit () কল করবেন।
মাইকেল ডিলন

19

এই বার্তাটি এর __str__বৈশিষ্ট্যexit

এই উদাহরণগুলি দেখুন:

1

>>> print exit
Use exit() or Ctrl-D (i.e. EOF) to exit

2

>>> exit.__str__()
'Use exit() or Ctrl-D (i.e. EOF) to exit'

3

>>> getattr(exit, '__str__')()
'Use exit() or Ctrl-D (i.e. EOF) to exit'

19

আমি আপনাকে পাইথন দোভাষী দিয়ে বেরিয়ে যাওয়ার পরামর্শ দিই Ctrl-D। এন্ড-অফ-ফাইল বা ট্রান্সমিশনের শেষের জন্য এটি পুরানো এএসসিআইআই কোড।


স্ক্রিপ্টটি কোনও ত্রুটির মধ্যে চলে গেলে এই পদ্ধতিটি কাজ করে না বলে মনে হয়।
blaylockbk

2
Ctrl-Breakউইন্ডোতে ধারাবাহিকভাবে কাজ করে। Ctrl-Dবা Ctrl-Zপাইথন ২.7, ৩.৪, ৩.6 এর জন্য উইন্ডোজ-এ কাজ করেছেন। তবে পাইথন ৩.7-এ এগুলি কাজ করা বন্ধ করে দিয়েছিল এবং এএসসিআইআইয়ের সংক্ষিপ্ততম ক্রমটি বেরিয়ে এসেছে Ctrl-Z Enter
বব স্টেইন

14

উইন্ডোজ ব্যবহারে অ্যানাকোন্ডা 4.5+ এবং পাইথন 3.6+ সহ

Ctrl+Z

অথবা

exit()

কিছু ক্ষেত্রে, আপনাকে ব্যবহার করতে হতে পারে

Ctrl+Break

যদি আপনার কম্পিউটারে Breakকী না থাকে তবে এখানে দেখুন


8

কারণ অনুবাদক শেল নয় যেখানে আপনি কমান্ডগুলি সরবরাহ করেন, এটি - ভাল - একটি দোভাষী। আপনি এটিতে যে জিনিসগুলি দেন তা হ'ল পাইথন কোড।

পাইথনের সিনট্যাক্সটি এমন যে exitনিজে নিজেই কোনও জিনিসের নাম বাদে অন্য কিছু হতে পারে না। কেবল কোনও অবজেক্টের উল্লেখ করা আসলে কিছুই করতে পারে না (রিড-ইভাল-প্রিন্ট লুপটি সাধারণত যা করে তা বাদ দেয়; অর্থাত্ বস্তুর স্ট্রিং প্রতিনিধিত্ব প্রদর্শন করুন)।


6

আপনি এটি ঠিক করতে পারেন।

PYTHONSTARTUPনিম্নলিখিত সঙ্গে একটি অজগর ফাইল লিঙ্ক

# Make exit work as expected
type(exit).__repr__ = type(exit).__call__

কিভাবে কাজ করে?

পাইথন কমান্ড লাইনটি একটি পঠন-মূল্যায়ন-মুদ্রণ-লুপ হয়, যখন আপনি পাঠ্যটি টাইপ করেন তখন এটি সেই পাঠ্যটি পড়বে, মূল্যায়ন করবে এবং শেষ পর্যন্ত ফলাফলটি মুদ্রণ করবে।

আপনি যখন টাইপ করেন exit()এটি টাইপের কলযোগ্য বস্তুর মূল্যায়ন করে site.Quitterএবং __call__সিস্টেমটি থেকে বেরিয়ে আসা এর ফাংশনটিকে কল করে । আপনি টাইপ exitকরার সময় এটি একই কলযোগ্য বস্তুর মূল্যায়ন করে, এটিকে কল না করেই বস্তুটি মুদ্রিত হয় যা ঘুরিয়ে __repr__দিয়ে বস্তুকে কল করে।

আমরা লিংক __repr__দিয়ে এটির সুবিধা নিতে পারি __call__এবং এভাবে exitবন্ধনী ছাড়াই টাইপ করা হলেও সিস্টেমটি প্রস্থান করার প্রত্যাশিত আচরণটি পেতে পারি ।


4
তারা exit"সহায়ক" স্ট্রিং মুদ্রণ করার প্রচেষ্টা নিয়েছিল , তবে তারা প্রাকৃতিক জিনিসটি করতে এবং দোভাষী থেকে প্রস্থান করতে কেবল এটি আবদ্ধ করতে পারেনি। প্রতিবার প্রথম বন্ধনী টাইপ করতে বাধ্য হতাশাজনক is এই উত্তরটি নিখুঁত এবং পরিবর্তে এটি গ্রহণযোগ্য হওয়া উচিত।
প্রেজেমেক ডি

3

পাইথন টার্মিনাল থেকে প্রস্থান করার জন্য , কেবলমাত্র এটি করুন:

exit()

দয়া করে মনোযোগ দিন এটি এমন একটি ফাংশন যা বলা হয় বেশিরভাগ ব্যবহারকারী এটি কল না করে প্রস্থানের সাথে মিশ্রিত করে, তবে নতুন পাইথন টার্মিনাল একটি বার্তা দেখায় ...

বা শর্টকাট হিসাবে টিপুন:

Ctrl + D

আপনার কীবোর্ডে ...

সিটিআরএল + ডি


1
আপনি বলেছেন সমস্ত কিছু উপরের উত্তরে ইতিমধ্যে আবৃত রয়েছে।
প্রজেমেক ডি

0

যদি আপনি পাইথন কমান্ড লাইনে আটকে থাকেন এবং উপরের কোনও সমাধান আপনার জন্য কাজ করে না, চেষ্টা করুন exit(2)


-1

"প্রস্থান" একটি বৈধ পরিবর্তনশীল নাম যা আপনার পাইথন প্রোগ্রামে ব্যবহার করা যেতে পারে। আপনি যখন সেই ভেরিয়েবলের মানটি দেখার চেষ্টা করছেন তখন আপনি দোভাষী থেকে প্রস্থান করতে চাইবেন না।


আপনি বরাদ্দ করা ব্যতীত exit, আপনি এই প্রতীকটিকে ওভাররাইড করে, এবং exit()আর কাজ করবে না। যদিও এই প্রতীকটি একটি বৈধ পরিবর্তনশীল নাম, এটি এ জাতীয়ভাবে ব্যবহার করা খুব ভাল অনুশীলন বলে মনে হয় না।
প্রেজেমেক ডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.