python - Special use of args / kwargs -
मुझे कुछ ऐसा करने की आवश्यकता है:
def func1 (a, * args, B = "BBB", ** kwargs): मुद्रित "a =% sb =% s args =% s kwargs =% s"% (a, b, args, kwargs) तो ऐसा कॉल करना:
func1 ("एएएए", एच = "एचएचएच", जे = "जे जे जे") उत्पादन का उत्पादन: < / P>
a = aaaa b = बीबीबी आर्ग्स = () kwargs = {'h': 'hhh', 'j': 'jjj'} लेकिन * आर्ग्स के बाद एक डिफ़ॉल्ट नाम का तर्क देना संभव नहीं है ( SyntaxError: अमान्य सिंटैक्स ) - यह क्यों अनुमति नहीं है?
- क्या इसे लागू करने के लिए कोई पठनीय तरीका है? एकमात्र तरीका मुझे पता है
b = kwargs.pop ("b", "BBB") , लेकिन यह बहुत पठनीय नहीं है। मैं फ़ंक्शन कॉल परिभाषा में इसे पसंद करता हूं, जहां यह संबंधित है: यह एक पैरामीटर है जो हमेशा के पास एक मान होता है, या तो कोई डिफ़ॉल्ट मान या उपयोगकर्ता द्वारा दिये गए मान। < / Ul> संपादित करें
मैं b के सामने args : def func1 डाल सकता / सकती हूं ए, बी = "बीबीबी", * एल्ग्स, ** क्वार्ज): मुद्रित करें "a =% sb =% s args =% s kwargs =% s"% (a, b, args, kwargs) लेकिन इसका मतलब यह होगा कि यह कॉल:
func1 ("एएएए", "सीसीसी", एच = "एचएचएच", जे = "जे जे जे") < / प्री> "सीसीसी" से बी को निर्दिष्ट करता है, जो मुझे नहीं चाहिए। मैं चाहता हूं कि b को एक नामित आरजी होना चाहिए, कोई प्रचलित तर्क नहीं।
यह पायथन 3 () में बिल्कुल मान्य है; कीवर्ड-केवल तर्कों को शुरू किया। पायथन 2.x में आपको kwargs.pop , या उपयुक्त डेकोरेटर का उपयोग करना जारी रखना होगा: -
-
Comments
Post a Comment