python笔记(三) 函数 高阶函数

函数

1. 什么是函数

在项目的开发中 有一些代码块是反复使用 就会封装起来 封装起来的我们就叫函数

2. 为什么定义函数

  1. 优点:方便(提高代码的利用率)
  2. 提高代码的可读性
  3. 便于调试bug:

3. 函数的分类

  1. 系统库函数
  2. 自定义函数

4.自定义函数

  • 语法:
def funcName():
    函数体
----------------
funcName()   //调用函数
基本格式:
  1.以def开始
  2.自定义函数名
  3.小括号()函数的参数写在里边,后跟冒号
  4.函数体注意缩进
  • 命名:
遵循标识符:
1.   以数字字母下划线组成
2.不能以数字开始
3.不能是系统关键字
  func_name funcName
  • 函数的调用
在函数定义之前不能调用
可以重复定义函数 后边的覆盖前边的
形参无默认值时不传参会报错
形参有默认值时可以不传参
形参有默认值且有多个参数时默认值在最后
多个参数有默认值的情况 传参率高的房子前边
  • 关键字参数
//实参的值可以通过形参的名字来传值
def demo(age,name,height):
    print(age,name,height)

demo(name = 'zhang',age = 1,height = 180)
//所有实参传参如果使用了关键字方式,name所有的参数都要指定对应关键字
  • 参数

    1. 定义函数名后的叫做形参
    2. 调用函数时后的叫实参
    3. 参数值是可以改变的 提高代码的重用性
    4. 形参和实参是一一对应的
    5. 形参是可以有默认值的 有默认值的形参
  • 返回值

函数里边没有return 返回None
return 后边的值会返回给函数的调用处
想要返回多个值时 可以使用元组 列表 字典等形式
return 返回值可选
return后边只执行依据 其余下边有再多都不执行
def demo(num):
    num=30             
    print(num)            //30
    print(id(num))

num1 = 20
print(id(num1))
demo(num1)                //30
print(num1)               //20
  • 可变长度参数
1.形参前面的*会把实参当做列表形式传
def goodMan(name,*goodList):
    print(goodList)

goodMan('a',['b'])
goodMan('b','c','d',['a','b'])
2.形参前面两个*会把实参当做字典形式传
3.实参前边的*会把 列表 元组转成可变参数
#计算一组数字的平方和
def calc(*nums):
    res = 0
    for x in nums:
        res+=x*x
    print(res)
calc(2,3,4,5)
4.实参前面**会把字典变成可变参数

变量的作用域:

  • 局部变量:在函数体内定义的变量 函数外部不可用
  • 全局变量:在函数体外部定义的变量 叫做全局变量 在函数体内部能够拿到值,但不能修改值 修改的话会在函数体内声明一个全新的变量
    若想使用全局变量 声明global 可以修改

global使用整个函数外边的全局变量
nonlocal使用的是外层函数的局部变量

  • 递归函数

函数自己调用自己的过程:
执行核心
终止的条件
如果 子项目中能用循环和遍历解决的问题 尽量不要用递归?内存占用

  • 匿名函数
    不使用def定义函数 而使用==lambda==关键字
func = lambda a,b:a-b
print(func(2,3))  //-1

print((lambda a,b:a-b)(10,20))  //-1
  • 闭包函数
    函数中嵌套函数 且外层函数的返回值是函数

函数严格区分大小写

  • 身份运算符
is
not is

高阶函数

把函数当做参数传进去的函数叫做高阶函数
- map()

    第一个参数:函数 第二个参数是 列表
    def myMap(x):
        return x*2
    print(list(map(myMap,[1,2,3,4,5])))
  • reduce

    第一个参数是函数
    第二个参数是列表
    def mySum(x,y):
    return x+y
    print(reduce(mySum,[1,2,3,4])) //10

  • filter

    参数:函数 列表
    一般用户过滤数列
    根据参数的函数返回值来判断是否过滤掉
    根据True和False

    def func(num):
    if num%2 ==0:
    return True
    return False

猜你喜欢

转载自blog.csdn.net/weixin_42042680/article/details/80070458