পাইথনে নো-ওপেন করার মানক উপায় কী?


160

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

no_op = 0

if x == 0:
    y = 2 * a
elif x == 1:
    z = 3 * b
elif x == 3:
    no_op

(কোডটি আসলে তার থেকে বেশ খানিকটা দীর্ঘ এবং আরও জটিল This এটি কেবল কাঠামোর চিত্রিত করার জন্য)।

আমি কোনও ভেরিয়েবলটিকে কোনও অপ-বিকল্প হিসাবে ব্যবহার করতে পছন্দ করি না, তবে এটি আমি ভাবতে পারি এটি সর্বাধিকতম উপায়। একটি ভাল উপায় আছে কি?


1
এই এলিপসিসটিও ...একটি উল্লেখের দাবিদার: stackoverflow.com/a/6189281/38281
প্যাট্রিক

উত্তর:


288

নো-অফের জন্য পাস ব্যবহার করুন :

if x == 0:
  pass
else:
  print "x not equal 0"

এবং এখানে অন্য একটি উদাহরণ:

def f():
  pass

বা:

class c:
  pass

3
ওয়ান-লাইনার হিসাবে, আমি ব্যবহার করি doSQL = lambda *x:x
সিস টিমারম্যান

2
আপনি "পাস" এর জায়গায় "কিছুই না" ব্যবহার করতে পারেন তবে এটি কোনও কোড স্পষ্ট করে না।
দেবপ্লেয়ার

এটি কি টার্নারি অপারেশনের জন্য সমর্থন করা হয়, বিশেষত অধীনে else?
আলেকজ মাগুরা

2
@ আলেকজমগুরা না, কারণ passএটি কোনও মূল্য নয়। এটি কীভাবে কার্যকর হতে পারে তাও আমি দেখতে পাচ্ছি না।
L3viathan


12

যদি আপনার কোনও ক্রিয়াকলাপ প্রয়োজন যা ন্যাপ হিসাবে আচরণ করে তবে চেষ্টা করুন

nop = lambda *a, **k: None
nop()

Dependচ্ছিক নির্ভরতাগুলি তৈরি করার সময় কখনও কখনও আমি এই জাতীয় জিনিসগুলি করি:

try:
    import foo
    bar=foo.bar
    baz=foo.baz
except:
    bar=nop
    baz=nop

# Doesn't break when foo is missing:
bar()
baz()

1
এটি যখন nopএকটি প্রসঙ্গে প্রয়োজন যাতে বিশেষত একটি অভিব্যক্তি প্রয়োজন (বনাম একটি স্বেচ্ছাসেবক বক্তব্য বনাম; qv ডকস.পিথন.আর. / রেফারেন্স / সিম্পল_স্টেমটিস html এবং ডকস.পিথন.অর্গ /3 / রেফারেন্স / কমপাউন্ড_স্টেমস) এর জন্য এটি একটি ভাল কাজ This এইচটিএমএল ) - যেমন একটি বোঝার মতো একটি বিদ্যমান কোড আইডিয়মের উপ-এক্সপ্রেশন হিসাবে, বা একটি lambda, বা ( forbশ্বর নিষেধ) কোনও স্ট্রিং eval(…)(যা qv ডকস.পিথন.আর.অথ / লিবারি / ফাংশন। Eval যদি আপনি অবশ্যই)।
fish2000

ব্যবহার lambdareusage জন্য একটি পরিবর্তনশীল করার জন্য একটি ফাংশন দায়িত্ব অর্পণ করা খারাপ কোডিং শৈলী। তার defজন্য আছে ।
বাছসৌ

0

আরেকটি উপায় এলিসপিসের সাথে রয়েছে:

def foo():
    ...

এটি অন্য কোনও বস্তুর নামকরণের চেয়ে ভাল নয়। এছাড়াও আপনি লিখতে পারে None, 136অথবা "NothingHere"। তবে পাইথনের সঠিক ফিলগ্যাপ pass
বাচসৌ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.