day03-Python基础
1:函数
定义: 函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可
特性:
- 减少重复代码
- 使程序变的可扩展
- 使程序变得易维护
函数定义:
1 2 3 | def sayhi(): #函数名 print ( "Hello,I'm nobody!" ) sayhi() #调用函数 |
2:函数参数与局部变量
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值
1 2 3 4 5 6 | def calc(x,y): #x,y形参 res = x * * y return res c = calc(a,b) #a,b实参 print (c) |
默认参数
1 2 3 4 5 6 7 8 9 | def stu_register(name,age,country,course): print ( "------学生信息---------" ) print ( "姓名:" ,name) print ( "age:" ,age) print ( "国籍:" ,country) print ( "课程:" ,course) stu_register( "Guido" , 54 , "CN" , "Python" ) stu_register( "Scott" , 54 , "CN" , "SQL" ) |
发现 country 这个参数 基本都 是"CN",通过默认参数实现
1 2 3 4 5 6 7 8 | def stu_register(name,age,course,country = "CN" ): print ( "------学生信息---------" ) print ( "姓名:" ,name) print ( "age:" ,age) print ( "国籍:" ,country) print ( "课程:" ,course) stu_register( "linus" , 54 , "Linux" ) |
关键参数:
正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可,但记住一个要求就是,关键参数必须放在位置参数之后。
1 | stu_register(age = 56 ,name = "james" ,course = "Java" ) |
非固定参数
若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数
1 2 3 | def stu_register(name,age, * args): # *args 会把多传入的参数变成一个元组形式 print (name,age,args) stu_register( "Guido" , 32 )<br> #输出Guido 32 () #后面这个()就是args,只是因为没传值,所以为空<br>stu_register("Guido",32,"Python","IT")<br>#输出:Guido 32 ('Python', 'IT') |
另一个**kwargs
1 2 3 4 5 | def stu_register(name,age, * args, * * kwargs): # *kwargs 会把多传入的参数变成一个dict形式 print (name,age,args,kwargs) stu_register( "Guido" , 32 )<br> #输出:Guido 32 () {} #后面这个{}就是kwargs,只是因为没传值,所以为空 stu_register( "James" , 64 , "US" , "Java" ,gender = "male" ,hobby = "IT" )<br> #输出:James 64 ('US', 'Java') {'gender': 'male', 'hobby': 'IT'} |
局部变量
1 2 3 4 5 6 7 8 | name = "Guido" def change_name(name): print ( "before change:" ,name) name = "龟叔" print ( "after change" ,name) change_name(name) print ( "在外面看看name改了吗?" ,name)<br>输出: |
before change: Guido
after change 龟叔
在外面看看name改了吗? Guido
全局与局部变量
在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
3:返回值
要想获取函数的执行结果,就可以用return语句把结果返回
注意:
- 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
- 如果未在函数中指定return,那这个函数的返回值为None
嵌套函数

name = "Guido" def change_name(): name = "Guido2" def change_name2(): name = "Guido3" print("第3层打印",name) change_name2() print("第2层打印",name) change_name() print("最外层打印",name)
4:递归
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
1 2 3 4 5 6 7 | def calc(n): print (n) if int (n / 2 ) = = 0 : return n return calc( int (n / 2 )) calc( 10 ) |
分类:
Python学习
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南