• python函数 变量 递归


    1 语法

    #语法
    def 函数名(参数1,参数2,参数3,...):
        '''注释'''
        函数体
        return 返回的值
    
    #函数名要能反映其意义
    返回值数=0:返回None
    放回值数=1:返回object
    放回值数>1:返回tuple

    函数没有返回值 就返回None
    注意:函数执行到return后 下面代码就不会执行了


    2.定义函数的三种形式
    1、无参:应用场景仅仅只是执行一些操作,比如与用户交互,打印
    2、有参:需要根据外部传进来的参数,才能执行相应的逻辑,比如统计长度,求最大值最小值 3、空函数:设计代码结构
    形参即变量名,实参即变量值,函数调用时,将值绑定到变量名上,函数调用结束,解除绑定
    def calc(x,y):
      result = x * y
      return result

    c = calc(a,b)

    x,y是形参 不占用内存空间
    a,b是实参

    参数
    #1、位置参数:按照从左到右的顺序定义的参数
            位置形参:必选参数
            位置实参:按照位置给形参传值
    
    #2、关键字参数:按照key=value的形式定义的实参
            无需按照位置为形参传值
            注意的问题:
                    1. 关键字实参必须在位置实参右面
                    2. 对同一个形参不能重复传值
    
    #3、默认参数:形参在定义时就已经为其赋值
            可以传值也可以不传值,经常需要变得参数定义成位置形参,变化较小的参数定义成默认参数(形参)
            注意的问题:
                    1. 只在定义时赋值一次
                    2. 默认参数的定义应该在位置形参右面
                    3. 默认参数通常应该定义成不可变类型
    
    
    #4、可变长参数:
            可变长指的是实参值的个数不固定
            而实参有按位置和按关键字两种形式定义,针对这两种形式的可变长,形参对应有两种解决方案来完整地存放它们,分别是*args,**kwargs
         
         位置参数:x y b  
         默认参数 a
         args 元组 *[]
         kwargs 字典 **{}
    
    
    def foo(x, y, *args, a=1, b, **kwargs):
    print(x, y)
    print(args)
    print(a)
    print(b)
    print(kwargs)


    foo(1, 2, 3, 4, 5, b=6, c=7, d=8)
    1 2
    (3, 4, 5)
    1
    6
    {'d': 8, 'c': 7}
    
    

    3.全局变量 局部变量
    name = "全局变量"
    def chang_name():
    name = "局部变量"
    return name
    print(chang_name())

    name = "全局变量"
    def chang_name():
    #name = "局部变量"
    return name
    print(chang_name())

    name = "全局变量"
    def chang_name():
    global name
    name = "局部变量"
    return name
    print(chang_name())
    print(name)
    显示:
    局部变量

    全局变量

    局部变量
    局部变量

    总结:函数内部没有global关键字,局部优先级大于全局变量,可读,但对全局变量是可变对象进行内部操作
    有gbloal关键字,当前局部变量就是那个全局变量,可读可改
       规范:全局变量全部大写 局部变量全部小写

       global 改全局变量
       nonlocal 改上一级变量

       函数即变量
      

    4.递归
    函数在内部自己调用自己
    def cal(n):
    print(n)
    if int(n/2) == 0:
    return n
    return cal(int(n/2))

    cal(12)

    特性:
      1.必须有一个明确的结束条件
      2.每次进入更深一层递归时,规模比上一次减少
      3.递归效率不高
     

       




     
     
  • 相关阅读:
    创建Azure虚拟机之Azure Portal方式
    Windows平台启动与关闭Azure虚拟机
    Linux文件操作命令
    vue中使用图片裁剪cropperjs
    Linux权限管理之基本权限
    设计模式6大原则之【迪米特原则】
    设计模式6大原则之【接口隔离原则】
    设计模式6大原则之【单一职责原则】
    sql中的join
    Redis学习之:Redis的使用和优化
  • 原文地址:https://www.cnblogs.com/icemonkey/p/10428635.html
Copyright © 2020-2023  润新知