16 函数实操

继续练习吧少年

大纲

  • 局部变量和全局变量

  • 练习:哥赫巴德猜想

  • 练习:找第n大的数

  • 处理列表的注意点

局部变量和全局全量

在函数内部的变量是局部变量,它只在本函数范围内有效,在函数外部定义的变量是全局变量,它可以在程序中所有地方有效。

x = 10
y = 20
def redefine():
    x = 20
    print(x)
redefine()
print(x)
20
10

在上面函数的内部定义的x,虽然名字一样,但是只能在函数内部起作用,所以最终在函数外部打印x的时候,输出的还是10。

在上面这个函数中,内部重新定义了x和y的值,所以比较它们的大小是x比y大。

这个函数是正常使用形参,将实参x,y引入函数逻辑进行计算。

这个函数中没有形参,当函数内部要进行变量运算时,会首先看需要的变量在函数内有没有定义,如果没有的话,去找对应名字的全局变量。

哥赫巴德猜想

此猜想是指:任务一个偶数都可以表示成两个质数之和。比如8=3+5,下面我们来写一个程序,来验证4-100之间的偶数都可以分解成两个质数之和。

练习:找第n大的数

定义一个函数,利用它输入一组元素中第n大的数字。

处理列表的注意点

列表实际上是存放在内存中的一串元素,列表的名字可以认为是一个指向标签,修改一个列表可能会影响另一个。

通过id函数可以看到,x和y这两个列表实际上是同一个,修改了其中一个,另一个会自动修改。

如果我们要让两个列表不一样,需要使用copy命令。这样id就不一样了

下面我们来看一个在函数中使用列表的常见错误。函数的目的是在一个列表中插入一些数字。

上面两次调用中,都没有传递新的列表(使用默认列表 li),程序会调用定义函数时保存的默认参数(li);列表在append的时候会在 li原来的基础上append追加值,所以会产生以上结果.

Last updated