Python进阶函数编程核心概念及实战应用完整详解
Python中的函数通过def关键字定义,将语句打包成可复用的代码块,减少重复劳动并提升扩展性。参数包括形参实参、默认参数、关键参数及非固定参数*args和**kwargs。全局变量需用global关键字在函数内修改。内置函数如abs、all、map、zip等覆盖日常开发需求。
在Python编程实践中,函数是一个核心概念,它就像代码的“工具箱”——将一系列语句整合在一起,赋予一个名称,之后只需调用这个名称,就能触发整段逻辑。在Python中,使用def关键字即可轻松实现。
我们先来了解如何定义函数。简单来说,函数就是把一组语句打包成一个变量名,调用这个变量名就能执行这些语句。这听起来很直观,但其妙处在于:让你告别重复编码,提升代码的可扩展性,也让后续维护变得更轻松。例如,定义一个简单的say_hello函数,它会打印"Hello World";之后调用say_hello()即可输出结果。
函数的定义与创建
函数的好处显而易见,归纳起来主要有三点:
- 减少重复逻辑代码的编写
- 提升程序逻辑的可扩展性
- 简化项目代码的维护工作
那么如何创建函数呢?
复制代码# 函数
def say_hello():
print("Hello World")
say_hello()
复制代码Hello World
函数的参数
函数参数这部分内容较多,但逻辑清晰。形参和实参是最基础的概念——形参是定义函数时使用的“占位符”,实参是调用时实际传入的具体值。例如,def sum1(a, b):中的a、b就是形参,而sum1(5, 6)中的5、6则是实参。
接下来是默认参数。这个概念很好理解:如果你希望某个参数拥有默认值,可以在定义时直接赋值。比如def oblong_area(a, b=3):,当调用oblong_area(2)时,b自动取默认值3,结果就是6。但要注意,默认参数必须放在参数列表的最后。
然后是关键字参数。通常情况下,传参需要按顺序,但如果调用时指定参数名,就可以打乱顺序。例如oblong_volume(2, z=4, y=3),这里y和z虽然未按顺序书写,但因为使用了关键字参数,依然能正确执行。但有一条规则:关键字参数必须放在位置参数之后,否则会报错。
最后是非固定参数,即不确定要传入多少个参数的情况。Python通过*args和**kwargs来处理:前者接收元组,后者接收字典。例如def get_info(name, age, *args):,调用时多传的参数会被打包成元组;而def get_info(name, age, **kwargs):则会把sex="男"这样的参数打包成字典。
全局变量与局部变量
变量作用域是绕不开的话题。全局变量定义在函数外部,在整个程序生命周期内均可访问。局部变量定义在函数内部,仅在函数调用时存在,调用结束后即被销毁。
一个常见的场景是:如何在函数内部修改全局变量?答案是使用global关键字声明。例如:
复制代码# 修改全局变量
def change_global_var():
global global_var
global_var = "修改全局变量"
print(global_var)
如果在函数内部未声明global就直接修改全局变量,Python会认为你是在创建一个新的局部变量,这通常是初学者容易踩的坑。
内置函数
Python内置了大量实用函数,几乎覆盖了日常开发中的各种需求。官方文档是必读的,下面这张图可以帮你快速定位。

这里挑选几个常用的函数进行说明:
abs():返回绝对值,例如abs(-1)得到1。all()和any():检查可迭代对象的布尔值,all()要求所有元素为True,any()只要有一个为True即可。chr()和ord():字符与ASCII码互相转换,chr(65)返回'A',ord('a')返回97。dict():创建字典,非常灵活。dir()和help():调试时特别有用,dir()列出对象的属性和方法,help()提供详细文档。id():返回对象的内存地址。input():获取用户输入。int()、str()、list():类型转换,这些函数大家都很熟悉。len():返回长度。locals():返回当前局部符号表,调试时能查看所有局部变量。map():对可迭代对象应用函数,返回迭代器。max()、min():返回最大值和最小值。open():打开文件,返回文件对象。print():输出到标准输出。range():生成序列,常用于循环。round():四舍五入,可指定小数位数。sum():求和。type():返回类型。zip():将多个可迭代对象打包成元组。enumerate():同时遍历索引和值,在for循环中非常好用。
以下是一段综合演示代码,可以一目了然地了解这些内置函数的用法:
复制代码# 内置函数
a = -1
arr = [1, 2, 3]print("hello world") # 将指定对象打印到标准输出(通常是屏幕)
print(abs(a)) # 返回数字的绝对值
print(all(arr)) # 如果可迭代对象中的所有元素都为True(或可迭代对象为空),则返回True
print(any(arr)) # 如果可迭代对象中的任何元素为True,则返回True
print(max(arr)) # 返回给定参数中的最大值
print(min(arr)) # 返回给定参数中的最小值
print(chr(65)) # 返回整数对应的ASCII字符
print(ord('a')) # 返回单个字符(Unicode码点)的整数值
print(dict(a=1, b=2, c=3)) # 创建一个字典
print(dict([('a', 1), ('b', 2), ('c', 3)]))
print(dir()) # 返回对象的属性列表。如果未指定对象,则返回当前范围内的变量、方法和定义的类型列表
print(dir(str))
help(print) # 提供有关模块、关键字、属性等的帮助信息
print(id(a)) # 返回对象的“身份”(一个整数,通常是其在内存中的地址)
print(str(123)) # 将对象转换为字符串形式
print(int("123")) # 将数字或字符串转换为整数
print(len("123")) # 返回对象(如字符串、列表、元组等)的长度或项目数
print(list((1, 2, 3))) # 将可迭代对象转换为列表
print(locals()) # 返回当前局部符号表的字典。如果在一个函数内部调用它,返回的字典将包括函数的局部变量名及其值
print(list(map(lambda x: x ** 2, arr))) # 将一个函数应用于一个或多个可迭代对象的项,并返回一个新的迭代器,其中包含函数的结果
print(list(range(5))) # 返回一个不可变的序列类型,通常用于在循环中生成一个数字序列
print(round(3.1415926, 2)) # 将浮点数四舍五入到指定的小数位数
print(sum([1, 2, 3, 4, 5])) # 返回可迭代对象(如列表、元组或集合)中所有项的总和
print(type(1)) # 返回对象的类型
print(list(zip(["a", "b", "c"], [1, 2, 3]))) # 将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象
# 将可迭代的对象(列表、元组、集合)组合为一个缩影序列,同时可以输出数据和下标,for循环
for index, item in enumerate(["a", "b", "c"]):
print(index, item)# 用于打开一个文件,返回一个文件对象(通常是一个_io.TextIOWrapper实例),该对象可以用于读取或写入文件
with open('test.txt', 'w') as f:
f.write("hello world")# 从用户获取输入
user_input = input("请输入:")
print(user_input)
输出结果如下:
复制代码hello world
1
True
True
3
1
A
97
{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2, 'c': 3}
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'a', 'arr', 'change_global_var', 'get_info', 'global_var', 'oblong_area', 'oblong_volume', 'print_global_var', 'print_local_var', 'say_hello', 'sum1']
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
Help on built-in function print in module builtins:print(*args, sep=' ', end='n', file=None, flush=False)
Prints the values to a stream, or to sys.stdout by default. sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.140710075548728
123
123
3
[1, 2, 3]
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000220496B8D70>, '__spec__': None, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\Projects\pyCharm\demo1\test4.py', '__cached__': None, 'say_hello': <function say_hello at 0x00000220498BB5E0>, 'sum1': <function sum1 at 0x0000022049C66090>, 'oblong_area': <function oblong_area at 0x000002206ACBE090>, 'oblong_volume': <function oblong_volume at 0x000002206ACBD170>, 'get_info': <function get_info at 0x000002206AE28250>, 'global_var': '修改全局变量', 'print_global_var': <function print_global_var at 0x000002206AD53AB0>, 'print_local_var': <function print_local_var at 0x000002206AE28300>, 'change_global_var': <function change_global_var at 0x000002206AE283B0>, 'a': -1, 'arr': [1, 2, 3]}
[1, 4, 9]
[0, 1, 2, 3, 4]
3.14
15
'int' >
[('a', 1), ('b', 2), ('c', 3)]
0 a
1 b
2 c
请输入:
从函数定义到参数传递,再到变量作用域和内置函数,Python在这一环节的设计非常清晰。熟练掌握这些内容后,写代码会更加顺畅。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
FileZilla断点续传设置与操作指南
FileZilla支持断点续传,需客户端与服务器均开启REST命令。设置中确保启用断点续传及继续传输选项。中断后自动或手动从断点恢复。注意服务器支持、传输模式匹配及文件完整性校验。
Debian系统C++编译器位置查找方法
在Debian系统中,通过apt安装的C++编译器g++默认位于 usr bin g++,可使用which或whereis命令验证路径。g++属于build-essential软件包,若未安装则需执行sudoaptinstallbuild-essential。该包还包含gcc、make等编译工具链,g++是GNUC++编译器,实际是符号链接指向具体版本,验证
Debian系统安装C++环境的方法
在Debian系统安装C++开发环境:先sudoaptupdate更新包列表,再sudoaptinstallbuild-essential安装编译工具链,或单独安装g++。用g++--version验证。可选安装VSCode、GDB、CMake等工具并配置默认编译器版本。
Debian系统C++开发环境配置指南
在Debian系统中,先执行aptupdate更新软件包列表,再安装build-essential元包即可获得GCC、G++、Make和GDB。通过运行g++--version命令验证编译器安装成功。可选安装VisualStudioCode、CLion等编辑器及CMake构建工具,并编写一个简单的HelloWorld程序,使用g++编译运行以验证环境配置正确
通过cpustat工具查看CPU状态的具体方法与详细步骤
cpustat是sysstat包中的CPU监控工具,可按固定间隔输出带时间戳的CPU使用率统计。安装后运行cpustat即可实时显示各核心信息,常用指标包括%usr、%sys、%iowait、%steal和%idle,用于定位用户态、内核态或I O瓶颈。高级选项-c可显示单核统计,-m可同时查看内存使用,适合脚本采集和性能分析。
- 热门数据榜
相关攻略
2026-07-25 22:29
2026-07-25 22:29
2026-07-25 22:29
2026-07-25 22:29
2026-07-25 22:18
2026-07-25 22:18
2026-07-25 22:18
2026-07-25 22:18
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

