python基础07——函数,想重复使用自己的代码就写个函数吧
创始人
2024-01-23 10:08:26

目录

  • 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没有数据类型,没有输出,结果不能参与运算
  • 案例一
    在这里插入图片描述
  • 案例二
def PR():print("===================")print("人生苦短,我学Python")print("===================")

在这里插入图片描述

  1. 函数给定参数,没有给返回值
    在这里插入图片描述

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 位置参数

按照位置传参,位置参数

在这里插入图片描述

2.2 默认值参数

函数定义阶段直接赋值了的形参
在这里插入图片描述

如果调用的时候为参数指定值,则指定值覆盖默认值,按照指定值进行计算
在这里插入图片描述

2.3 关键参数

函数调用阶段按照形参名赋值的实参
在这里插入图片描述
注意:当位置参数和关键字参数混用,位置参数在前,关键字参数在后

在这里插入图片描述

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

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

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

2.4.1 收集位置参数

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

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

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2.4.3 收集关键字参数

**args 把多余的关键字参数以字典的形式存储
在这里插入图片描述

2.4.4 分配关键字参数

在这里插入图片描述

3 变量的作用域

3.1 局部变量

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

在这里插入图片描述

  • 当局部变量和全局变量名字相同时, 自定义函数内优先使用局部变量
    在这里插入图片描述

  • 自定义函数内部有局部变量的用局部变量,没有局部变量的,用全局变量
    在这里插入图片描述

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

在这里插入图片描述

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 1else:return n+add_sum(n-1)
add_sum(10)
#out: 55

6 内置函数

可以直接用函数名调用

6.1 数据类型相关

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

在这里插入图片描述

6.2 逻辑判断相关

6.2.1 all()函数

如果bool(x)对于可迭代的所有值x为True,则返回True。如果iterable为空,则返回True
在这里插入图片描述

6.2.2 any()函数

如果bool(x)对于可迭代的任何x为True,则返回True。如果iterable为空,则返回False。
在这里插入图片描述

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模块

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

7.3 math模块

在这里插入图片描述
在这里插入图片描述

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
六尺巷在哪里 六尺巷典故出于哪... 云南画报新媒体中心发布“万里长城今犹在,不见当年秦始皇。”这句诗之所以出名,还要归功于毛主席。195...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
投资收益是什么科目 投资收益算... HUI SUAN QING JIAO汇算清缴5月31号前必须申报2015年企业所得税汇算清缴了!不会...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...