• day06_函数


    def function_name():

      函数体

    函数调用()

    不定长参数:

      1:单个元素

    def add(*args):
        sum=0
        for i in args:
            sum+=i
        print(sum)
    add(2,4,2,9)

      2:类似于字典中键值对的不定长形式

    def print_info(*args,**kvargs):  #这两个位置不能变 如果 #def print_info(sex=man,*args,**kvargs):  #这三个位置不能变
        print(args)
        for i in kvargs:
            print('%s:%s'%(i,kvargs[i]))
    print_info('lixiw',23,name='dss',age=40,len=109)    #print_info('lixiw',23,name='dss',age=40,len=109)

                                    #'sss'被默认参数占据('lixiw'不会被打印),第一行打印结果  (23,)

     关于不定长参数的位置:*args放在左边,**kvargs放在右边

     关于返回值return

      1.函数里如果没有return,会默认返回一个None

      2.如果return多个对象,那么python会把多个对象封装成一个元组返回

    作用域:

    • L:local,局部作用域,即函数中定义的变量;
    • E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的;
    • G:globa,全局变量,就是模块级别定义的变量;
    • B:built-in,系统固定模块里面的变量,比如int, bytearray等。 搜索变量的优先级顺序依次是:作用域局部>外层作用域>当前模块中的全局>python内置作用域,也就是LEGB。

     

     

     

     

     

     

     

    global关键字 

    当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了,当修改的变量是在全局作用域(global作用域)上的,就要使用global先声明一下,代码如下:

    count = 10
    def outer():
        global count    #count是全局变量,内部需要使用,要加global
        print(count) 
        count = 100
        print(count)
    outer()
    #10
    #100

    nonlocal关键字 

    global关键字声明的变量必须在全局作用域上,不能嵌套作用域上,当要修改嵌套作用域(enclosing作用域,外层非全局作用域)中的变量怎么办呢,这时就需要nonlocal关键字了

    def outer():
        count = 10
        def inner():
            nonlocal count
            count = 20
            print(count)
        inner()
        print(count)
    outer()
    #20
    #20 

    (1)变量查找顺序:LEGB,作用域局部>外层作用域>当前模块中的全局>python内置作用域

    (2)只有模块、类、及函数才能引入新作用域;

    (3)对于一个变量,内部作用域先声明就会覆盖外部变量,不声明直接使用,就会使用外部作用域的变量;

    (4)内部作用域要修改外部作用域变量的值时,全局变量要使用global关键字,嵌套作用域变量要使用nonlocal关键字。nonlocal是python3新增的关键字,有了这个 关键字,就能完美的实现闭包了。 

    函数f与f():
      1.函数名可以进行赋值(变量)

      2.函数名可以可以作为函数参数,还可以作为函数的返回值

    递归:

      1.调用自身函数

      2.有一个结束条件

    斐波那契数列

  • 相关阅读:
    使用yum 安装时出现 : Loaded plugins: fastestmirror
    三级店铺发布店铺悬赏必看
    专属包发布说明
    发布店铺内容(原封不动的直接复制内容发布就可以)
    tomcat 专属图片文件夹配置
    java websocket时时通信
    lua面向对象
    jenkins 查看请求调用栈信息
    从一个简单的例子看spring ApplicationContext上下文隔离
    java异常查看利器之使用 jvmti 的Callback_JVMTI_EVENT_EXCEPTION 事件查看异常
  • 原文地址:https://www.cnblogs.com/xin-zhizhu/p/13067487.html
Copyright © 2020-2023  润新知