江湖散人 发表于 2021-4-7 21:33:26

列表的问题

def saver(x=None):
        if x is None:
                x=[]
        x.append(1)
        print(x)

saver(2)
AttributeError: 'int' object has no attribute 'append'
直接报错了,咋回事啊?
它说int类型没有append这个函数。是这个意思吧,但是为什么呢?我又没有定义X是int类型

亢一飞 发表于 2021-4-7 21:40:24

里面要添加一个数组,如saver(x = [])

kogawananari 发表于 2021-4-7 21:42:21

saver()

弈秋呜呜呜 发表于 2021-4-7 22:08:59

本帖最后由 弈秋呜呜呜 于 2021-4-7 22:10 编辑

你调用saver函数的时候,传入了一个参数2,这时,2就被赋值给了x,即此时x=2,。此时你在函数内自然无法调用append方法
你把第四行代码加一个缩进就行了
def saver(x=None):
    if x is None:
      x = []
      x.append(1)
    print(x)

江湖散人 发表于 2021-4-7 22:32:09

弈秋呜呜呜 发表于 2021-4-7 22:08
你调用saver函数的时候,传入了一个参数2,这时,2就被赋值给了x,即此时x=2,。此时你在函数内自然无法调用 ...

好像是这么回事

江湖散人 发表于 2021-4-7 22:33:38

弈秋呜呜呜 发表于 2021-4-7 22:08
你调用saver函数的时候,传入了一个参数2,这时,2就被赋值给了x,即此时x=2,。此时你在函数内自然无法调用 ...

但是,我的意思不是这样的,我的意思是在传入X后,再添加一个1,你这就没有添加1这一步了

江湖散人 发表于 2021-4-7 22:35:45

亢一飞 发表于 2021-4-7 21:40
里面要添加一个数组,如

你这个加在哪?函数体里吗?还是调用前边?

弈秋呜呜呜 发表于 2021-4-7 22:35:59

江湖散人 发表于 2021-4-7 22:33
但是,我的意思不是这样的,我的意思是在传入X后,再添加一个1,你这就没有添加1这一步了

??你此时的x=2,是一个整形,怎么添加1。你的意思是x+1吗

江湖散人 发表于 2021-4-7 22:37:06

弈秋呜呜呜 发表于 2021-4-7 22:35
??你此时的x=2,是一个整形,怎么添加1。你的意思是x+1吗

不是的,我想当我传入2的时候,就会得到【2,1】这样的列表

弈秋呜呜呜 发表于 2021-4-7 22:40:26

江湖散人 发表于 2021-4-7 22:37
不是的,我想当我传入2的时候,就会得到【2,1】这样的列表

这样你看看,如果你传入的参数都是整形的话
def saver(x=None):
    if x:
      my_list = []
      my_list.append(x)
      my_list.append(1)
    print(x)

江湖散人 发表于 2021-4-7 22:44:04

弈秋呜呜呜 发表于 2021-4-7 22:40
这样你看看,如果你传入的参数都是整形的话

好吧,你这结果是对的。我照着视频里写的,但是结果却是不一样的。视频里用的2.65版本的python,我这个是3.8版本。不知道怎么回事。

弈秋呜呜呜 发表于 2021-4-7 22:46:03

江湖散人 发表于 2021-4-7 22:44
好吧,你这结果是对的。我照着视频里写的,但是结果却是不一样的。视频里用的2.65版本的python,我这个是 ...

3.0版本以前的Python和之后的版本语法上有一些差别,看课程最好看新版的

江湖散人 发表于 2021-4-8 10:02:59

弈秋呜呜呜 发表于 2021-4-7 22:46
3.0版本以前的Python和之后的版本语法上有一些差别,看课程最好看新版的

你有什么免费的课程推荐吗?

弈秋呜呜呜 发表于 2021-4-8 19:07:39

江湖散人 发表于 2021-4-8 10:02
你有什么免费的课程推荐吗?

免费课程就去B站搜索吧

江湖散人 发表于 2021-4-9 09:28:30

弈秋呜呜呜 发表于 2021-4-8 19:07
免费课程就去B站搜索吧

我看B 站也就那么回事,有可能是我不会搜吧
页: [1]
查看完整版本: 列表的问题