Определение и вызов функций в Python - PullRequest
2 голосов
/ 12 августа 2011

Я углубляюсь в определение и вызов функций, но не уверен, что понял концепцию. У меня есть оператор if / else в python, который перебирает папку, содержащую документы XML. В приведенном ниже сценарии у меня есть блок кода, который я должен перепечатывать после каждого условия if xmlfilename ==.

Я думаю, что если я определяю блок, начинающийся с if element.tag ==, как функцию, я могу просто вызывать его после каждого условного if xmlfilename ==. Мне кажется, я понял, как определить функцию, но не знаю, как бы я это назвал после возникновения условия if xmlfilename ==. Кто-нибудь может подсказать, как это сделать, или я не знаю, как работает определение и использование функций?

if xmlfilename == "Soil":

  if element.tag == "timeinfo":
    tree = root.find(".//timeinfo")
    tree.clear()

    if SINGLEDATE == "'Single Date'":

        child1 = ET.SubElement(tree, "sngdate")
        child2 = ET.SubElement(child1, "caldate")
        child3 = ET.SubElement(child1, "time")


    if MULTIPLEDATES == "'Multiple Dates'":                        

        parent = ET.SubElement(tree, "mdattim")

        for x, y in enumerate(Date2.split(";")):                         
            #print x, y
            replaceMD = y.replace('/', '-')

            if x == 0:
                #print x, y
                child1 = ET.SubElement(parent, "sngdate")
                child2 = ET.SubElement(child1, "caldate")
                child3 = ET.SubElement(child1, "time")              
                child2.text = replaceMD
                child3.text = "unknown"
            else:
                child1 = ET.SubElement(parent, "sngdate")
                child4 = ET.SubElement(child1, "caldate")
                child4.text = replaceMD

if xmlfilename == "Tree":
   # Do the same thing as above starting at "if element.tag == "timeinfo":"

1 Ответ

2 голосов
/ 12 августа 2011

Если функциональность точно такая же для "Soil" и "Tree", вы можете просто изменить оператор if следующим образом:

if xmlfilename == "Soil" or xmlfilename == "Tree":
    # The rest of your code

Хотя вы можете поместить свой блок кода в функциюнемного лучше организовать ваш код:

def read_xml_data():
    # Your code block

if xmlfilename == "Soil" or xmlfilename == "Tree":
    read_xml_data()

Функции еще более полезны, когда некоторые переменные в вашем блоке кода должны меняться от одного вызова к другому на основе какого-либо параметра.Например:

def read_xml_data(param):
   if param == "value1":
      # do one thing
   elif param == "value2":
      # do something else
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...