zoukankan      html  css  js  c++  java
  • 函数进阶

    动态传参:

      动态位置参数(万能传参):*args    获得结果是一个元祖  顾名思义就是可以接受所有位置参数    如果有位置参数必须放在放在动态位置参数前面

      动态关键字传参:**kwargs  获得一个字典    可以接收所有关键字参数   因此所有关键字参数必须放在动态关键字参数前面

    #排序:位置参数>动态位置参数>关键字参数>动态关键字参数

    lst=[1,2,3,4]

    def func(*args)   #聚合

      print(*args)   #1,2,3,4   把聚合的结果打散

    func(*lst)            #(1,2,3,4)   按顺序解包  func(1,2,3,4)

    dic={"name":"alex","age":18}

    def func(**kwargs)

      print()             #这块可以用*args,但是不可以用**kwargs

    func(**dic)

    名称空间:

      全局名称空间:我们直接在py文件中,函数外声明的变量属于全局命名空间

      局部命名空间:在函数中声明的变量会放在局部命名空间,也就是函数里面的是局部空间

      内置命名空间:内置的就是python本身自带的东西,存放在python解释器中为我们提供的名字,list,tuple,str,int这些都是内置函数命名空间

    # a = 10       # 
    #
    # def func():  # 函数里的是局部空间
    #     b = 5
    #     print(b)
    #
    # func()  

    加载顺序:内置>全局>局部

    取值顺序:局部>全局>内置

    作用域:就是作用范围,按照生效范围来看分为全局作用域和局部作用域

      全局作用域:在整个文件的任何位置都可以使用     全局命名空间+内置命名空间

      局部作用域:在函数内部可以使用    局部命名空间

    globals():查看全局作用域中的内容

    locals(): 查看局部作用域中的变量和函数信息

    函数的嵌套:

    global:不在局部创建这个变量,而是直接使用全局的变量

    例如;

    a=100
    def func():
        global a    #加了个global表示不在局部创建这个变量了,而是直接使用全局的a
        a=28
        print(a)
    func()
    print(a)  

    nonlocal: 改变最近的父级变量,如果上级没有能够改变的就继续向上走,直到最外层函数就停止

    a=10
    def func1():
        a=20
        def func2():
            nonlocal a
            a=30
            print(a)  #30
        func2()
        print(a)    #30
    func1()
    

    函数名的本质(函数是第一类对象的概念)

    1)函数名可以赋值

    def f():
        print(123)
    
    f()
    a=b=c=abc=f   #函数名的赋值
    ##a=b=c=abc=f()   拿到的是func的返回值
    abc=f
    a=f
    b=f
    c=f
    f()
    abc()
    a()
    b()
    c()
    

     2) 函数可以作为容器的一项可以作为容器,容器类型:列表,元祖,字典,集合

    def f1():
        print("哇哈哈")
    
    def f2():
        print('qqxing')
    
    l=[f1,f2]
    print(l)
    f1_func=l[1]
    f1_funcfunc()
    l[1]()
    for f in l:
        f()
    

     3) 函数名可以作为参数

    def login():
        print("欢迎")
    def index(auth):
        auth()
        print("欢迎来首页")
    
    index(login)
    

      4)函数名可以作为一个函数的返回值

    def func()
    	pass
    func 是函数名
    func()是函数调用
    func()的得到的结果就是返回值
    

      

  • 相关阅读:
    Python—格式化输出
    拨开Python迷雾
    彻底搞懂Python切片操作
    CodeMirror教程,CodeMirrorAPI中文信息
    PHP header() session_start() 函数前为什么不能有输出?
    PHP time() date() strtotime()日期函数总结
    LAMP专业术语的规范书写格式
    经验之谈
    PHP接口对方(C#)接收不到数据?ContentLength=1
    jQuery判断checkbox是否选中?操作checkbox(不)选中?
  • 原文地址:https://www.cnblogs.com/lilei1996/p/9890172.html
Copyright © 2011-2022 走看看