मैं वर्तमान में "बटन" को दो अलग-अलग पैरामीटर के रूप में कुछ फ़ंक्शन में पास करता हूं, जैसे:
button1 = {"title": "foo", "url": "bar" /.../ }
button2 = {"title": "foo", "url": "bar" /.../ }
somefunction(id, text, button1, button2)
def somefunction(recipient_id, message_text, button1, button2):
data = json.dumps({
"recipient": {
"id": recipient_id
},
"message": {
"attachment": {
"type": "template",
"payload": {
"template_type": "button",
"text" : message_text,
"buttons" : [
{
"type" : button1["type"],
"url" : button1["url"],
"title" : button1["title"]
},
{
"type" : button2["type"],
"title" : button2["title"],
"payload" : button2["payload"]
}
]
}
}
}
})
मैं किसी समारोह में json.dumps को फिर से कैसे लिख सकता हूं ताकि मैं नीचे दिए गए एक पैरामीटर के रूप में बटन भेज सकूं? अर्थात। मैं 'बटन' के माध्यम से कैसे पुनरावृति कर सकता हूं और सही जेसन-डंप को पार्स कर सकता हूं?
buttons = {
{"title": "foo", "url": "bar" /.../ },
{"title": "foo", "url": "bar" /.../ }
}
somefunction(id, text, buttons)
2 जवाब
आप 'बटन' की सूची वाला JSON भेज सकते हैं:
{
"buttons" :
[
{"title": "foo", "url": "bar" /.../ },
{"title": "foo", "url": "bar" /.../ }
]
}
और फिर इसे somefunction
में पार्स करें
आप इसे प्राप्त करने के लिए कीवर्ड-तर्क अनपॅकिंग के साथ-साथ कीवर्ड-केवल तर्कों का उपयोग कर सकते हैं (केवल तभी काम करता है जब आप पायथन 3 का उपयोग कर रहे हों):
import json
def somefunction(recipient_id, message_text, *, button1, button2):
return json.dumps({
"recipient": {
"id": recipient_id
},
"message": {
"attachment": {
"type": "template",
"payload": {
"template_type": "button",
"text" : message_text,
"buttons" : [
{
"type" : button1["type"],
"url" : button1["url"],
"title" : button1["title"]
},
{
"type" : button2["type"],
"title" : button2["title"],
"payload" : button2["payload"]
}
]
}
}
}
})
buttons = {
'button1' : {"title": "foo", "url": "bar", "type": "baz" },
'button2' : {"title": "foo", "url": "bar", "type": "type2", "payload": "aLOT"}
}
x = somefunction("ID", "text", **buttons)
सूचना मैंने अपने डिबगिंग उद्देश्यों के लिए json.dumps को वापस करने के लिए आपके फ़ंक्शन को बदल दिया है।
इन निर्माणों के लिए प्रलेखन यहाँ देखें:
https://www.python.org/dev/peps/pep-3102/ https://docs.python.org/3.5/tutorial/controlflow.html#unpacking-argument-lists
संबंधित सवाल
नए सवाल
python
पायथन एक बहु-प्रतिमान है, गतिशील रूप से टाइप किया हुआ, बहुउद्देशीय प्रोग्रामिंग भाषा है। यह एक साफ और एक समान वाक्यविन्यास सीखने, समझने और उपयोग करने के लिए त्वरित होने के लिए डिज़ाइन किया गया है। कृपया ध्यान दें कि अजगर 2 आधिकारिक तौर पर 01-01-2020 के समर्थन से बाहर है। फिर भी, संस्करण-विशिष्ट पायथन सवालों के लिए, [अजगर -२.०] या [अजगर -३.x] टैग जोड़ें। पायथन वेरिएंट (जैसे, ज्योथन, PyPy) या लाइब्रेरी (उदा।, पांडस और न्यूमपी) का उपयोग करते समय, कृपया इसे टैग में शामिल करें।
buttons
के लिए बाहरी कोष्ठक के रूप में[]
का प्रयोग करें।