TypeError: ‘str‘ object is not callable的错误原因

本文介绍了Python编程中遇到的TypeError错误:'str' object is not callable。错误产生的原因是自定义变量str与内置字符串类型名称冲突。博主分享了代码示例,解释了错误原因并提供了修复方法,提醒开发者注意避免使用内置类型名作为变量名,以防止类似问题发生。
摘要由CSDN通过智能技术生成

今天写代码遇到了一个问题TypeError: 'str' object is not callable

错误原因1

给大家看看我的代码:(代码功能说明:用正则表达式匹配数字并对数字进行+1操作,然后替换原数字)

str='literal books=1000'
def add1(match):
    val=match.group()
    num=int(val)+1
    return str(num)
info=re.sub(r'\d+',add1,str)
print info
#literal books=1001

为什么会出错呢?百度了一下,看到有个国外网站说

You are redefining what str()

means. str is the built-in Python name of the string type, and you
don’t want to change it.Use a different name for the local variable,
and remove the global statement.

翻译过来意思是,str()是系统自带的,你不能在用它的时候自己同时定义一个别的叫做str的变量,这样会冲突。

于是我把自定义的str变量改成了别的名字,str1,代码就通过了。

这是因为如果我自定义叫str的变量,str会被系统识别成字符串转换函数,这样的函数被传进sub函数的参数里面,is not callable,也就是说,是不可调用的。大家检查一下自己的代码是不是也有类似的错误呢?

错误原因2

在Python中,函数其实是一个对象,并且所有的函数都是可调用对象。一个类实例也可以变成一个可调用对象,只需要实现一个特殊方式__call__().

所以,当出现报错 XXX is not callable的时候,很有可能是你正在调用一个不能被调用的变量或对象,具体表现就是你调用函数、变量的方式错误。

原文链接:https://blog.csdn.net/lifelegendc/article/details/55051374

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值