程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

python函数调用10种常见的语法错误

hfteth 2025-05-22 10:33:36 技术文章 6 ℃

在Python中,函数调用时的语法错误常常困扰开发者,尤其是初学者。以下是 10种最常见的函数调用语法错误,每种都附有错误示例和修正方法:


1. 缺少括号()

错误:忘记调用括号,函数不会执行

def greet():
    return "Hello"

print(greet)  # 输出:<function greet at 0x...>(函数对象本身)

修正


print(greet())  # 输出:Hello

2. 参数数量不匹配

错误:传递的参数数量与函数定义不符


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

add(1)  # TypeError: add() missing 1 required positional argument: 'b'

修正


add(1, 2)  # 输出:3

3. 关键字参数顺序错误

错误:关键字参数出现在位置参数前


def divide(numerator, denominator):
    return numerator / denominator

divide(denominator=2, 10)  # SyntaxError: positional argument follows keyword argument

修正

divide(10, denominator=2)  # 或 divide(numerator=10, denominator=2)

4. 未定义的默认参数

错误:默认参数在函数定义后声明

def multiply(a, b=scale):  # NameError: name 'scale' is not defined
    return a * b
scale = 2

修正

scale = 2
def multiply(a, b=scale):  # 先定义默认值
    return a * b

5. 可变对象作为默认参数

错误:列表等可变对象作为默认参数会保留状态

def append_to(item, lst=[]):  # 默认列表会持续累积
    lst.append(item)
    return lst

print(append_to(1))  # [1]
print(append_to(2))  # [1, 2](非预期结果)

修正

def append_to(item, lst=None):
    lst = lst or []  # 每次创建新列表
    lst.append(item)
    return lst

6. 混淆return和print

错误:函数内使用 print 但外部尝试获取返回值

def calc():
    print(1 + 1)  # 输出2,但返回None

result = calc()  # result是None

修正

def calc():
    return 1 + 1

result = calc()  # 输出:2

7. 错误使用生成器

错误:直接打印生成器对象而非迭代结果

def gen_numbers():
    yield from [1, 2, 3]

print(gen_numbers())  # 输出:<generator object...>

修正

print(list(gen_numbers()))  # 输出:[1, 2, 3]

8. 忽略*args和**kwargs的展开

错误:直接传递列表/字典到接受多参数的函数

def show(a, b):
    print(a, b)

params = [1, 2]
show(params)  # TypeError: show() missing 1 required positional argument: 'b'

修正

show(*params)  # 解包列表:输出 1 2

9. 误用作用域变量

错误:函数内修改全局变量未声明 global

count = 0
def increment():
    count += 1  # UnboundLocalError: local variable 'count' referenced before assignment

increment()

修正

count = 0
def increment():
    global count
    count += 1

10. 混淆方法调用与函数调用

错误:类方法未绑定实例调用

class Calculator:
    def add(self, a, b):
        return a + b

Calculator.add(1, 2)  # TypeError: add() missing 1 required positional argument: 'b'

修正

calc = Calculator()
calc.add(1, 2)  # 输出:3
# 或显式传递self:
Calculator.add(calc, 1, 2)

附:调试技巧

  1. 查看错误信息:Python的错误提示会明确指向问题位置(如 SyntaxError 或 TypeError)
  2. 使用 help():查看函数签名
help(print) # 显示参数说明
  1. IDE工具:PyCharm/VSCode会实时标记语法错误

掌握这些常见错误能节省大量调试时间!

最近发表
标签列表