2009-11-15 12 views
6

के मैटलैब समतुल्य Matlab में कोई कीवर्ड है जो लगभग None पाइथन में बराबर है?पाइथन के "कोई नहीं"

मैं फ़ंक्शन में वैकल्पिक तर्क को चिह्नित करने के लिए इसका उपयोग करने का प्रयास कर रहा हूं। मैं Matlab

function rtrn = f(x,y) 
    if y == []: 
     rtrn = g(x); 
    else 
     rtrn = h(x,y); 
    end; 
end 

में निम्नलिखित पायथन कोड

def f(x,y=None): 
    if y == None: 
     return g(x) 
    else: 
     return h(x,y) 

अनुवाद कर रहा हूँ कि आप देख वर्तमान में मैं None रूप [] उपयोग कर रहा हूँ कर सकते हैं। क्या ऐसा करने के लिए इससे अच्छा तरीका है?

+2

मैटलैब में आप क्या करने की कोशिश कर रहे हैं? –

उत्तर

10

। फ़ंक्शन को कॉल करते समय यहां दिए गए कितने इनपुट तर्क निर्धारित करने के लिए आप nargin का उपयोग कर सकते हैं।

MATLAB documentation से

:

nargin और nargout कार्यों लिए सक्षम निर्धारित करने के लिए कितने इनपुट और आउटपुट तर्क एक समारोह साथ कहा जाता है। तर्कों की संख्या के आधार पर विभिन्न कार्यों को करने के लिए आप सशर्त बयान का उपयोग कर सकते हैं। उदाहरण के लिए,

function c = testarg1(a, b) 
    if (nargin == 1) 
     c = a .^ 2; 
    elseif (nargin == 2) 
     c = a + b; 
    end 

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

+2

यदि लूप को उन मामलों को पकड़ने के लिए एक और कदम भी जोड़ना है जहां फ़ंक्शन को इनपुट तर्कों की गलत संख्या के साथ बुलाया जाता है, तो आप इसे – Adrian

7

NaN समकक्ष नहीं, अक्सर समान उद्देश्य प्रदान करता है। आपके विशिष्ट मामले में

7

nargin निश्चित रूप से ऐसा करने का सबसे आसान तरीका है।

function e = testFunc(a,b,c,d) 
    error(nargchk(2, 4, nargin, 'struct')); 

    % set default values 
    if nargin<4, d = 0; end 
    if nargin<3, c = 0; end 

    % .. 
    c = a*b + c*d; 

end 

... जो एक तरह से सुनिश्चित करने के लिए तर्क की सही संख्या पारित हो जाता है के रूप में कार्य करता है: यह भी nargchk का उपयोग कर इनपुट तर्क की संख्या मान्य करने के लिए आमतौर पर अच्छा अभ्यास है। इस मामले में, न्यूनतम दो तर्कों की आवश्यकता है, अधिकतम चार के साथ।

यदि nargchk कोई त्रुटि नहीं पता है, निष्पादन सामान्य रूप से फिर से शुरू होता है, अन्यथा कोई त्रुटि उत्पन्न होती है।उदाहरण के लिए, बुला testFunc(1) उत्पन्न करता है:

Not enough input arguments. 

अद्यतन:

narginchk(2,4); 

आप: एक नया समारोह R2011b narginchk, जिसका बहिष्कार nargchk + error ऊपर देखा के उपयोग की जगह में पेश किया गया था कार्यों का उपयोग कर सकते हैं जैसे: exist और isempty एक चर मौजूद है या नहीं की जाँच करने के और क्या यह क्रमशः खाली है:

if ~exist('c','var') || isempty(c) 
    c = 10; 
end 

जो आप इस तरह के रूप में अपने समारोह कॉल करने के लिए अनुमति देता है: यह कह c के लिए डिफ़ॉल्ट मान का उपयोग करने के, लेकिन अभी भी d

के लिए एक मूल्य दे रही है testFunc(1,2,[],4)

आप तर्कों की एक चर संख्या को स्वीकार करने के लिए varargin का भी उपयोग कर सकते हैं।

अंत में पार्स और नाम आदानों मान्य करने के लिए एक शक्तिशाली तरीका inputParser

का उपयोग करने के उदाहरण और तर्क गुजर और मूलभूत मूल्यों की स्थापना के अन्य विकल्प, this post और उसके टिप्पणियों के साथ की जाँच को देखने के लिए है।

+2

त्रुटि के रूप में फ़्लैग कर सकते हैं, तब से, एक नया फ़ंक्शन पेश किया गया था ['narginchk '] (http://www.mathworks.com/help/matlab/ref/narginchk.html) जो ऊपर दिखाए गए बहिष्कृत 'नर्गच' + 'त्रुटि' के उपयोग को प्रतिस्थापित करता है – Amro

संबंधित मुद्दे