Python入门:Python3 函数全面学习教程
Python入门:Python3 函数全面学习教程
Python入门:Python3 函数全面学习教程,本文全面介绍Python3函数相关知识,涵盖基本概念、定义规则与语法,通过实例展示简单函数及带参数函数的定义。还讲解了函数调用方式,深入分析参数传递机制,区分不可变与可变对象传递的差异。详细说明必需参数、关键字参数等多种参数类型的用法,介绍匿名函数的创建与特点,以及return语句和强制位置参数的使用。旨在帮助读者掌握函数用法,提升代码效率与可维护性。
前言
Python作为一门简洁、易读、功能强大的编程语言,其基础语法是入门学习的核心。掌握好基础语法,能为后续的编程实践打下坚实的基础。本文将全面讲解Python3的基础语法知识,适合编程初学者系统学习。Python以其简洁优雅的语法和强大的通用性,成为当今最受欢迎的编程语言。本专栏旨在系统性地带你从零基础入门到精通Python核心。无论你是零基础小白还是希望进阶的专业开发者,都将通过清晰的讲解、丰富的实例和实战项目,逐步掌握语法基础、核心数据结构、函数与模块、面向对象编程、文件处理、主流库应用(如数据分析、Web开发、自动化)以及面向对象高级特性,最终具备独立开发能力和解决复杂问题的思维,高效应对数据分析、人工智能、Web应用、自动化脚本等广泛领域的实际需求。
🥇 点击进入Python入门专栏,Python凭借简洁易读的语法,是零基础学习编程的理想选择。本专栏专为初学者设计,系统讲解Python核心基础:变量、数据类型、流程控制、函数、文件操作及常用库入门。通过清晰示例与实用小项目,助你快速掌握编程思维,打下坚实根基,迈出自动化办公、数据分析或Web开发的第一步。
🥇 点击进入Python小游戏实战专栏, 寓教于乐,用Python亲手打造经典小游戏!本专栏通过开发贪吃蛇、飞机大战、猜数字、简易版俄罗斯方块等趣味项目,在实践中掌握Python核心语法、面向对象编程、事件处理、图形界面(如Pygame)等关键技能,将枯燥的代码学习转化为可见的成果,让学习编程充满乐趣与成就感,快速提升实战能力。
🥇 点击进入Python小工具实战专栏,告别重复劳动,用Python打造效率神器!本专栏教你开发文件批量处理、自动邮件通知、简易爬虫、桌面提醒、密码生成器、天气查询等实用小工具。聚焦os、shutil、requests、smtplib、schedule等核心库,通过真实场景案例,快速掌握自动化脚本编写技巧,解放双手,显著提升工作与生活效率,让代码真正服务于你的日常。
🥇 点击进入Python爬虫实战专栏,解锁网络数据宝库!本专栏手把手教你使用Python核心库(如requests、BeautifulSoup、Scrapy)构建高效爬虫。从基础网页解析到动态页面抓取、数据存储(CSV/数据库)、反爬策略应对及IP代理使用,通过实战项目(如电商比价、新闻聚合、图片采集、舆情监控),掌握合法合规获取并利用网络数据的核心技能,让数据成为你的超能力。
🥇 点击进入Python项目实战专栏,告别碎片化学习,挑战真实项目!本专栏精选Web应用开发(Flask/Django)、数据分析可视化、自动化办公系统、简易爬虫框架、API接口开发等综合项目。通过需求分析、架构设计、编码实现、测试部署的全流程,深入掌握工程化开发、代码复用、调试排错与团队协作核心能力,积累高质量作品集,真正具备解决复杂问题的Python实战经验。
🌐 前篇文章咱们讲解了 Python入门:Python3 with关键字全面学习教程 ,如果忘记了,可以去重温一下,不停的重复敲击基础代码,有助于让你更加熟练掌握一门语言。今天咱们学习 Python3 函数全面学习教程,下面开始吧!
函数是Python编程中不可或缺的重要组成部分,它能将代码模块化,提高复用性。本文将全面讲解Python3函数的定义、调用、参数传递等核心知识,帮助你快速掌握函数的使用技巧。
一、函数的基本概念
函数是组织好的、可重复使用的代码段,用于实现单一或相关联的功能。Python不仅提供了丰富的内建函数(如print()
),还允许开发者创建自定义函数,从而灵活满足各种编程需求。
使用函数的优势在于:
- 提高代码的模块性
- 增强代码的重复利用率
- 使程序结构更清晰,便于维护
二、函数的定义
定义函数需要遵循以下规则:
- 以
def
关键字开头,后接函数名和圆括号()
- 参数和自变量放在圆括号中间
- 可选择性地在第一行添加文档字符串(函数说明)
- 函数内容以冒号
:
起始,并且需要缩进 - 用
return [表达式]
结束函数,可选择性返回值(不带表达式的return
相当于返回None
)
基本语法
def 函数名(参数列表): 函数体
简单实例
下面是一个输出\"Hello World!\"的简单函数:
#!/usr/bin/python3def hello() : print(\"Hello World!\")hello() # 调用函数
带参数的函数实例
比较两个数并返回较大值:
#!/usr/bin/python3def max(a, b): if a > b: return a else: return ba = 4b = 5print(max(a, b)) # 输出结果:5
计算面积的函数示例:
#!/usr/bin/python3# 计算面积函数def area(width, height): return width * heightdef print_welcome(name): print(\"Welcome\", name)print_welcome(\"Runoob\") # 输出:Welcome Runoobw = 4h = 5print(\"width =\", w, \" height =\", h, \" area =\", area(w, h)) # 输出:width = 4 height = 5 area = 20
三、函数的调用
定义函数后,就可以通过函数名进行调用。函数调用的方式很灵活,可以在另一个函数中调用,也可以直接从Python命令提示符执行。
函数调用实例
#!/usr/bin/python3# 定义函数def printme( str ): # 打印任何传入的字符串 print (str) return# 调用函数printme(\"我要调用用户自定义函数!\") # 输出:我要调用用户自定义函数!printme(\"再次调用同一函数\") # 输出:再次调用同一函数
四、参数传递
在Python中,类型属于对象,而变量没有类型,它仅仅是对象的引用(指针)。理解参数传递需要先了解可更改对象和不可更改对象的区别。
可更改与不可更改对象
- 不可更改对象:strings(字符串)、tuples(元组)、numbers(数字)。当给变量重新赋值时,实际是生成新对象并让变量指向它
- 可更改对象:list(列表)、dict(字典)等。可以修改对象内部的值,而对象本身的引用不变
参数传递机制
- 传递不可变对象:类似C++的值传递,函数内部修改不会影响外部变量
- 传递可变对象:类似C++的引用传递,函数内部修改会影响外部变量
传不可变对象实例
通过id()
函数查看内存地址变化:
def change(a): print(id(a)) # 指向同一个对象 a = 10 print(id(a)) # 指向新对象a = 1print(id(a)) # 输出:4379369136change(a) # 输出:4379369136 4379369424
传可变对象实例
#!/usr/bin/python3def changeme(mylist): \"修改传入的列表\" mylist.append([1,2,3,4]) print(\"函数内取值: \", mylist) return# 调用函数mylist = [10,20,30]changeme(mylist)print(\"函数外取值: \", mylist) # 内外输出结果相同
输出结果:
函数内取值: [10, 20, 30, [1, 2, 3, 4]]函数外取值: [10, 20, 30, [1, 2, 3, 4]]
五、参数类型
Python函数支持多种参数类型,灵活使用可以让函数更加强大和易用。
1. 必需参数
必须以正确的顺序传入,数量必须和声明时一致。
#!/usr/bin/python3def printme(str): print(str) return# 调用时不加参数会报错printme() # 报错:TypeError: printme() missing 1 required positional argument: \'str\'
2. 关键字参数
允许函数调用时参数顺序与声明时不一致,Python解释器会根据参数名匹配值。
#!/usr/bin/python3def printinfo(name, age): print(\"名字: \", name) print(\"年龄: \", age) return# 调用时参数顺序可以调换printinfo(age=30, name=\"xcLeigh\")
输出结果:
名字: xcLeigh年龄: 30
3. 默认参数
调用函数时如果没有传递参数,就使用默认值。
#!/usr/bin/python3def printinfo(name, age=30): print(\"名字: \", name) print(\"年龄: \", age) returnprintinfo(age=20, name=\"xcLeigh\")print(\"------------------------\")printinfo(name=\"xcLeigh\") # 不传递age参数,使用默认值30
输出结果:
名字: xcLeigh年龄: 20------------------------名字: xcLeigh年龄: 30
4. 不定长参数
用于处理比声明时更多的参数,有两种形式:
(1)带一个星号*
的参数
会以元组(tuple)的形式导入,存放所有未命名的变量参数。
#!/usr/bin/python3def printinfo(arg1, *vartuple): \"打印任何传入的参数\" print(\"输出: \") print(arg1) for var in vartuple: print(var) return# 调用函数printinfo(10)printinfo(70, 60, 50)
输出结果:
输出:10输出:706050
(2)带两个星号**
的参数
会以字典的形式导入。
#!/usr/bin/python3def printinfo(arg1, **vardict): \"打印任何传入的参数\" print(\"输出: \") print(arg1) print(vardict)# 调用函数printinfo(1, a=2, b=3) # 输出:1 {\'a\': 2, \'b\': 3}
(3)单独出现的星号*
星号后的参数必须用关键字传入。
def f(a, b, *, c): return a + b + cf(1, 2, c=3) # 正确调用f(1, 2, 3) # 报错,c必须用关键字传入
六、匿名函数
Python使用lambda
创建匿名函数,它是一个表达式,函数体比def
简单很多。
语法
lambda [arg1 [,arg2,.....argn]]: expression
特点
- 只是一个表达式,函数体简单
- 拥有自己的命名空间,不能访问外部参数
- 不等同于C/C++的内联函数
实例
- 简单的匿名函数:
x = lambda a: a + 10print(x(5)) # 输出:15
- 带两个参数的匿名函数:
#!/usr/bin/python3sum = lambda arg1, arg2: arg1 + arg2print(\"相加后的值为: \", sum(10, 20)) # 输出:30print(\"相加后的值为: \", sum(20, 20)) # 输出:40
- 在函数中封装匿名函数:
def myfunc(n): return lambda a: a * nmydoubler = myfunc(2) # 创建一个翻倍函数mytripler = myfunc(3) # 创建一个三倍函数print(mydoubler(11)) # 输出:22print(mytripler(11)) # 输出:33
七、return语句
return [表达式]
用于退出函数,选择性地向调用方返回表达式。不带参数的return
返回None
。
实例
#!/usr/bin/python3def sum(arg1, arg2): total = arg1 + arg2 print(\"函数内: \", total) return total# 调用函数total = sum(10, 20)print(\"函数外: \", total)
输出结果:
函数内: 30函数外: 30
八、强制位置参数(Python3.8+)
Python3.8新增了/
语法,用于指明函数形参必须使用位置参数,不能使用关键字参数形式。
语法示例
def f(a, b, /, c, d, *, e, f): print(a, b, c, d, e, f)
a
和b
必须使用位置参数c
和d
可以是位置参数或关键字参数e
和f
必须使用关键字参数
正确调用
f(10, 20, 30, d=40, e=50, f=60) # 正确
错误调用
f(10, b=20, c=30, d=40, e=50, f=60) # 错误,b不能用关键字参数f(10, 20, 30, 40, 50, f=60) # 错误,e必须用关键字参数
总结
函数是Python编程的基础,掌握函数的定义、调用和参数传递机制,能够帮助你编写更高效、更易维护的代码。本文从基本概念到高级特性,全面介绍了Python3函数的相关知识,希望能为你的Python学习之路提供帮助。
建议多动手实践文中的示例代码,加深对函数用法的理解。在实际开发中,合理设计函数结构,能够显著提高代码质量和开发效率。
💡下一篇咱们学习 Python3 lambda匿名函数全面学习教程!
附录:扩展学习资源
- 官方资源:
- Python官网:https://www.python.org
- PyPI:https://pypi.org(查找第三方库)
- 安装包等相关文件(另附带pycharm工具),网盘下载地址:https://pan.quark.cn/s/649af731037c
- 学习资料视频和文档资源,网盘下载地址: https://pan.quark.cn/s/ee16901a8954
- 本专栏特色资源:
- 代码资源仓库:CSDN专属资源在线获取
- 海量Python教程:关注公众号:xcLeigh,获取网盘地址
- 一对一答疑:添加微信与博主在线沟通(
备注“Python专栏”
)
联系博主
xcLeigh 博主,全栈领域优质创作者,博客专家,目前,活跃在CSDN、微信公众号、小红书、知乎、掘金、快手、思否、微博、51CTO、B站、腾讯云开发者社区、阿里云开发者社区等平台,全网拥有几十万的粉丝,全网统一IP为 xcLeigh。希望通过我的分享,让大家能在喜悦的情况下收获到有用的知识。主要分享编程、开发工具、算法、技术学习心得等内容。很多读者评价他的文章简洁易懂,尤其对于一些复杂的技术话题,他能通过通俗的语言来解释,帮助初学者更好地理解。博客通常也会涉及一些实践经验,项目分享以及解决实际开发中遇到的问题。如果你是开发领域的初学者,或者在学习一些新的编程语言或框架,关注他的文章对你有很大帮助。
亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。
愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。
至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。
💞 关注博主 🌀 带你实现畅游前后端!
🏰 大屏可视化 🌀 带你体验酷炫大屏!
💯 神秘个人简介 🌀 带你体验不一样得介绍!
🥇 从零到一学习Python 🌀 带你玩转Python技术流!
🏆 前沿应用深度测评 🌀 前沿AI产品热门应用在线等你来发掘!
💦 注:本文撰写于CSDN平台,作者:xcLeigh(所有权归作者所有) ,https://xcleigh.blog.csdn.net/,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。
📣 亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(或者关注下方公众号,看见后第一时间回复,还有海量编程资料等你来领!),博主看见后一定及时给您答复 💌💌💌