当前位置: 首页 > news >正文

python函数

一、函数

  • 什么叫做函数

  • 就是将一个代码块封装成一个函数,然后重复进行调用的话

1、函数的定义和调用

  • def 关键字定义函数

  • 函数名 就是调用了,必须调用了函数,才能起作用

  • 先定义后调用

def get_sum(n):result=0for i in range(1,n+1):result+=iprint(f"和为{result}")get_sum(100)

2、函数的参数

1、位置参数

  • 就是调用函数的时候,传入参数,必须按照一定的位置进行传入

  • 按照一定的顺序进行传入,有几个形参就传入几个参数

def user_name(name, age):print(f"我的名字是{name},年龄是{age}")user_name("qq", 11)

2、关键字参数

  • 顺序可以不一样
def user_name(name, age):print(f"我的名字是{name},年龄是{age}")user_name(age=10,name="rrr")
  • 位置参数和关键字传参可以一起使用,但是这个位置参数必须放在最前面,关键字参数是在后面的

3、默认值参数

  • 在函数定义的时候,直接对形参进行赋值了

  • 如果在调用的时候不赋值的话,将使用默认值

  • 如果赋值了的话,则使用传递的值

# 没有传参
def user_name(name, age=18):print(f"我的名字是{name},年龄是{age}")user_name("qqq")

4、可变参数

1、个数可变的位置参数

  • 参数是一个元组

  • 也就是这个位置参数的参数是可变的,取决于调用的时候传入了多少个

def fun(*area):  # *变量名 是一个元组,可以传入多个参数print(type(area))for i in area:print(i)fun(1,2,3)     # 传入到元组中去
fun([1,2,3])   # 会将整个列表作为一个元素传入到元组中,相当于是一个元素
fun(*[1,2,3])  # 在调用的时候 * 会将列表中的每一个元素作为一个参数传入到元组中去# 输出结果为
<class 'tuple'>
1
2
3
<class 'tuple'>
[1, 2, 3]
<class 'tuple'>
1
2
3

2、个数可变的关键字参数

  • 传入到是一个字典存储

  • 关键字参数也是可变的,取决于调用的时候能传入多少个

def fun(**keywords):print(type(keywords))for key,value in keywords.items():print(key,"---",value)fun(name="qq",age="18")  # 接受的是一个键值对的方式
d={"name":"qq","age":"18"}  # 如果想要传入一个字典的话,需要**来进行解析
# fun(d)  # 不使用的话,会报错
fun(**d)

3、函数的返回值

  • return 返回值,返回到函数的调用的地方

  • 没有return的话,函数的返回值为none

def fun(a,b):s=a+breturn s  # 这个s返回到函数调用的地方result=fun(1,3) # 返回到函数调用的地方,赋值给了result变量
print(result)
  • 可以返回多个值,但是一个变量接收的话,就是一个元组类型来存储多个返回值
def fun(n):ji_shu=0ou_shu=0sum_shu=0for i in range(1,n+1):if i%2 !=0:ji_shu+=ielse:ou_shu+=isum_shu+=ireturn  ji_shu,ou_shu,sum_shu
result=fun(10)
print(type(result))
print(result)# 输出结果为
<class 'tuple'>
(25, 30, 55)

4、变量的作用域

1、局部变量

  • 在函数内部定义的变量

  • 仅在函数的内部,函数执行结束后,这个局部变量的生命周期也会结束

  • 当局部变量和全局变量名字一样的时,局部变量的优先级高

def fun(a,b):s=a+breturn  sresult = fun(1,2)  # 函数调用后,这个局部变量会被销毁print(result)

2、全局变量

  • 在函数外面定义的变量,或者是在函数内部使用global关键字定义的变量

  • 作用于整个程序,程序结束后,生命周期结束

  • 全局都有用,可以在函数的内部参与运算

  • 在函数内部使用global 变量,这个变量就是全局变量

s=100
def fun(a,b):sum=s+a+breturn  sumresult = fun(1,2)print(result)# 输出结果为
103# 当局部变量和全局变量名字一样时
s=100
def fun(a,b):s=200  # 局部变量的优先级高于全局变量,在名字相同的时候sum=s+a+breturn  sumresult = fun(1,2)print(result)# 输出结果为
203# 函数内部 global关键字定义变量def fun(a,b):global s  # s这个变量为全局变量s=200  # 对其进行赋值sum=s+a+breturn  sumresult = fun(1,2)print(result)
print(s)
s=100  # 在外面可以进行修改这个变量的值
print(s)# 输出结果为203
200
100

5、匿名函数

  • lambda函数

  • 是指没有名字的函数,这个函数只能使用一次

  • 一般是在函数的函数体只有一句代码且只有一个返回值的时候,可以使用匿名函数来简化

def fun(a,b):return a+b
result=fun(1,2)
print(result)# 上面代码可以简化成这样的,也就是只有一个返回值的时候使用,lamba匿名函数s=lambda a,b:a+b  # a,b是参数,: 后面是操作 s是函数名
print(type(s))
print(s(1,2))  # 调用函数名s la = [1,2,3,4,5]
for i in range(len(la)):result = lambda x:x[i]  # 传入是一个列表s = result(la)print(s)#输出结果为1
2
3
4
5student_scores=[{"name":"qq","score":100},{"name":"oo","score":90},{"name":"ww","score":95},
]# 按照这个key的查找来进行排序,降序的方式来查找
# x 是字典,x.get 取出这些成绩,按照这个成绩来进行排序# 字典是可变的数据类型student_scores.sort(key=lambda x:x.get("score"),reverse=True)
print(student_scores)# 输出结果为
[{'name': 'qq', 'score': 100}, {'name': 'ww', 'score': 95}, {'name': 'oo', 'score': 90}]

6、递归的操作

  • 自己调用自己

  • 有一个终止条件

# 计算一个数的阶乘def fun(n):if n==1:  # 终止条件return 1else:return  n*fun(n-1) # 自己调用自己print(fun(4))

二、内置函数

总结

  • 位置参数和关键字参数同时存在的时候,位置参数是在最前面的,关键字参数是在后面的

案例

1、10个元素,使用函数求出这个列表中元素的最大值

2、编写函数实现提取字符串中的数字并求出和

  • 输入一个字符串,有数字和字母的

3、实现字符串中的字母大小写转换

  • 小写字母转换成大写

  • 大写字母转换成小写

4、

http://www.wxhsa.cn/company.asp?id=6725

相关文章:

  • git使用
  • 测试开发全日制学徒班火热报名中|跟着名企大咖做真实项目,结业即上岗
  • 墨刀是否能替代Axure?从产品经理三大画图能力深度分析
  • AI 自动化智能体训练营
  • 微信商户绑定微信公众号、小程序
  • 唯创知音AI语音交互芯片与模组介绍
  • k3s 高可用集群部署(内置 etcd + VIP + keepalived)
  • 问HashMap底层原理?
  • 用 Go 重写 adbkit:原理、架构与搭建实践
  • C语言环境搭建之Linux子系统使用vscode连接子系统
  • 移远AT指令笔记
  • 数据类型
  • iphone运行windows系统
  • NVR接入录像回放平台EasyCVR视频融合平台语音对讲配置指南
  • Ubuntu filebrowser网盘工具安装
  • 图片结构 - voasem
  • ESP32做AP,ESP8266做station,遥控
  • 实用指南:25年高联:一试填空题解析(下篇)
  • Spring AOP 面向切面编程 - 浪矢
  • jvm内存泄漏的排查tips总结
  • IPA
  • Chromium历史版本下载方式
  • 【ACM出版】第三届物联网与云计算技术国际学术会议 (IoTCCT 2025)
  • 2025年最全 Wiki 管理工具测评:ONES、Confluence、Notion......哪个更适合你?
  • 鼠你爱称重
  • 详细介绍:用户争夺与智能管理:定制开发开源AI智能名片S2B2C商城小程序的战略价值与实践路径
  • PlorarD(WEB中等)
  • 神经网络稀疏化设计构架方式和原理深度解析
  • 天下拍拍卖系统:二方系统也能扩展三方平台功能
  • express使用redis