2013-10-02 8 views
6

"कॉल" का क्या अर्थ है और क्या करता है? पाइथन में आप "फ़ंक्शन" कैसे कॉल करेंगे?पायथन में फ़ंक्शन को "कॉल" करने का क्या अर्थ है?

+2

पढ़ें: http://docs.python.org/2/tutorial/controlflow.html#defining- कार्यक्षमता –

+4

असल में, संपूर्ण पायथन ट्यूटोरियल पढ़ें। – BrenBarn

+0

क्या आप एक संक्षिप्त स्पष्टीकरण दे सकते हैं? मैं एक नौसिखिया हूं, और मैं जानना चाहता हूं कि एक समारोह को "कॉलिंग" का मूल अर्थ क्या है। धन्यवाद! – user2837438

उत्तर

13

जब आप किसी फ़ंक्शन को "कॉल" करते हैं तो आप मूल रूप से उस फ़ंक्शन को निष्पादित करने के लिए प्रोग्राम को बता रहे हैं।

add(3,5) 

जो वापसी होगी 8. आप में कोष्ठकों में किसी भी दो नंबर डाल कर सकते हैं:

def add(a,b): 
    return a + b 

आप इस तरह समारोह कहेंगे: तो अगर आप एक समारोह है कि इस तरह के रूप में दो नंबर जोड़ा था ये मामला। आप इस तरह के फ़ंक्शन को भी कॉल कर सकते हैं:

answer = add(4,7) 

जो इस मामले में 11 के बराबर परिवर्तनीय उत्तर सेट करेगा।

2

"कॉल" करने के लिए आपके कोड में कहीं और लिखा गया फ़ंक्शन में संदर्भ बनाने का अर्थ है। यह फ़ंक्शन "कॉल" मानक पायथन लाइब्रेरी (सामग्री जो पाइथन के साथ स्थापित होती है), तृतीय-पक्ष पुस्तकालयों (अन्य लोगों द्वारा लिखे गए सामान जिन्हें आप उपयोग करना चाहते हैं), या अपना स्वयं का कोड (आपके द्वारा लिखे गए सामान) में किए जा सकते हैं। उदाहरण के लिए:

#!/usr/env python 

import os 

def foo(): 
    return "hello world" 

print os.getlogin() 
print foo() 

मैं एक समारोह "foo" और इसे बाद में कहा जाता है कि प्रिंट बयान के साथ बुलाया बनाया। मैंने मानक "ओएस" पायथन पुस्तकालय आयात किया तो मैं को कहा जाता है जो उस लाइब्रेरी में "गेटलॉगिन" फ़ंक्शन है।

0

जब आप किसी फ़ंक्शन का आह्वान करते हैं, तो इसे 'कॉलिंग' कहा जाता है। उदाहरण के लिए, समारोह कॉल करने के लिए मान लें कि दो संख्याओं का औसत इस-

def avgg(a,b) : 
     return (a+b)/2; 

अब की तरह पाता है एक समारोह में परिभाषित किया गया है, आप इस तरह से करते हैं।

x=avgg(4,6) 
print x 

एक्स का मान 5 होगा।

11

मैं थोड़ा उन्नत उत्तर दूंगा। पायथन में, फ़ंक्शन first-class objects हैं। इसका मतलब है कि उन्हें "गतिशील रूप से बनाया, नष्ट किया जा सकता है, एक समारोह में पारित किया जा सकता है, एक मूल्य के रूप में लौटाया जा सकता है, और प्रोग्रामिंग भाषा में अन्य चर के रूप में सभी अधिकार हैं।"

पायथन में फ़ंक्शन/क्लास इंस्टेंस को कॉल करना मतलब उस ऑब्जेक्ट की __call__ विधि का आह्वान करना है। पुराने शैली के वर्गों के लिए, कक्षा के उदाहरण भी कॉल करने योग्य होते हैं, लेकिन केवल अगर ऑब्जेक्ट उन्हें बनाता है तो __call__ विधि होती है। यह नई शैली के वर्गों के लिए लागू होता है, सिवाय इसके कि नई शैली के वर्गों के साथ "उदाहरण" की कोई धारणा नहीं है। इसके बजाय वे "प्रकार" और "वस्तुओं" हैं।

Python 2 Data Model page से उद्धृत के रूप में, समारोह वस्तुओं, वर्ग उदाहरणों (पुरानी शैली वर्ग), और कक्षा वस्तुओं (नई शैली वर्ग) के लिए, "x(arg1, arg2, ...)x.__call__(arg1, arg2, ...) के लिए एक आशुलिपि है।"

इस प्रकार जब भी आप आशुलिपि def funcname(parameters): आप वास्तव में सिर्फ एक वस्तु एक विधि __call__ और आशुलिपि के साथ __call__ के लिए पैदा कर रहे सिर्फ उदाहरण के नाम और कॉल करने के लिए तर्क युक्त कोष्ठकों के साथ इसे का पालन करने के लिए है के साथ एक समारोह को परिभाषित। चूंकि फ़ंक्शन पाइथन में प्रथम श्रेणी की वस्तुएं हैं, इसलिए वे गतिशील पैरामीटर के साथ फ्लाई पर बनाए जा सकते हैं (और इस प्रकार गतिशील तर्क स्वीकार करते हैं)।यह सजावटी कार्यों/कक्षाओं के साथ काम में आता है जिसे आप बाद में पढ़ेंगे।

अब के लिए मैं Official Python Tutorial पढ़ने का सुझाव देता हूं।

+0

यह बिल्कुल सही नहीं है। उदाहरण के लिए, आप एक फ़ंक्शन बना सकते हैं और उसके बाद '__call__' विशेषता बंदरपैथ करने का प्रयास कर सकते हैं, लेकिन यह इसे नियमित वाक्यविन्यास के साथ बुलाए जाने से नहीं रोकेगा। – ely

+0

बिल्ट-इन 'फ़ंक्शन' ऑब्जेक्ट्स के लिए, विवरण उदासीन हैं उदा। ['_PyFunction_FastCallKeywords'] (https://github.com/python/cpython/blob/2ebc5ce42a8a9e047e790aefbf9a94811569b2b6/Objects/call.c#L385) - मूल रूप से चीजें जो फ़ंक्शन ऑब्जेक्ट के बाइटकोड का निरीक्षण करती हैं और इसे तर्क और कीवर्ड तर्कों के साथ मूल्यांकन करती हैं एक स्टैक फ्रेम - '__call__' यांत्रिकी के ऊपरी भाग से गुजरने के लिए कभी नहीं रोकता। – ely

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