Python 错误str';对象不可调用
我不明白我是如何得到这个错误的,有人可以帮助我:Python 错误str';对象不可调用,python,python-3.x,Python,Python 3.x,我不明白我是如何得到这个错误的,有人可以帮助我: import time import os import xlwt from datetime import datetime num = 0 def default(): global num global model global partnum global serialnum global countryorigin time.sleep(1) print ("Model: ")
import time
import os
import xlwt
from datetime import datetime
num = 0
def default():
global num
global model
global partnum
global serialnum
global countryorigin
time.sleep(1)
print ("Model: ")
model = input()
print ()
print ("Part number: ")
partnum = input()
print()
print ("Serial Number: ")
serialnum = input()
print ()
print ("Country of origin: ")
countryorigin = input()
print ("Thanks")
num = num+1
xlwt()
def xlwt():
print ("Do you want to write to excel?")
excel = input()
if excel == "y" or "yes":
excel()
else:
print ("Bye")
sys.exit()
def excel():
print ("Enter a spreadsheet name")
name = input()
wb = xlwt.Workbook()
ws = wb.add_sheet(name)
ws.write(0,0,"Model")
ws.write(0,1,"Part Number")
ws.write(0,2,"Serial Number")
ws.write(0,3,"Country Of Origin")
ws.write(num,0,model)
ws.write(num,1,partnum)
ws.write(num,2,serialnum)
ws.write(num,3,countryorigin)
ws.save(name)
def custom():
print()
def main():
print ("Welcome")
print ()
print ("The deafult catagories are: Model, Part Number, Serial Number,"
"country of origin")
time.sleep(1)
print()
dorc()
def dorc():
print ("Would you like to use the default or custom?")
dorc = input ()
if dorc == "default":
default()
elif dorc == "custom":
custom()
else:
print ("Invalid input")
dorc()
main()
当我执行此操作时,我得到一个错误str对象不可调用
您有一个名为excel()
的函数和一个名为excel
的局部变量,并为其分配了一个字符串
您不能这样做,而期望该函数仍然可用。本地名称excel
屏蔽了全局名称,因此excel()
尝试调用input()
返回的字符串结果
重命名变量:
print ("Do you want to write to excel?")
choice = input()
if choice in ("y", "yes"):
excel()
请注意,我还更正了您的变量测试excel==“y”或“yes”
并不像您认为的那样,编程语言逻辑与英语语法规则并不完全相同。看
接下来,对于导入的模块和函数,使用名称xlwt
也会犯同样的错误:
import xlwt
# ...
def xlwt():
# ...
模块和函数都是全局名称,名称只能指向导入的模块或创建的函数,不能同时指向两者。将函数重命名为其他函数,否则以下行也将失败:
wb = xlwt.Workbook()
因为
xlwt
绑定到您的函数,因为该函数是在模块导入之后定义的。excel=input()
,然后excel()
。将函数名与变量混合我现在已经解决了这个问题,谢谢:excel wb=xlwt.Workbook()中的第43行“这个错误是什么?”AttributeError:“function”对象没有属性“Workbook”@LeoRogers:Python程序中的每个名称都位于同一命名空间中。xlwt
不能既是导入的模块又是创建的函数。请重命名函数。