大家好,我是小宇的爸爸老张。过去二十年一直在做软件开发,写过C++、golang,也用Python做过不少项目。这个寒假,我决定陪儿子小宇一起备战全国青少年编程等级考试(Python四级),并用公众号记录我们的学习过程。既是复盘,也是分享。我们计划用15–20篇博客,全程记录这段学习旅程:包括错题分析、学习资源整理和心得反思等等。
今天学习的是Python函数。函数是GESP四级考试中的高频题,也是很多考生容易丢分的地方。究其原因,函数的参数传递机制、可变与不可变对象的区别、各种参数组合的调用规则,这些知识点光看懂不够,必须亲手拆解、反复琢磨,才能真正避开那些精心设计的陷阱。今天我和小宇集中攻克了函数的参数传递、可变与不可变对象、以及各种参数组合的调用规则。
以下是2025年12月份Python四级真题中的四道函数题,看看大家能否全部做对。
第 6 题 执⾏以下Python代码后,输出的结果是?( )
def modify(s): s = s.upper() return stext = "hello"modify(text)print(text)
A. helloB. HELLOC. NoneD. 报错
第 7 题 执⾏下⾯Python代码时,哪条调⽤会报错?( )
def func(*args, **kwargs): print(args, kwargs)
A. func(1, 2, x=3, y=4)B. func(a=1, b=2, 3, 4)C. func(1, 2, [3, 4])D. func([1, 2], *{'x': 3})
第 8 题 执⾏以下Python代码后,输出的结果是?( )
def func(*args): return sum(args)print(func(1, 2, *[3, 4]))
A. 10B. 6C. 7D. 报错
第 9 题 关于Python中全局变量与局部变量的描述,以下哪⼀项是错误的?( )
A. 局部变量在函数退出后失效B. 函数内需⽤ global 声明才能修改全局变量C. 全局变量不能和局部变量重名D. 使⽤ nonlocal 关键字可以在嵌套函数中修改其直接外层(⾮全局)作⽤域中的变量。
题目解析
第6题考点在于不可变对象的传递机制。核心知识点:Python的参数传递是“对象引用传递”,不可变对象任何时候都不会修改。
第7题 位置参数在前,关键字参数在后,顺序不能发生变化。
第8题,在定义函数时,单个星号表示收集位置参数为元组;在调用函数时,单个星号表示解包可迭代对象为独立参数。在定义函数时,双星号表示收集关键字参数为字典;在调用函数时,双星号表示解包为关键字参数。同一个符号,在定义和调用时是完全相反的操作。
第9题 局部变量和全局变量可以重名,在重名时的规则,在函数内部,局部变量会遮蔽全局变量。函数内对 变量 的引用和赋值,默认都是针对局部变量。如果想在函数内访问或修改全局变量,需要用 global 声明。
下一篇知识点,我们将进入python文件操作部分,我们已经进入了4级最难的地方。请大家继续坚持跟随我们学习的脚步。