python之函数初识
一、函数的初识
1、如何定义函数: def 函数名(): 代码... 例如: def my_len(): l = [1, 2, 3, 4] count = 0 for i in l: count += 1 print(count) 2、函数的优点: 1,减少代码的重复率。 2,增强代码的阅读性。 3、函数到底是什么? 函数最主要的目的:封装一个功能。 4、函数如何调用:函数名 () my_len() 5、总结 定义:def 关键词开头,空格之后接函数名称和圆括号(),最后还有一个":"。 def 是固定的,不能变,他就是定义函数的关键字。 空格 为了将def关键字和函数名分开,必须空,当然你可以空2格、3格或者你想空多少都行,但正常人还是空1格。 函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。虽然函数名可以随便起,但我们给函数起名字还是要尽量简短,并能表达函数功能。 括号:是必须加的! 注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。 调用:就是 函数名() 要记得加上括号。
二、函数的返回值:return
1、函数中如果遇到retrun, 则直接结束函数。 2、给函数的执行者返回值。 1,不写return和只写return: 返回None 2,return 单个值: 原封不动的返回(返回的数据类型也一致) 3,return 多个值: 返回一个元组,所有的返回值作为元组的每一个元素 (1)不写return def func1(): print(111) print(222) res = func1() # 111 222 print(res) # None (1 - 2)只写return def func1(): print(111) print(222) return res = func1() # 111 222 print(res) # None (2)return 单个值 def fun1(): a = 1 b = 'hello' c = [1, 2, 3] return a res = fun1() print(res) # 1 (3)return 多个值 def fun1(): a = 1 b = 'hello' c = [1, 2, 3] return a, b, c res = fun1() print(res) # (1, 'hello', [1, 2, 3]) 注意:工作中,函数中尽量不要出现print,这里只是为了展示函数的用法才使用的
三、函数的参数
1、简单介绍
# 函数定义 def mylen(s): """计算s的长度""" length = 0 for i in s: length += 1 return length # 函数调用 str_len = mylen("hello world") print('str_len : %s' % (str_len)) # str_len : 11 这里我们要告诉mylen函数要计算的字符串是谁,这个过程就叫做传递参数, 简称传参,我们调用函数时传递的这个“hello world”和定义函数时的s就是参数。 这个“hello world”被称为实际参数,因为这个是实际的要交给函数的内容,简称实参。 定义函数时的s,只是一个变量的名字,被称为形式参数,因为在定义函数的时候它只是一个形式并不是真正的数据, 表示这里有一个参数,简称形参。
2、实参
1,位置参数:按照顺序,一一对应 def func1(x, y): print(x, y) func1(1, 2) # 位置参数,1对应传给x,2对应传给y 2,关键字传参:可以不按照顺序,但是必须一一对应 def func1(x, y): return x + y print(func1(y=100, x=99)) # 关键字参数,我们写实参的时候直接声明了形参y对应100,x对应99 3,混合传参:关键字参数一定要在位置参数后面 def func1(a, b, x, y): return b + y print(func1(100, 200, y=100, x=99)) # 300
3、形参
1,位置参数 按照顺序,一一对应 def func(x, y, z): print(x, y, z) func(1, 2, 3) 2,默认参数:给其传值,将原默认参数覆盖掉,不传值,不报错,使用默认值。 应用场景:不经常改变的参数,但是一直在用。 def func1(x, y, a=666): print(x, y, a) func1(1, 2) # 1 2 666 func1(1, 2, 333) # 1 2 333 注意: 默认参数一般设置为不可变的数据类型(str,int,tuple等), 若默认参数设置为可变的数据类型(list,dict等),那么执行一次后,这个可变的数据类型它始终用的是同一个。 def fun1(x, l1=[]): l1.append(x) return l1 res = fun1(20) print(res, id(res)) # [20] 2192007779592 res1 = fun1(100) print(res1, id(res1)) # [20, 100] 2192007779592
4、参数总结
实参: 位置参数:按照顺序,一一对应 关键字参数:可以不按照顺序,但是必须一一对应 混合参数:关键字参数一定要在位置参数后面 形参 位置参数:按照顺序,一一对应 默认参数:给其传值,将原默认参数覆盖掉,不传值,不报错,使用默认值 小知识点:只针对于简单的if else 这样的结构,才可以使用。 def fun(x, y): if x > y: return x else: return y print(fun(1, 2)) 上面代码可以下成下面的代码: def fun(x, y): return x if x > y else y print(fun(1, 2))
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix