因此,我正在尝试编写一个python程序来集成到一个更强大的内部开发的python应用程序中。我正在编写的这个程序需要生成一个xml文档,并用存储在不同模块中另一个函数的变量中的数据填充字段
当我意识到不能让两个程序互相导入(主程序需要调用xmlgen.py来生成xml文档,而xmlgen.py需要利用主程序中的变量来生成该文档)之后,我有点不知所措,不知道该怎么做
在下面的示例中,xmlgen.py需要使用Faxer.py中sendFax函数的变量。Faxer.py需要调用xmlgen.py来生成文档
xmlgen.py中的代码段:
from lxml import etree
from Faxer import coverPage, ourOrg, ourPhonenum, ourFaxnum, emailAddr, sendReceipt, webAddr, comments
from Faxer import sendFax
def generateXml():
#xml file structure
root = etree.Element('schedule_fax')
...
~ A bunch of irrelevant xml stuff
...
grandchild_recipient_name = etree.Element('name')
grandchild_recipient_name.text = cliName
child_recipient.append(grandchild_recipient_name)
现在主程序的一部分,我需要使用来自
def sendFax(destOrg, destFax, cliName, casenum, attachments, errEAddr, comment, destName):
creds=requests.auth.HTTPBasicAuth(user,password)
allData=''
allData+='<schedule_fax>\n'
allData+='<cover_page>\n'
allData+='<url>'+prepXMLString(coverPage)+'</url>\n'
allData+='<enabled>true</enabled>\n'
allData+='<subject>'+prepXMLString(cliName)+' - case # '+str(casenum)+'</subject>\n'
现在,当我尝试从Faxer.py导入sendFax函数时,我无法从函数中调用任何变量,例如
grandchild_recipient_name.text = sendFax.cliName
不起作用。我做错什么了??我不是python大师,事实上我对这一切都很陌生,所以我希望这是一件简单的事情。我是否应该将所有内容都转储到主程序中的一个新函数中
如上所述,您试图引用cliName,就好像它是函数的一个属性一样。如果sendFax是一个类,这将更接近正确,但那是另一个主题。您提供的代码段只是一个函数定义。它不能保证这个函数曾经被实际使用过,也不能让您知道cliName实际上是什么,cliName只是函数internallt用来描述作为输入提供的第三个值的名称
您需要做的是找到sendFax的实际使用位置,而不是它的定义位置。然后看看传递给它的变量被称为什么。将变量传递到函数中有两种方法:按位置和按名称。如果变量是通过pposition传递的,您会发现如下情况:
其中的第三个变量将成为函数中的cliName
如果通过名字传递,你会看到
又一次,另一个名字变成了cliName
根据课程结构的不同,您可以从课程中引用另一个名称并获得所需的价值
但这只在传真机运行并完成时才起作用,并且只分配了一个或另一个名称的值。如果Faxer遍历了许多其他名称的值,或者在作为导入调用时运行不合理,那么您需要一种更复杂的方法
相关问题 更多 >
编程相关推荐