python基础07——函数,想重复使用自己的代码就写个函数吧

目录

  • 1 函数定义与调用
    • 1.1 自定义模块函数
    • 1.2 函数的返回值 return
  • 2 参数的传递方式
    • 2.1 位置参数
    • 2.2 默认值参数
    • 2.3 关键参数
    • 2.4 可变长度参数(收集和分配参数)
      • 2.4.1 收集位置参数
      • 2.4.2 分配位置参数,函数参数的序列解包
      • 2.4.3 收集关键字参数
      • 2.4.4 分配关键字参数
  • 3 变量的作用域
    • 3.1 局部变量
    • 3.2 全局变量
    • 3.3 global:可以将局部变量变成全局变量
  • 4 匿名函数 Lambda
    • 4.1 lambda函数和filter函数连用
    • 4.2 lambda函数和map函数连用
    • 4.2 应用场景
  • 5 递归
  • 6 内置函数
    • 6.1 数据类型相关
    • 6.2 逻辑判断相关
      • 6.2.1 all()函数
      • 6.2.2 any()函数
    • 6.3 数学相关
  • 7 模块函数
    • 7.1 导入模块
    • 7.2 random模块
    • 7.3 math模块

1 函数定义与调用

  • 函数定义:def return 语句,形参
  • 函数调用:实参
    • 实参是实际占用内存地址的实实在在的参数,而形参只是意义上的一种参数,在定义的时候是不占内存地址的
def 函数名(参数1,参数2...:
    代码块(函数要实现的功能)
    return 返回值
#其中,函数的参数和返回值不是必须要写的,如果一个函数没有reutrn语句(也就是没有返回值),它实际上有一个隐式return语句,返回值为None,类型为'NoneType'。
  1. 函数没有给定参数和返回值
    print函数打印出来的东西只是给你看一下,是nonetype没有数据类型,没有输出,结果不能参与运算
  • 案例一
    python基础07——函数,想重复使用自己的代码就写个函数吧_第1张图片
  • 案例二
def PR():
    print("===================")
    print("人生苦短,我学Python")
    print("===================")

python基础07——函数,想重复使用自己的代码就写个函数吧_第2张图片

  1. 函数给定参数,没有给返回值
    python基础07——函数,想重复使用自己的代码就写个函数吧_第3张图片

1.1 自定义模块函数

  1. 编写想要封装进模块的函数
  2. 把这些函数放到一个空的ipynb文件里
  3. 重命名(给文件取名),另存为.py格式
  4. 查看Python的搜索路,把 .py文件放到任意一个搜索路径的文件夹里(只需要放一个可以)
import sys
sys.path   #查看Python的搜索路径
  1. 导入模块,通过模块调用里面的函数

1.2 函数的返回值 return

  1. print函数打印出来的东西只是给你看一下,是nonetype没有数据类型,没有输出,结果不能参与运算
  2. 将函数处理结果送出函数外部,可以进行接收
  3. 当函数运行到return,函数终止
  4. 返回多个值, 多个变量加逗号分隔

在这里插入图片描述

2 参数的传递方式

2.1 位置参数

按照位置传参,位置参数

python基础07——函数,想重复使用自己的代码就写个函数吧_第4张图片

2.2 默认值参数

函数定义阶段直接赋值了的形参
python基础07——函数,想重复使用自己的代码就写个函数吧_第5张图片

如果调用的时候为参数指定值,则指定值覆盖默认值,按照指定值进行计算
python基础07——函数,想重复使用自己的代码就写个函数吧_第6张图片

2.3 关键参数

函数调用阶段按照形参名赋值的实参
python基础07——函数,想重复使用自己的代码就写个函数吧_第7张图片
注意:当位置参数和关键字参数混用,位置参数在前,关键字参数在后

python基础07——函数,想重复使用自己的代码就写个函数吧_第8张图片

2.4 可变长度参数(收集和分配参数)

就是说只指定一个参数,然后允许调用函数时传入任意数量的参数。

  • 在定义的时候,一颗星表示收集位置参数,两颗星表示收集关键字参数
  • 在调用的时候,一颗星表示分配位置参数,两颗星表示分配关键字参数

2.4.1 收集位置参数

*args 把多余的位置参数以元组的形式储存
在这里插入图片描述

2.4.2 分配位置参数,函数参数的序列解包

python基础07——函数,想重复使用自己的代码就写个函数吧_第9张图片
python基础07——函数,想重复使用自己的代码就写个函数吧_第10张图片

在这里插入图片描述

2.4.3 收集关键字参数

**args 把多余的关键字参数以字典的形式存储
python基础07——函数,想重复使用自己的代码就写个函数吧_第11张图片

2.4.4 分配关键字参数

python基础07——函数,想重复使用自己的代码就写个函数吧_第12张图片

3 变量的作用域

3.1 局部变量

  • 函数内部的变量叫做局部变量, 局部变量只能在函数内部被使用, 用完就释放

python基础07——函数,想重复使用自己的代码就写个函数吧_第13张图片

  • 当局部变量和全局变量名字相同时, 自定义函数内优先使用局部变量
    python基础07——函数,想重复使用自己的代码就写个函数吧_第14张图片

  • 自定义函数内部有局部变量的用局部变量,没有局部变量的,用全局变量
    python基础07——函数,想重复使用自己的代码就写个函数吧_第15张图片

3.2 全局变量

  • 在自定义函数外边定义的变量叫做全局变量
  • 全局变量能在函数的任意位置被使用

3.3 global:可以将局部变量变成全局变量

  • 可以使用global关键字在函数内部定义一个全局变量, 全局变量能在函数的任意位置被使用
  • 如果在自定义函数中修改全局变量,那么就需要使用global进行声明,否则出错

4 匿名函数 Lambda

Lambda函数是自定义函数的一种,专指用关键字” lambda”定义的无名短函数。

a = lambda x,y,z: x+y+z
a(1,2,3)
#out:6

python基础07——函数,想重复使用自己的代码就写个函数吧_第16张图片

4.1 lambda函数和filter函数连用

ilter()过滤后,返回的是结果为真(即不等于0)的对象

'''
filter函数:

 - filter()有两个参数。第一个参数可以是一个函数,也可以是一个None。
	
	 - 如果是第一个参数是函数的话,则将第二个迭代数据里的每一个元素作为函数的参数进行计算,把返回True的值筛选出来;
	 - 如果第一个参数为None,则直接将第二个参数中为True的值筛选出来。
ilter()过滤后,返回的是结果为真(即不等于0)的对象
'''
temp = filter(None,[1,2,0,False,True])

list(temp)  #filter保留结果为真的原数据,筛除结果为假的原数据
#[1, 2, True]

案例:

#写一个筛选奇数的过滤器
def is_odd(n):
    return n%2
list(filter(is_odd,range(10)))

#使用lambda简化上述函数
list(filter(lambda n:n%2,range(10)))

4.2 lambda函数和map函数连用

map()遍历,返回的是计算结果

'''
map:映射
map()也有两个参数,仍然一个是函数,一个是可迭代序列,将序列的每一个个元素作为函数的参数进行运算加工,直到可迭代序列每个元素加工完毕,返回所有加工后的元素构成的新序列。
map()遍历,返回的是计算结果
'''
[*map(lambda x:x%2,range(10))]
#out: [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]

4.2 应用场景

  1. python编写一些程序的脚本时,使用lambda就可以省下来定义函数的过程。比如写一个简单的脚本管理服务器,就没有必要定义函数,再去调用它。直接使用lambda函数,可以使程序更加简明。
  2. 一些只需要调用一两次的函数,就没有必要为了想个合适的函数名字而费精力了,直接使用lambda函数就可以省去取名的过程。
  3. 阅读普通函数,通常需要跳到开头def定义的位置,使用lambda函数可以省去这样的步骤。

5 递归

函数自己调用自己,注意递归停止条件

#累加
def add_sum(n):
    if n == 1:
        return 1
    else:
        return n+add_sum(n-1)
add_sum(10)
#out: 55

6 内置函数

可以直接用函数名调用

6.1 数据类型相关

int() , bool() , float() , str() , list() , set() , tuple() ,dict() ,type()

python基础07——函数,想重复使用自己的代码就写个函数吧_第17张图片

6.2 逻辑判断相关

6.2.1 all()函数

如果bool(x)对于可迭代的所有值x为True,则返回True。如果iterable为空,则返回True
python基础07——函数,想重复使用自己的代码就写个函数吧_第18张图片

6.2.2 any()函数

如果bool(x)对于可迭代的任何x为True,则返回True。如果iterable为空,则返回False。
python基础07——函数,想重复使用自己的代码就写个函数吧_第19张图片

6.3 数学相关

求和:sum()
求绝对值:abs()
求最小值:min()
求最大值:max()
求长度:len()
生成随机数:range(),
求m的n次幂:pow(m,n)
四舍五入:round()【*.5的时候,返回距离原数据最近的偶数,精度可以取负值:round(156.433,-1)】
求商和余数: divmod()
zip函数:将等长的列表或元组组合成字典
在这里插入图片描述

7 模块函数

通过模块名进行调用,如math.sin()等 (前提是先导入(import)第三方模块)

7.1 导入模块

  1. import math #第一种导入模块的方式
  2. import math as mt #第二种导入模块的方式 最常用的
  3. from math import sin #第三种导入模块的方式

7.2 random模块

python基础07——函数,想重复使用自己的代码就写个函数吧_第20张图片

在这里插入图片描述
python基础07——函数,想重复使用自己的代码就写个函数吧_第21张图片

7.3 math模块

python基础07——函数,想重复使用自己的代码就写个函数吧_第22张图片
在这里插入图片描述

你可能感兴趣的:(python基础知识,python,爬虫,开发语言)