函数的学习

1.为什么学习函数

    函数的优势:1.代码重用

       2.保持一致性,易维护

       3.可扩展性

2. 函数和过程

  什么是过程,过程就是函数未返还函数值的之前都为过程。

3.函数的参数

函数的参数分为形参、实参、默认参数、位置参数、关键字参数。

1)什么是形参呢? 在定义一个函数的时候,形参在未调用的情况下时不占用内存空间,例如:

 

 def test(x,y)

    '函数的解释'

    代码块

    return res

 

这种情况下函数并不占用内容,所以为形参。

2)什么是实参,当调用代码的时候对函数上传参数是即为实参例如:

 def test(x,y)

    '函数的解释'

    代码块

    return res
test(1,2)

当中test(1,2)就是实参

调用函数的时候上传的值是唯一的不可以重复上传。

3)默认参数

在定义函数的时候就在函数内定义了一个参数的值这样的参数被称为默认参数。

4)位置参数和关键字参数

位置参数形参与实参位置一一对应;关键字参数:无需对应位置但是参数需要有关键字。

当位置参数和关键字参数混合使用的时候,位置参数在左侧关键字参数在右侧

4.局部变量与全局变量

全局变量: 

全局变量我们可以简单粗暴地理解是整个函数代码中顶头写的那个变量名例如:

NAME = 'gao' #这里的NAME 就是全局变量

def who():
    print(name)
   

局部变量:

局部变量是指在函数作用域中自己的定义的变量名,如果与全局变量的名字相同,在执行过程中优先找局部变量,找不到再调用全局变量:

name = 'gao'# 全局变量

def supname():
    name = 'chen' #局部变量
    print(name) #优先打印局部变量

global 与 nonlocal 的用法:

如何在函数的代码块中更改全局变量?这个时候我们需要用到关键字global

name = 'gao'#全局变量

def supname():
    global name #golbal关键字调取全局变量name 
    name = 'chen' #重新赋值全局变量name
    print(name)#打印 name  这个时候打印的name 应该是更改后的‘chen’

supname()

而nonlocal 的使用方式与golbal的方式相同,但是他的使用方式是更改上一级的变量主要使用在嵌套函数中。

如果函数内容中无global 关键字,优先读取局部变量,只能读取全局变量,无法对全局变量重新赋值,但是对于可变对象可以对内部元素进行操作。

对于可变对象可以对内部元素进行操作比如说全局变量是一个列表那我们可以对列表进行操作 添加减少元素:

如果函数中有global关键字,变量本质上就是全局哪个变量,可读取,可赋值。 

posted on 2018-11-12 10:28  Big"G"  阅读(101)  评论(0)    收藏  举报