函数的初识别

1.函数

  函数是对功能的封装

  语法:

  def     函数名()

       函数体

  调用:

  函数名()

2.返回值

  return:在函数执行的时候,如果遇到return,直接返回

  1.如果函数什么都不写,不写return,没有返回值,得到的是None

  2.在函数中间或者末尾写return,返回值是None

  3.在函数中写return值, 返回一个值

  4.在函数中可以返回多个值,return 值1,值2,值3 ....., 接受的是元组

3.参数

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

  形参:函数声明的位置的变量

  实参:函数调用的时候给的具体的值

  传参:把实参传给形参的过程

  1.实参:

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

    2.关键字参数,按照形参的名字给形参传值

    3,.混合参数,既用位置参数,也用关键字参数 (先位置参数在关键字参数

  2.形参:(顺序:位置参数=>*args=>默认值参数>=**kwargs)

    1.位置参数

    2.默认值参数  (先位置后默认值)

    3.动态参数

      *  在这里表示接受位置参数的动态传参,接收到的是元组

      def chi(*food):  # 参数名是food   *表示动态传参

        print(food)

      ** 在这里表示接受关键字参数的动态传参

      def chi(**food)

        print(food)

 

函数的注释

def func(a,b):
    '''
    这个函数用于计算a和b的和
    :param a:第一个数据
    :param b:第二个数据
    :return:返回的是两个数的和
    '''
    return a + b
print(func.__doc__)   # document文档

 

打撒与聚合

def func(*food): # 聚合,位置参数
    print(food)
lst = ['鸡蛋','煎饼果子','猪蹄','冰淇淋','盖浇饭']
func(*lst)  # 打撒,把list,tuple,set,str进行打撒迭代
def func(**kwargs): # 聚合成关键字参数
    print(kwargs)
dic = {'name':'dabai','age':'20'}
func(**dic)  # 打撒成关键字参数

 

命名空间

  1.内置名称空间

  2.全局名称空间

  3.局部名称空间

  作用域:

    1.全局作用域:内置+全局

    2.全局作用域:局部(函数被调用)

  globals()  查看全局中的内容

  locals()  查看当前作用域中的内容

 

函数嵌套

  函数可以互相的嵌套

a = 1
def fun_1():
    a = 2
    def fun_2():
        nonlocal a
        a = 3
        def fun_3():
            a = 4
            print(a)
        print(a)
        fun_3()
        print(a)
    print(a)
    fun_2()
    print(a)
print(a)
fun_1()
print(a)
# 结果是1,2,3,4,3,3,1
a = 1
def fun_1():
    a = 2
    def fun_2():
        global a
        a = 3
        def fun_3():
            a = 4
            print(a)
        print(a)
        fun_3()
        print(a)
    print(a)
    fun_2()
    print(a)
print(a)
fun_1()
print(a)
# 结果是1,2,3,4,3,2,3

 

 

4.global和nonlocal关键字

  global:在局部访问全局中的内容

  nonlocal:在局部寻找外层函数中离他最近的那个变量

 

posted on 2019-05-08 09:28  Little_Raccoon  阅读(261)  评论(0编辑  收藏  举报