Python学习五:函数、参数(必选、可选、可变)、变量、lambda表达式、内
置函数总结、案例
⽂章⽬录
前⾔
七⽉份很长时间没有写博客了,打算看完在写的,但是看完视频了,⼀直没时间写,终于拖到了⽉末的最后⼀天,就把代码中README.md ⽂件整理过来了,当时写README.md⽂件的时候也是⽐较⽤⼼的。
看这个⽂档的时候,最好是跟着 GitHub上的代码⼀块⼉看,循序渐进、由浅⼊深。
***************************************************************************
1. 什么是函数:
⼀系列Python语句的组合,可以在程序中运⾏⼀次或者多次, ⼀般是完成具体的独⽴的功能
2. 为什么要使⽤函数:
代码的复⽤最⼤化以及最⼩化冗余代码,整体代码结构清晰,问题局部化
3. 函数定义:
def 函数名():
函数体[⼀系列的python语句,表⽰独⽴的功能]
4. 函数的调⽤:
本质上就是去执⾏函数定义⾥⾯的代码块,在调⽤函数之前 必须先定义
⼀、函数基础
1. 函数参数
1. 必选参数
2. 默认参数【缺省参数】
3. 可变参数 当参数的个数不确定时使⽤,⽐较灵活 , 可变参数 传⼊到 ⽅法内 为 元组类型
定义: def getComputer(*args)
4. 关键字可变参数 关键字参数是⼀个 字典类型, key是⼀个字符串
def keyFunc(**kwargs):
注意: 可变参数 必须放到 关键字可选参数 之前
2. 函数返回值
概念:函数执⾏完以后会返回⼀个对象,如果在函数的内部有return 就可以返回实际的值,否则返回None
类型:可以返回任意类型,返回值类型应该取决于return后⾯的类型
⽤途:给调⽤⽅返回数据
在⼀个函数体内可以出现多个return值:但是肯定只能返回⼀个return
如果在⼀个函数体内 执⾏了return,意味着函数就执⾏完成退出了,return后⾯的代码语句将不会执⾏
3. 函数嵌套
函数的分类:根据函数的返回值和函数的参数
1. 有参数⽆返回值的
2. 有参数⼜返回值的
3. ⽆参数⼜返回值的
4. ⽆参数⽆返回值的
⼆、homework 作业
1. 作业⼀、写函数,接收n个数字,求这些参数数字的和
def sumFunc(*args):
result =0
for item in args:
result += item
pass
return result
pass
result1 = sumFunc(1,2,3,46,78,)
print('sumFunc(*args) 返回值:{}'.format(result1))
2. 作业⼆、写函数,出传⼊的 列表或元组 的 奇数位对应的元素 ,并返回⼀个新的列表
def processFunc(con):
listResult =[]
index =1
for item in con:
if index %2==1:# 判断奇数位
listResult.append(item)
pass
index +=1
pass
return listResult
pass
result2 = processFunc([1,2,3,4,5,6,70])
print('processFunc(con) 返回值:{}'.format(result2))
3. 作业三、写函数,检查传⼊字典的每⼀个value的长度,如果⼤于2,那么仅保留前两个长度的内容,并将新内容返回给调⽤者。
def dictFunc(dicParameter):# **kwargs 这⾥可以⽤关键字可变参数代替
'''
检查传⼊字典的每⼀个value的长度,如果⼤于2,那么仅保留前两个长度的内容,并将新内容返回给调⽤者。
:param dictParameter:
:return:
'''
result ={}# 空字典
for key, value in dicParameter.items():
if len(value)>2:
result[key]= value[:2]# 向字典中添加数据
pass
else:
result[key]= value
pass
pass
return result
pass
# 函数调⽤
dictPatam ={'name':'夏⾬','hobby':['唱歌','跳舞','运动','编程'],'pro':'中国艺术'}
dictResult = dictFunc(dictPatam)
print('dictFunc(dictParameter) 返回值:{}'.format(dictResult))
三、变量
变量分为 局部变量 和 全局变量
注意 global 关键字的使⽤时机。
1.局部变量
1. 局部变量 就是在函数内部定义的变量【作⽤域仅仅局限在函数的内部】
2. 函数内部的变量名如果第⼀次出现,且出现在‘=’前⾯,即被视为该函数定义了⼀个局部变量,不管全局域中有没有⽤到该变量名,
函数中使⽤的将是局部变量。
3. 不同的函数 可以定义相同的局部变量,但是各⾃⽤各⾃的 不会产⽣影响
4. 局部变量的作⽤:为了临时的保存数据 需要在函数中定义来进⾏存储
2. 全局变量
特点:
1. 全局变量:如果⼀个变量可以在函数内部调⽤,也可以在函数外部调⽤。
2. 全局变量能在函数内部访问,也可以在外部访问,但函数内部不能修改全局变量。
3. 全局变量与局部变量重复,局部变量不会影响全局变量,函数使⽤局部变量。
总结:
1. 注意:当全局变量和局部变量出现重复定义的时候,程序会优先执⾏使⽤函数内部定义的变量【地头蛇】
2. 如果在函数的内部要想对全局变量进⾏修改的话 对于不可变类型【str、元组、num】 必须使⽤ global 关键字进⾏声明
3. 可变类型的全局变量,可以不⽤global声明。
四、引⽤
在python中,值是靠引⽤来传递来的,可以⽤id()查看⼀个对象的引⽤是否相同,id是值保存在内存中那块内存地址的标识。
ch07_引⽤.py
五、匿名函数 lambda表达式
1. lambda 表达式
1. python中使⽤ lambda 关键字创建匿名函数,所谓匿名即这个函数没有名字不⽤def关键字创建标准的函数。
2. 语法: lambda 参数1,参数2,参数3: 执⾏代码语句
使⽤ lambda表达式 计算两个数和:
test = lambda x,y:x +y
test(1,3)
test(4,5)
换成普通函数其实就是这样的
def test(x,y):
return x + y
2. python的三元运算
b if a else
c 解释:如果a表⽰式为 true 则为b, 如果为 false 则为 false。
这样的表达式(三元运算)能够放在lambda中,它们能够在lambda函数中来实现选择逻辑:
greater = (lambda x, y: x if x > y else y)
greater(3, 5)
greater(6, 2)
ch08_匿名函数.py
六、递归函数
递归函数 如果⼀个函数在内部不调⽤其它的函数,⽽是⾃⼰本⾝的话,这个函数就是递归函数。
ch09_递归函数.py 主要看例⼦吧
七、内置函数
任何⼀门编程语⾔的核⼼操作都是操作内存中的数据,但内存中的数据⼜是通过编程语⾔的API来实现,
所谓的API,就是系统提供给我们的函数,有⼀种函数是系统预先定义的函数,也就是我们安装python就⾃带的函数,这种我们把它称为内置函数,也叫内嵌函数
如同⼈⼀⽣下来就有⼿有脚,会吃会喝⼀样,具备基本的能⼒ ,随着成长和学习,我们学会了说话、学会了⼯作,学会了技能等,⽽这些能⼒就如同我们 Python 的扩展函数或扩展库
1. 函数总结
[外链图⽚转存失败,源站可能有防盗链机制,建议将图⽚保存下来直接上传(img-hLQzkwUz-1596112361157)
(…/images/study04/python内置函数⼩节.jpg)]
2. 数学运算
1. abs()
描述: abs() 函数返回数字的绝对值
语法: abs( x )
参数: x – 数值表达式
返回值: 函数返回x(数字)的绝对值
2. round()
描述: round() ⽅法对 浮点数进⾏近似取值,保留⼏位⼩数
语法: round( x [, n] )
参数:
x – 数值表达式
n – 数值表达式
返回值: 返回浮点数x的近似值
注意:这⾥不完全是按照四舍五⼊或者四舍六⼊五成双来进⾏取值的,取值和python的版本有关,还和浮点数的精度有关
3. pow()
描述: pow()⽅法返回 ^ (x的y次⽅) 的值 类似于 ** 算法
语法: pow(x, y[, z])
参数:
x – 数值表达式
y – 数值表达式
z – 数值表达式
返回值:返回 xy(x的y次⽅) 的值
4. divmod()
语法: divmod(a, b)
参数:
a: 数字
b: 数字
返回值: ⼀个包含商和余数的元组(a // b, a % b)
5. max()
描述: max() ⽅法返回给定参数的最⼤值,参数可以为序列
语法: max( x, y, z, … )
参数:
x – 数值表达式
y – 数值表达式
z – 数值表达式
返回值:返回给定参数的最⼤值
6. min()
描述: min() ⽅法返回给定参数的最⼩值,参数可以为序列
语法: min( x, y, z, … )
参数:
x – 数值表达式
y – 数值表达式
z – 数值表达式
返回值: 返回给定参数的最⼩值
7. sum()
描述: sum() ⽅法对系列进⾏求和计算
语法: sum(iterable[, start])
参数:
iterable – 可迭代对象,如:列表、 元组、集合。 是将这个可迭代的对象 进⾏相加完,然后再与 start相加start – 指定 相加的参数,如果没有设置这个值,默认为0
返回值: 返回计算结果
8. eval()
描述: eval() 函数⽤来执⾏⼀个字符串表达式,并返回表达式的值
语法: eval(expression[, globals[, locals]])
参数:
expression – 表达式
globals – 变量作⽤域,全局命名空间,如果被提供,则必须是⼀个字典对象
lambda编程locals – 变量作⽤域,局部命名空间,如果被提供,可以是任何映射对象
返回值: 返回表达式计算结果
3. 类型转换
1. int()
描述: int() 函数⽤于将⼀个字符串或数字转换为整型
语法: class int(x, base=10)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论