Python学习常见错误

1. TypeError: not enough arguments for format string

TypeError: not enough arguments for format string

或者

TypeError: %d format: a number is required, not str

错误代码:

def personInfor(name, age, sex=1):
    if sex == 1:
        print("这个男孩儿的姓名%s,今年%d岁了" % name % age)
    else:
        print("这个女孩儿的姓名%d,今年%d岁了" % name % age)


personInfor(age=20, name="Lisa", sex=0)

正确表示

%d 表示number

%s 表示String

有两个参数的时候表示方法
“%d,%s”%{number,str}

def personInfor(name, age, sex=1):
    if sex == 1:
        print("这个男孩儿的姓名%s,今年%d岁了" % (name, age))
    else:
        print("这个女孩儿的姓名%s,今年%d岁了" % (name, age))


personInfor(age=20, name="Lisa")

2. python positional argument follows keyword argument

python positional argument follows keyword argument

当参数的位置不正确时,就会报上面的错误;
关键字参数必须跟随在位置参数后面! 因为python函数在解析参数时, 是按照顺序来的, 位置参数是必须先满足, 才能考虑其他可变参数.
谨记!!!!

错误代码:

def personInfor(name, age, sex=1, *lesson):
    if sex == 1:
        print("这个男孩儿的姓名%s,今年%d岁了,学了%s" % (name, age, lesson))
    else:
        print("这个女孩儿的姓名%s,今年%d岁了,学了%s" % (name, age, lesson))
        
//编译不通过
personInfor(age=20, name="Gerry", sex=0,"Math", "English", "History")  

正确代码:

personInfor("Lisa", 20, "Math", "English", "History")

3.TypeError: personInfor() got multiple values for argument 'age’

参数重复赋值

这里面在顺序参数已经为age赋值了,又通过关键字参数重复赋值,导致参数重复赋值。

TypeError: personInfor() got multiple values for argument 'age'

错误写法:

这里原本是想把 "Math", "English", "History"
赋值给*lesson,但是编辑器认为是在name, age, sex=1赋值了,造成2次赋值。

def personInfor(name, age, sex=1, *lesson):
    if sex == 1:
        print("这个男孩儿的姓名%s,今年%d岁了,学了%s" % (name, age, lesson))
    else:
        print("这个女孩儿的姓名%s,今年%d岁了,学了%s" % (name, age, lesson))
personInfor("Math", "English", "History", age=20, name="Gerry", sex=0)

正确写法:

def personInfor(name, age, sex=1, *lesson):
    if sex == 1:
        print("这个男孩儿的姓名%s,今年%d岁了,学了%s" % (name, age, lesson))
    else:
        print("这个女孩儿的姓名%s,今年%d岁了,学了%s" % (name, age, lesson))
personInfor("Lisa", 20, "Math", "English", "History")

结论:
不定长参数和关键字参数不能同时使用

4.Python错误:TypeError: ‘int’ object is not callable解决办法

   
TypeError: 'int' object is not callable

错误代码:

def sum(x):
    sum = 0

    def inner(x):
        nonlocal sum
        sum = 6

    if x == 1:
        return 1
    elif x == 2:
        return 1
    else:
        return sum(x - 1) + sum(x - 2)

错误原因和解决方法

其中函数名和参数名重复了,把重复的函数或参数名重命名即可

后续会持续更新补充

Kotlin技术专栏

长老说 这个公众号涉猎的很多,总有一款适合你。 和优秀为伴,做一个优秀的人
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值