函数定义:def+关键字+小括号+冒号+换行缩进+代码块 定义一个函数
    def 函数名(参数列表):
    代码块
    函数调用:函数名加()即可调用该函数
    函数说明文档:函数内容的第一行可以用字符串进行函数说明
    参数的分类:必选参数、默认参数[缺省参数]、可选参数、关键字参数
    默认参数(缺省参数):在调用的时候如果未赋值,就会用定义函数时给定的默认值,始终存在于参数列表中的尾部
    可变参数(当参数的个数不确定时使用)
    def get(args):
    代码块
    #args输出为一元组
    关键字可变参数 **来定义 在函数体内参数关键字是一个字典类型 key是一个字符串
    def Test(
    args,*kwargs):
    代码块
    可选参数必须放到关键字可选参数之前
    可选参数:接收的数据是一个元组类型 调用Test(
    args元组名)
    关键字可选参数:接收的数据是一个字典类型

    函数返回值
    概念:函数执行完以后会返回一个对象,如果在函数的内部有return就可以返回实际的值,否则返回None
    类型:可以返回任意类型,返回值类型应该取决于return后面的类型
    用途:给调用方返回数据
    在一个函数体内可以出现多个return值,但是肯定只能返回一个return
    如果在一个函数体内执行了return,意味着函数执行完成就退出了,return后面的代码语句将不会执行
    函数的分类:根据函数的返回值和函数的参数

    局部变量 就是在函数内部定义的变量(作用域仅仅局限在函数的内部),不同的函数可以定义相同的局部变量,且互不影响
    当全局变量和局部变量出现重复定义的时候,程序会优先执行使用函数内部定义的变量
    如果在函数的内部要想对全局变量进行修改的话,必须使用global关键字进行声明
    不可变类型:一旦确定就不能改变,当改变时会重新开辟新的空间,即重新赋值,如int类型、元组类型

    在python当中,万物皆对象,在函数调用的时候,参数传递是通过对象引用来完成,可用这个思想去把控在函数内部的处理是否会影响到函数外部的数据变化
    匿名函数
    python中使用lambda关键字创建匿名函数,所谓匿名即这个函数没有名字不用def关键字创建
    标准的函数
    lambda 参数1,参数2,参数3:执行代码语句(表达式) 冒号后面的表达式有且只有一个,且必须是表达式
    例:test=lambda x,y : x+y ->def test(x,y) return x+y
    test(1,2)
    匿名函数自带return,返回的结果就是表达式计算的结果
    直接调用 rs=(lambda 参数:表达式)(实参)
    三元运算
    if a:
    b
    else:
    c
    等效于表达式:b if a else c 双分支的简写 result=值1 if 条件 else 值2
    三元运算的表达式可以放在lambda中,它们能够在lambda函数中来实现选择逻辑
    如:greater=lambda x,y: x if x>y else y

    递归函数:自己调用自己,必须有一个明确的结束条件

    内置函数
    所有内置函数官网文档 https://docs.python.org/3/library/functions.html

    常用数学运算函数
    abs():返回数字绝对值
    round():返回浮点数x的近似值 round(x,n):保留n位小数
    pow():返回x的y次方的值
    divmod():返回商和余数 a//b和a%b
    max():返回最大值 参数:可序列列表
    min():返回最小值
    sum():返回和
    eval()/exec():返回表达式计算结果 执行一个字符串表达式 可以执行外部定义的函数,要加括号
    函数eval()的作用是去掉字符串最外侧的引号,并按照Python语句方式执行去掉引号后的字符内容。

    类型转换函数
    int()
    float()
    str():转为字符串
    ord():返回字符对应的 ASCII 数值,或者 Unicode 数值
    chr():数字转字符
    bool()
    bin():转二进制0b
    hex():转十六进制0x
    oct():转八进制0o
    list():将元组转列表
    tuple():将列表转元组
    dict():创建字典
    bytes():转为字节数组
    set(x)函数将其他的组合数据类型变成集合类型,返回结果是一个无重复且排序任意的集合。

    序列操作函数(字符串、元组、列表)
    all():判断元素是否都为true 除了0、空、flase都算true 空元组、空列表返回值为true 空:’ ‘
    any():判断元素是否全为false 如果有一个为true,则返回true
    第一个元素为一个空格,第二个元素为空,即null,第一个元素为真,第二个元素为假
    sorted():对可迭代对象排序 sort是应用在list上的方法,直接修改的原始对象 sorted是创建新的 改升/降序reverse=true/false
    reverse():反向列表中元素 无返回值
    range():创建一个整数列表,一般用在for循环中 range(start,stop,step)前闭后开
    zip():将元素打包为元组,返回由元组组成的列表,会把序列中对应的索引位置的元素存储为一个元组
    enumerate():枚举 将一个可遍历的数据对象组合为一个索引序列,同时列出数据和数据下标,一般用在for循环中

    ramdom():生成一个[0.0,1.0)之间的随机小数。
    uniform(a,b):生成一个[a,b]之间的随机小数。
    random.seed()函数初始化随机数种子,默认值是当前系统时间,种子相同,产生的随机数也相同,方便程序复现。

    image.png