变量与函数同名
先变量后函数,识别为函数
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中提供了默认参数和可变参数的用法,一种定义即可多种调用。