• 函数之命名关键字


    命名关键字

    命名关键参数: 在函数定义阶段,写在* 和**可变长参之间的形参,称之为命名关键字
           在给命名关键字参数传值的时候,只能用关键字为其传值

    def func(x,y=1,*args,z=3,m,**kwargs):
        print(x,y)
        print(args)
        print(z,m)
        print(kwargs)
    func(1,2,1,2,3,4,5,6,7,78,8,9,0,z=69,m=999,o=666999,l = 999666)
    

      

    函数是第一类对象:

    函数名指向的值可以被当做参数传递

    1.函数名可以被传递

      正常的命名:

    name = 'yulong' # 声明一个变量名 name = 'yulong'
    x = name          # 重新指定x = name
    print(x,id(x))     # 输出x的值和id
    print(name,id(name)) # 输出name 的值和id  发现x 和name的值和id 都相同
    

     那么建立一个函数呢?

    def func():
        print('from func')
    print(func)  # <function func at 0x00000238D4C1C048>
    # print(id(func)) # 2443110891592
    f = func   # 给函数名指定一个值,让这个值当做函数传递
    f()    # 其实指向的也是函数在内存中的地址
    func()
    print(f)  # <function func at 0x0000020152A0C048>
    print(func)
    

      

    2、函数名可以被当做参数传递给其他函数

    def func():
        print("阿西吧")
    
    
    def index(age):
        # print(age)
        age()
        print('卡卡西')
    # index(2)
    index(func)   # 把函数func传递到index函数 那么func就等与age  那么age()就等与在index函数里面运行了func函数
    

      

    3、函数名可以被当做函数的返回值

    def ceshi():
        print('ceshi')
    
    def ceshi1():
        print('ceshi1')
        return ceshi        # 把ceshi函数名当做ceshi1的返回值
    res = ceshi1()          # 运行函数ceshi1  那么res就等与ceshi  res()和ceshi()同等功能能
    # res = ceshi()
    print(res)
    res()
    

      

    4、函数名可以被当做容器类型的参数

    def fuc():
        print('你大爷')
    
    print(fuc)  #输出的是这个函数的地址
    
    l= [1,2,fuc,fuc]  #输出也是函数的地址
    print(l)
    print(l[2]())
    cao = l[2]
    print(cao)
    cao()
    

      函数执行的顺序:

    函数的嵌套调用

    函数的嵌套定义:该函数用户可以通过传参的不同控制函数执行不同的功能

    def my_max(x, y):
        if x > y:
            return x
        return y
    
    def my_max_and_mini(a, b, c, d):
        res = my_max(a, b)
        res1 = my_max(res, c)
        res2 = my_max(res1, d)
        return res2
    

      嵌套示意图:

    空间名

    名称空间是什么? 名称空间就是一个放置名字的地方
    详细解释:存放的是变量名与变量值的内存地址得绑定关系的地方
    要想访问一个变量的值 必须先去名称空间中拿到对应的名字 才能够访问变量的值

    空间的理解图:

    名称空间的分类:
    1.内置空间
    2.全局空间
    3.局与空间局部空间
    1:内置空间就是python解释器定义好的名字,也可以说自带的
    2.全局空间就是文件级别的代码比如直接命名的a=1 那么a就是全部空间中的名字
    3、局部空间就是包含在全局空间里面的一个小块,好比函数体内所创建的名字,都属于局部空间的

    名称空间的生命周期:
    内置名称空间:

    只要python解释器已启动立马创建关闭python解释器的时候内置名称空间自动销毁

    全局名称空间:

    只要你右键运行py文件会自动创建py文件程序运行结束自动销毁

    局部名称空间:

    函数被调用的时候自动创建函数指向结束立即销毁(动态创建动态销毁)

    内置名称空间:

    只要python解释器已启动立马创建关闭python解释器的时候内置名称空间自动销毁

    全局名称空间:

    只要你右键运行py文件会自动创建py文件程序运行结束自动销毁

    局部名称空间:

    函数被调用的时候自动创建函数指向结束立即销毁(动态创建动态销毁)


    函数在定义阶段查找名字的顺序就已经固定了 不会因为函数的调用位置变化而改变(******)

    名字的查找顺序呢
    首先我们先确定我们的当前位置在哪?
    1.站在全局空间: 全局空间>>>>内置空间
    2.站在局部空间: 局部空间>>>>全局空间>>>>>内置空间

    示例:

  • 相关阅读:
    新版Unity的一些小玩意儿
    Three.js踩坑笔记
    Unity 接入腾讯云COS对象存储
    通过贝塞尔曲线编辑曲线
    利用ZXing.Net生成和识别二维码
    开源免费的安卓投屏工具-Scrcpy
    Unity Reflection Probe使用入门
    Unity VFX踩坑
    windows上通过自定义后缀文件启动Unity应用
    应用于Oculus Quest的VR头显应用
  • 原文地址:https://www.cnblogs.com/ioipchina/p/11167376.html
Copyright © 2020-2023  润新知