【python】初识函数

1. 函数的定义

  对代码块和功能进行封装和定义的就叫函数.

2. 函数语法

  def 函数名(形参):

    函数体

  函数名(实参)

 

  函数名的命名规则: 命名规则与变量一致.

3. 函数的返回值

  return,函数执行完毕,不会执行后面逻辑

    1. 如果函数中不写return,返回None

    2. 只写return, 返回None

    3.return返回值, 返回一个值

    4. return 值1,值2,... 返回多个值. 调用方接收到的是tuple元组

4. 函数的参数

  在函数执行的时候给函数传递的信息

  1. 形参: 

    1. 位置参数

    2. 默认值参数,当调用的时候不给传值使用默认值

    3. 混合使用. 顺序: 位置参数 > 默认值参数

  2. 实参: 

    1. 位置参数, 按照位置给形参赋值

    2. 关键字参数, 按照名称给形参赋值

    3. 混合参数, 顺序: 位置参数 > 关键字参数

  3. 动态参数

    位置参数的动态参数: *args

      可以传入任意的位置参数, 接受到的是tuple类型的数据

    关键字参数的动态参数: **kwargs

      动态接受关键字参数, 接收到的是dict类型的数据

    使用顺序: 位置,*args  >  默认值参数  >  **kwargs

    *表示聚合,所有的位置参数,聚合成元组. **聚合成字典

    在实参位置上给⼀一个序列,列表,可迭代对象前面加个*表示把这个序列按顺序打散.
    在形参的位置上的* 表示把接收到的参数组合成⼀一个元组 如果是⼀一个字典, 那么也可以打散. 不过需要用两个*

def fun(**kwargs):    
    print(kwargs) 
dic = {'a':1, 'b':2}
fun(**dic)

 

5. 函数的命名空间和作用域:

  命名空间: 

  在python解释器开始执⾏行行之后, 就会在内存中开辟⼀一个空间, 每当遇到⼀一个变量量的时候, 就 把变量量名和值之间的关系记录下来, 但是当遇到函数定义的时候, 解释器只是把函数名读入内 存, 表⽰示这个函数存在了了,  ⾄至于函数内部的变量量和逻辑, 解释器是不关⼼心的. 也就是说⼀一开始 的时候函数只是加载进来, 仅此⽽而已, 只有当函数被调⽤用和访问的时候, 解释器才会根据函数 内部声明的变量量来进⾏行行开辟变量量的内部空间. 随着函数执⾏行行完毕, 这些函数内部变量量占⽤用的空 间也会随着函数执⾏行行完毕⽽而被清空. 

    1. 内置命名空间: python解释器内部运行时的变量函数

    2. 全局命名空间: 我们在py文件中直接声明出来的变量.函数

    3. 局部命名空间: 在函数内部声明的变量和函数

  作用域:

    1. 全局作用域: 内置命名空间和全局命名空间

    2.局部作用域: 局部命名空间

    globals()方法: 查看全局作用域中名字

    locals()方法: 查看当前作用域中的名字

a = 10
def func():
    a = 20
    print(a)    # 就近原则
    print(globals())  # globals() 获取到全局作用域(内置,全局)中的所有名字
    print(locals())  # locals() 查看当前作用域中的所有名字
func()

 

6. 函数的global和nonlocal:

  global: 不再使用局部作用域中的内容了, 而改用全局作用域中的变量

def func():
    global a    # a 不再是局部变量. 是全局变量
    a = 30  # 把全局中的a重新赋值成30
    print(a)
func()
print(a)

  nonlocal: 在局部作用域中,调用离它最近的一层父级空间中的变量, 不会找全局

a = 10
def func1():

    def func2():
        nonlocal a  # 找局部作用域中 离他最近的那个变量引入进来
        a = 20
        print(a)
    func2()
    print(a)
func1()

 

7. 函数的嵌套

a = 1
def func_1():
    a=2
    def fun_2():
        def fun_3():
            nonlocal a
            a=4
            print(a)
        print(a)
        fun_3()
        print(a)
    print(a)
    fun_2()
    print(a)
print(a)
func_1()
print(a)

>>>函数打印结果: 1 2 2 4 4 4 1

 

8. 函数的注释

def chi(food, drink):
    """
    这里是函数的注释 , 先写一下当前这个函数是干什么的 , 比如我这个函数就是一个吃
    :param :param food: 参数 food 是什么意思
    :param :param drink: 参数 drink 是什么意思
    :return :return: 返回的是什么东东
    """    
    print(food, drink)    
    return "very good

 

posted @ 2018-07-13 17:06  清风吹杨柳  阅读(139)  评论(0编辑  收藏  举报