show | version | enable_checker |
---|---|---|
step |
1.0 |
true |
- 上次说到对于程序员来说
- 函数就是封装好的一个套路
- 这封装好的套路也可以接收参数
- 就像洗衣机、电饭煲一样可以设定一些模式
- 传递的参数有两部分两种
- 函数定义的时候,给出的是一个形式上的样子,是形参(parameter)
- 函数调用的时候,给出的是具体的实际参数的值,是实参(argument)
- 调用的时候完成一个赋值的过程
- 把实参的值赋给形参
- 除了可以传递模式类的参数之外
- 实参可以传递具体的数值么?🤔
- 我们定义一个测量体温的函数
- 根据体温得出结论
- 不是直接得出结论
- 因为函数不是固定输出的
- 只有空才能有活动的空间
- 如果都是死疙瘩
- 就跑不起来了
- 我们来具体定义这个函数
- 我们定义了测试体温的函数
- 然后如何调用呢?
- test(39)
- test(37)
- 这个参数是37他到底传递的什么呢?
- 函数调用的时候
- 发生了参数赋值
- 把实参赋给形参
- temperture = 37
- 直接赋值!!!
- 赋值之后
- 用37这个值新生成了一个int类的对象
- 然后用temperature对这个对象进行引用
- 等等!!
- int型的变量是一个对象么?
- int型变量确实是一个对象
- 变量名是这个对象的引用
- 如果给的实参是一个变量
- 而不是一个数字
- 又会如何呢?
- 为了清晰地看到这个传递过程
- 我们在函数当中添加了一些输出
- 执行结果为
- 在调用test函数的时候
- test函数的形式参数temperature被赋了一个具体的实际参数(arguement)
- 这个实参就是my_temp
- 这个调用过程中
- 有一个赋值过程
- 就像一般的赋值一样
- 两个变量名my_temp、temperature指向的是同一个内存中的对象
- 虽然这是一个整型变量
- 但是python将他封装成了int型的变量
- 如果我在函数体里面
- 把这个变量的值给改了
- 函数执行前先赋值
- 运行结果为
- 这如何理解?
- 第6行:my_temp指向新分配的int型对象,地址9790112
- 第7行:在主函数中输出my_temp的地址
- 第8行:函数调用,参数传递进函数
- temperature = my_temp
- 两个变量
- 都是int型
- 都指向址9790112
- 第2行:进入函数,输出temperature的id
- 第3行:temperature指向另一个新分配的int型对象
- 地址为9790144
- 第9行:完成函数调用
- my_temp对象依然指向9790112这个地址
- 第6行:my_temp指向新分配的int型变量,地址9790112
- 第7行:在主函数中输出my_temp的地址
- 如果温度是一个浮点型的变量呢?
- 修改后结果
- 在函数内部确实被替换为了一个整型数字对象的引用(来自小数字池)
- 模式没有变
- 先总结去吧
- 这次我们分析了函数中参数赋值的过程
- 在调用参数的时候
- 完成了一个赋值的过程
- 是把实参(arguement)赋给形参(parameter)的过程
- 赋值还是比较麻烦的
- 如果参数是一个容器又会如何呢?
- 我们下次再说👋