python - পাইথন প্রোগ্রামিং বই pdf




পাইথন 'যদি x না হয় না' বা 'যদি না x হয় তবে কিছুই না?' (7)

আমি সবসময় ভাবতাম যে if not x is None সংস্করণটি আরো স্পষ্ট হতে পারে না, তবে Google এর স্টাইল গাইড এবং PEP-8 উভয়ই if x is not None উভয়ই ব্যবহার করে। কোন ছোট পারফরম্যান্সের পার্থক্য আছে (আমি অনুমান করছি না), এবং এমন কোনও ঘটনা আছে যেখানে কেউ সত্যিই ফিট না হয় (অন্যকে আমার কনভেনশনটির জন্য স্পষ্ট বিজয়ী করে তোলে)? *

* আমি শুধু None ছাড়া, কোন এককন্টন উল্লেখ করছি।

... কেউ না মত singletons তুলনা। ব্যবহার বা না হয়।


পাইথন if x is not None বা if x is not None if not x is None ?

TLDR: বাইটকোড কম্পাইলার উভয়কে x is not None তাই x is not None পঠনযোগ্যতার কারণে, if x is not None ব্যবহার করুন।

সুপাঠ্যতা

আমরা পাইথন ব্যবহার করি কারণ আমরা মানবিক পঠনযোগ্যতা, ব্যবহারযোগ্যতা এবং কর্মক্ষমতা সম্পর্কিত প্রোগ্রামিংগুলির বিভিন্ন প্যাডডিজমের সঠিকতা যেমন জিনিসগুলিকে মূল্যবান বলে মনে করি।

পাইথন বিশেষ করে এই প্রসঙ্গে, পঠনযোগ্যতা জন্য অপ্টিমাইজ করে।

পার্সিং এবং বাইটকোড কম্পাইলিং

এর চেয়ে দুর্বলভাবে বাঁধাই not , তাই এখানে কোন যৌক্তিক পার্থক্য নেই। documentation দেখুন:

অপারেটরগুলি বস্তুর পরিচয়ের জন্য পরীক্ষা করে is not : x is y সত্য এবং যদি শুধুমাত্র x এবং y একই বস্তু হয়। x is not y বিপরীত সত্য মান উত্পন্ন x is not y

পাইথন grammar ভাষাটির জন্য একটি পঠনযোগ্যতা উন্নতি হিসাবে বিশেষভাবে সরবরাহ করা is not :

comp_op: '<'|'>'|'=='|'>='|'<='|'<>'|'!='|'in'|'not' 'in'|'is'|'is' 'not'

এবং তাই এটি ব্যাকরণ একটি একক উপাদান হিসাবে ভাল।

অবশ্যই, এটি একই parased হয় না:

>>> import ast
>>> ast.dump(ast.parse('x is not None').body[0].value)
"Compare(left=Name(id='x', ctx=Load()), ops=[IsNot()], comparators=[Name(id='None', ctx=Load())])"
>>> ast.dump(ast.parse('not x is None').body[0].value)
"UnaryOp(op=Not(), operand=Compare(left=Name(id='x', ctx=Load()), ops=[Is()], comparators=[Name(id='None', ctx=Load())]))"

কিন্তু তারপর বাইট কম্পাইলার আসলে অনুবাদ করবে not ... is is not :

>>> import dis
>>> dis.dis(lambda x, y: x is not y)
  1           0 LOAD_FAST                0 (x)
              3 LOAD_FAST                1 (y)
              6 COMPARE_OP               9 (is not)
              9 RETURN_VALUE
>>> dis.dis(lambda x, y: not x is y)
  1           0 LOAD_FAST                0 (x)
              3 LOAD_FAST                1 (y)
              6 COMPARE_OP               9 (is not)
              9 RETURN_VALUE

তাই পাঠযোগ্যতার জন্য এবং ভাষাটি ব্যবহার করার উদ্দেশ্যে এটি ব্যবহার করার is not দয়া করে ব্যবহার করুন।

এটি ব্যবহার করা বিজ্ঞতার নয়।


আমি আরও বেশি পঠনযোগ্য ফর্ম x is not y পছন্দ করি x is not y আমি মনে করি অপারেটরের কোড হ্যান্ডলিং অগ্রাধিকার কীভাবে আরও বেশি পঠনযোগ্য কোড তৈরি করতে হবে তার চেয়ে আমি x is not y


এটা চেষ্টা কর:

    if x != None:
       # do stuff with x

কোডটি প্রথমে প্রোগ্রামারকে বোঝার জন্য লিখতে হবে, এবং কম্পাইলার বা ইন্টারপ্রেটার দ্বিতীয়। "না" গঠনটি "না হয়" এর চেয়ে আরও ঘনিষ্ঠভাবে ইংরাজী অনুরূপ।


গুগল এবং Python স্টাইল গাইড উভয়ই সর্বোত্তম অনুশীলন:

if x is not None:
    # Do something about x

not x ব্যবহার করে অবাঞ্ছিত ফলাফল হতে পারে। নিচে দেখ:

>>> x = 1
>>> not x
False
>>> x = [1]
>>> not x
False
>>> x = 0
>>> not x
True
>>> x = [0]         # You don't want to fall in this one.
>>> not x
False

Python এ True বা False কোন লিখিত পরীক্ষার মূল্যায়ন করা হয় তা আপনি দেখতে আগ্রহী হতে পারেন:

নীচের মন্তব্যের জন্য সম্পাদনা করুন:

আমি শুধু আরো কিছু পরীক্ষার করেনি। not x হয় কেউ প্রথম x অস্বীকার করে না এবং তারপর None তুলনা। আসলে, মনে is অপারেটরটির উচ্চতর অগ্রাধিকার আছে যখন এটি ব্যবহার করা হয়:

>>> x
[0]
>>> not x is None
True
>>> not (x is None)
True
>>> (not x) is None
False

অতএব, not x is None , not x is None আমার সৎ মতে, সেরা এড়িয়ে চলছে না।

আরো সম্পাদনা:

আমি শুধু আরো পরীক্ষা করেছিলাম এবং যে bukzor এর মন্তব্য সঠিক তা নিশ্চিত করতে পারেন। (অন্তত, আমি অন্যথায় এটি প্রমাণ করতে পারবেন না।)

এর অর্থ হল if x is not None তবে সঠিক ফলাফল নেই যেমন if not x is None । আমি সংশোধন করেছি. ধন্যবাদ bukzor।

যাইহোক, আমার উত্তর এখনও দাঁড়িয়েছে: if x is not None প্রচলিত ব্যবহার করুন:]


ব্যক্তিগতভাবে, আমি ব্যবহার

if not (x is None):

যা প্রতিটি প্রোগ্রামার দ্বারা অবিচ্ছিন্নতা ছাড়া অবিলম্বে বোঝা যায়, এমনকি পাইথন সিনট্যাক্সের বিশেষজ্ঞও নয়।


if not x is None অন্য প্রোগ্রামিং ভাষাগুলির মতোই বেশি নয়, তবে if x is not None তবে স্পষ্টভাবে আমার কাছে আরও স্পষ্ট শব্দটি (এবং আরও বেশি ব্যাকরণগতভাবে সঠিকভাবে ইংরাজিতে সঠিক) শব্দটি শোনাচ্ছে।

এটা আমার কাছে একটি পছন্দ জিনিস আরো মনে হচ্ছে বলে মনে হচ্ছে।







boolean-expression