在参数列表中使用字符串变量时,为什么不求值呢?

时间:2019-05-13 18:19:06

标签: python-3.7

我创建了一个函数来接受输入,并使用该输入写入SqLite3。

  def dataAdder(caller,dbFile, table, pKeyName, pKey, **other):
     print('~112',caller, dbFile, table, pKeyName, pKey, other)
     … lots more code

如果我按如下方式拼写**other的输入,它将起作用:

 dataAdder('addBounces','contacts.db','Output','GlRef',glRef.replace("'",'') , Email = email, EmailBounceReason =  bounceReason) 

对变量glRefemailbounceReason进行评估,并且我的dataAdder()处理正确

我代码的另一部分如下调用dataAdder()并正常工作:

   dataAdder('scanMembers','contacts.db','Output','GlRef', glRef, Email = 'No Email'), 

glRef的求值正确,并且print('~112', … )返回: ~112 scanMembers contacts.db Output GlRef 5687292 {'Email': 'No Email'}

因此变量glRef的求值正确为5687292,而另一本词典的内容正确了

如果在同一函数中我在调用stmt之前立即打印了一个变量dataAdder(),则会导致输出:Email = 'No Email' 然后将其使用如下:

   dataAdder('scanMembers','contacts.db','Output','GlRef', glRef, stmt)

这引起了:

   TypeError: dataAdder() takes 5 positional arguments but 6 were given.

唯一的变化是删除文本:Email = 'No Email'并替换为字符串变量stmt,而print()函数将其显示为:Email = 'No Email',在我看来与替换的文字相同。

我的结论是stmt尚未得到评估,但我不知道为什么。

我是正确的,还是我在做些愚蠢的事情,需要做些什么才能使它正常工作?

非常感谢

0 个答案:

没有答案