再遇函数

举报
爱打瞌睡的CV君 发表于 2022/07/08 00:54:56 2022/07/08
【摘要】 进一步认识函数 学习python的学习笔记 3,在B站《求知学堂》学习。 1、函数的4种基本类型 (1)无参数,无返回值,一般用于提示信息打印 (2)无参数,有返回值,多用于数据采集中 (3)有参数,无...

进一步认识函数

学习python的学习笔记 3,在B站《求知学堂》学习。
1、函数的4种基本类型
(1)无参数,无返回值,一般用于提示信息打印
(2)无参数,有返回值,多用于数据采集中
(3)有参数,无返回值,多用在设置某些不需要返回值的参数设置
(4)有参数,有返回值,一般是计算型,需要参数,也需要返回值
2、全局变量和局部变量
局部变量 :
就是在函数内部定义的变量【作用域仅仅局限在函数的内部】

不同的函数 可以定义相同的局部变量,但是各自用各自的 不会产生影响

局部变量的作用:为了临时的保存数据 需要在函数中定义来进行存储

全局变量:一般放在需要定义的函数前面

当全局变量和局部变量出现重复定义的时候,程序会优先执行使用函数内部定义的变量

如果在函数的内部要想对全局变量进行修改的话 对于不可变类型【str 元组 number】必须使用global 关键字进行声明

对于可变类型【dict、list】来讲,全局变量要想在函数中修改的话,我们不需要用global关键字去声明的

3、匿名函数
语法:
lambda 参数1、参数2、参数3(这里的参数可以有很多) : (冒号不能丢啦)表达式

特点:
1.使用lambda关键字去创建函数
2.没有名字的函数
3.匿名函数冒号后面的表达式有且只有一个, 注意:是表达式,而不是语句
4.匿名函数自带return,而这个return的结果就是表达式计算后的结果
缺点:
lambde只能是单个表达式,不是一个代码块,lambde的设计就是为了满足简单函数的场景,
仅仅能封装有限的逻辑,复杂逻辑实现不了,复杂的逻辑必须使用def来处理

(1)匿名函数和之前def函数的对比

def computer(x,y):
‘’’
计算数据和
:param x:
:param y:
:return:
‘’’
return x+y
pass
print(computer(10,23))
在这里插入图片描述

M=lambda x,y:x+y#通过变量调用匿名函数
print(M(10,23))
在这里插入图片描述
(2)匿名函数可以完成二分支
hh=(lambda a,b:a if a>b else b)(12,18)
#可以实现二分支,而且可以直接调用,后面的12,18分别对应前面的a,b
print(hh)
在这里插入图片描述
4、递归函数
递归满足的条件
1.自己调用自己
2.必须有一个明确的结束条件
优点:逻辑简单、定义简单
缺点:容易导致栈溢出,内存资源紧张,甚至内存泄漏

递归函数处理阶乘问题
def diguihs(n):
if n==1:
return 1
else:
return n*diguihs(n-1)
pass
print(‘5的阶乘是:{}’.format(diguihs(5)))
在这里插入图片描述
5、内置函数
内置函数种类:
借鉴一位博主整理的:点这里

另一位博主整理的:有例子哒:here

6、序列操作
(1) all()函数用于判断给定的可迭代参数 iterable 中所有元素是否都为 True ,如果是,返回True,否则返回Flase。元素除了0、空、Flase 外都算True。
语法:all(iterable)
参数:iterable------元组或列表
返回值:如果iterable的所有元素不为0、’ '、Flase或者iterable为空,all(iterable)返回True,否则返回Flase
(2)any()函数用于判断给定的可迭代参数iterable是否全部为Flase,如果是,返回Flase,否则返回True。元素除了0、空、Flase 外都算True。
语法:any(iterable)
参数:iterable------元组或列表
返回值:如果都为0、空、flase,则返回flase,否则返回True
(3)sorted()函数对所有可迭代的对象进行排序操作
sort与sorted的区别:
①sort是应用在list上的方法,sorted可以对所有可迭代对象进行排序操作。
②list的sort方法返回的是对已经存在的列表进行操作,而内建函数sorted方法返回的是一个新的list,而不是在原来的基础上进行的操作。
语法:sorted(iterable[,cmp[,key[,reverse]]])
参数
①iterable-----可迭代对象
②cmp-----比较的函数,这个具有两个参数,参数的值都是从可迭代对象中去除,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0
③key----主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自可迭代对象中,指定可迭代对象中的一个元素来进行排列
④reverse----排序规则,reverse=True 降序,reverse=Flase 升序(默认)
返回值:返回重新排序的列表

(4)reverse()函数用于反向列表中的元素
语法:list.reverse()
返回值:该方法没有返回值,但是会对列表的元素进行反向排序
(5)range()函数氪创建一个整数列表,一般用在for循环中
语法:range(start,stop,step)
参数:
①start:计数从start开始默认是从0开始
②stop:计数到stop结束,但不包括stop
③step:步长,默认为1
(6)zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回有这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。其实就是打包的,会把序列中对应索引位置的元素储存为一个元组
语法:zip([iterable,…])
参数:iterable----------一个或多个迭代器
返回值:返回元组列表
(7)enumerate()函数用于将一个可便利的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下表,一般用在for循环中
语法:enumerate(sequence,*[start=0]*默认是0,也可以是其它位置)
参数:
①sequence-----一个序列、迭代器或者其它支持迭代对象
②start------下标起始位置
返回值:返回enumerate(枚举对象)
7、内置函数----set(集合)
set不支持索引和切片,是一个无序的且不重复的容器,类似于字典,但只有key没有vable
①添加操作--------add()
②清空操作--------clear()
③差集操作-------difference()
例:a.difference(b) 意味着,a中存在,b中不存在
④交集操作------intersection()
例:a.intersection(b) 意味着,a中存在,b中也存在
⑤并集操作---------union()
例:a.union(b) 意味着 包含a中的元素,也包含b中的元素
⑥pop操作
集合pop随机移除某个元素并且获取那个参数,集合pop没有参数
⑦discard操作
移除指定元素
⑧更新操作------update
例:a.update(b) 就是把b中的元素放到a里面,有重复的,去掉重复的

------------------------------------end---------------------------------------------

文章来源: luckystar.blog.csdn.net,作者:爱打瞌睡的CV君,版权归原作者所有,如需转载,请联系作者。

原文链接:luckystar.blog.csdn.net/article/details/108578643

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。