在Python中定义和调用函数

在Python中定义和调用函数,python,function,Python,Function,我正在潜入定义和调用函数,但我不确定我是否掌握了这个概念。我在python中有一个if/else语句,它循环遍历包含XML文档的文件夹。在下面的脚本中,我有一个代码块,如果xmlfilename==条件满足,我必须在每个条件后重新键入 我在想,如果我将从if element.tag==开始的块定义为一个函数,我可以在每个条件if xmlfilename==之后调用它,我想我已经找到了如何定义函数的方法,但是我不确定在出现if xmlfilename=条件之后如何调用它。有人能建议如何实现这一点吗

我正在潜入定义和调用函数,但我不确定我是否掌握了这个概念。我在python中有一个if/else语句,它循环遍历包含XML文档的文件夹。在下面的脚本中,我有一个代码块,如果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":"

如果
“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

如果您问了一个关于Python的问题,我建议将其标记为;)你还没说完最后一句话:“函数的另一个很好的用途是放代码”…嘿,是的,这正是我要找的。事实上,您的第二个示例有助于以相同的方式处理我的两个文件。感谢您采取额外的步骤:)如果以相同的方式处理多个文件,您还可以使用语法
If-xmlfilename in('Soil','Tree','etc'):