#每天一点Python——75 #函数调用参数函数内存分析
- '''
- 昨天我们学习了函数定义与创建
- 如图:定义一个函数模板
- def 函数名(输入参数):
- 函数体
- return x【可选】
- '''
- #今天我们来看一下创建的函数在使用是内容的变化【可变对象与不可变对象是否有影响】
- #我们先定义一个函数
- #为了使更方便理解,我们使用一个可变对象,不可变对象[可变对象我们使用列表,数字和字符串是不可变的对象]
- def hanshu(a1,a2):
- a1=a1+100
- a2.append(10)#我们使a2为可变对象列表,append是列表增加元素操作
- print('a1',a1)
- print('a2',a2)
- #为什么没有return,因为整个定义的函数执行完后没有带回来任何结果,所以return可以省略不写,或者只写return
- # 【如果有疑问建议学一下c语言,更能理解】
- #我们已经创建好了一个函数,为了使更方便理解,我们使用一个可变对象,不可变对象
- #调用函数:
- n1=11#数字为不可变对象
- n2=[11,22,33]#列表
- print(n1,type(n1))
- print(n2,type(n2))#查看n1,n2类型
- hanshu(n1,n2)#调用函数处理n1,n2【a1.a2形参,n1、n2为实参,位置相同下,可以不用相同】
- '''
- 发现使用函数hanshu输出如下:
- a1 111
- a2 [11, 22, 33, 10]
- '''
- print(n1,n2)#再输出原n1,n2
- '''
- 输出结果如下:
- 11 [11, 22, 33, 10]
- 发现n1数字没变
- n2列表变化了
- '''
- #形式参数和实际参数的名称可以不相同,但是位置不能变【这个叫位置传参】
- '''
- 综上所述:
- 在函数调用过程中,进行参数传递,如果是不可变对象,在函数体中的修改会不会影响原来实参值
- 可变对象会影响
- 上述:n1不可变,过了函数体,还是不变
- n2是可变对象,过了函数体,发生了改变
- '''