python函数与函数或变量重名会有什么结果

变量与函数同名

先变量后函数,识别为函数

add = 'this is var add'
def add(a,b):
    return  a + b;

sumstr = add + 'tail' #此行报错,程序停止
add('name1','name2')

报错

TypeError: unsupported operand type(s) for +: 'function' and 'str'

先函数后变量,识别为变量

def add(a,b):
    return  a + b;

add = 'this is var add'

sumstr = add + 'tail'
add('name1','name2') #此行报错,程序停止

报错

TypeError: 'str' object is not callable

函数与函数同名(同名函数)

名称相同,参数相同

#示例1
def foo():
    print("调用了foo1")

def foo():
    print("调用了foo2")

foo() # 输出 调用了foo2
#示例2
def foo(var):
    print("调用了foo1: " + var)

def foo(var):
    print("调用了foo2: " + var)

foo('test') #输出 调用了foo2: test

名称相同,参数不同

def foo():
    print("调用了无参foo" )

def foo(var1,var2):
    print("调用了双参foo"  )

def foo(var):
    print("调用了单参foo" )

#foo()  
#foo('test')
#foo('test',' foo')

只有 foo(‘test’) 调用正确, foo()foo(‘test’,’ foo’) 执行报错

# foo() 报错
TypeError: foo() missing 1 required positional argument: 'var'
#  foo('test',' foo') 报错
TypeError: foo() takes 1 positional argument but 2 were given

总结

函数与变量同名,识别为后定义类型;
函数与函数同名,识别为后定义函数;
查询同名函数资料时,看到有些文章说 python自动识别调用哪个函数,像上面例子中 foo(‘test’,’ foo’)应该会运行成功,对应定义的双参foo,不过本测试中调用失败,不知道是不是版本的问题(pycharm2021+python3.9.2);
本文章实际是为了测试同名操作,在实际应用中不必纠结无参多参,python中提供了默认参数可变参数的用法,一种定义即可多种调用。

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值