p27 p28 p29
B站上课链接
https://www.bilibili.com/video/av10447870/?p=27
概念
1.在局部环境中的多重函数绑定可以把绑定的procedure纯纯地看作文本text
2.求28
def square(x):
return x*x
def twoPower(x,n):
while n>1:
x=square(x)
n=n/2
return x
x=5
n=1
print(twoPower(2,8))
#这个地方就直接把2、8赋值到函数里面,并且输出出来
3.请特别注意在函数当中再次调用另一个函数格外有意思,只有在调用到别的函数时才会创造环境出来,用完了过后环境就会消失。
以下图片就是按照刚才twoPower(2,8)之后的动态变化
第二状态
后面同理······
4.上面在函数当中进行的另一个函数的使用而进行的局部绑定绝对不会影响全局变量的值,而全局变量的值也不会用于局部变量的绑定
5.注释
- 第一要有输入的参数解释
- 第二要解释我这个函数能做什么
通过注释,真正完成了黑盒的定义,用户可以真正将函数用到任何地方
6.函数完成了一个闭环
- 能够创造新的procedures并且作为python的内置功能使用
- 性质
- 分解性:可以将问题分解成模块,并让你能够在任何地方重新使用函数
- 抽象性:函数隐藏了细节,能够让用户专注完成更复杂的任务
7.将函数打包到.py文件中,我们就可以轻易地通过import来使用他们
8.点的用法“.”能够从.py包里面导入相应的函数
例如circle.area就是从circle.py文件中导入area函数
from xxx import *
#导入这个包里面的任何东西
应用习题
(这个题的答案有问题,我查询修改上来)
- 把一个数x快速转化为n次方
def square(x):
return x*x
def twoPower(x,n):
while n>1:
x=square(x)
n=n/2
return x
- 利用二分法,用函数定义查找任意正数幂次方根
3.修改上面的程序,使得能够求解任意大于1的数的幂次方根
4.再次修改,使得能够求解(0,1)间任意实数的任意幂次方根