核心语法 · 10 道样题

Python 函数练习题与答案

函数不只是有名字的代码块。它是一条边界:值进去,结果出来,局部名字不应该泄漏。这些题目检查的就是这条边界。

35 道题在完整题库中 · 13 道选择 · 13 道填空 · 9 道输出

这个主题考什么

  • 区分打印一个值和返回一个值。
  • 追踪参数、默认值以及局部与全局名字。
  • 用 lambda 写短回调,同时不隐藏主要逻辑。

常见错误

  • 调用方需要返回值时,函数里却只用了 print。
  • 使用 [] 这样的可变默认值,结果发现它跨调用保留。
  • 忘记没有 return 的函数会返回 None。
样题

样题

10

从完整题库中挑出的 10 道代表题。先自己作答,再展开答案。

  1. 选择题q0644

    1. 小明写了个打印菜单的函数,里面没有 return 语句。调用后返回什么?

    1. 报错
    2. 0
    3. None
    4. 空字符串
    显示答案

    答案

    C. None

    解析: 没有 return 的函数仍然会返回值,这个值就是 None。它与打印不同:调用得到 None,而 print 早已把文本送到屏幕。

  2. 选择题q0651

    2. 🧋 小明写了个打印菜单的函数,def f(): pass 的返回值?

    1. None
    2. 0
    3. 报错
    4. 空字符串
    显示答案

    答案

    A. None

    解析: pass 什么也不做,没有 return 语句,调用结果仍是 None。只靠副作用起作用的函数总是返回 None。

  3. 选择题q0655

    3. 🧋 小明在函数里修改全局的奶茶总数,以下代码输出什么? count=0 def f(): global count count+=1 f() print(count)

    1. 0
    2. 1
    3. 报错
    4. None
    显示答案

    答案

    B. 1

    解析: 声明之后函数体能重新绑定模块级的 count,count += 1 把外层的 0 改成 1。没有 global 这一行会抛 UnboundLocalError。

  4. 选择题q0665

    4. 函数没有写 return,调用结果是什么?

    1. 0
    2. 空字符串
    3. None
    4. False
    显示答案

    答案

    C. None

    解析: 没有 return 或者只写空 return 的函数,隐式结果都是 None。它不是 0,也不是空字符串。

  5. 填空题q0646

    5. 小明函数内定义的临时变量(如一杯奶茶的配料),称为 ___ 变量

    显示答案

    答案

    局部

    解析: 函数内部赋值的名字存在于那次调用的局部命名空间,调用返回后消失;文件其他地方看不到它,也不会互相污染,调用栈一退就没了。

  6. 填空题q0659

    6. 🧋 小明函数内的临时变量,函数内部定义的变量称为 ___ 变量

    显示答案

    答案

    局部

    解析: 局部变量只能在创建它的函数内访问;所以不同函数可以放心复用 total 这类常见名字而不会冲突,作用域互不干扰。

  7. 填空题q0670

    7. 接收任意数量位置参数,横线填什么?

    def total(*____):
        return sum(prices)
    显示答案

    答案

    prices

    解析: 星号把所有多出来的位置参数收进元组 prices;sum() 再求和,参数名前的 * 就是全部语法,名字可以随意取。

  8. 输出预测q0645

    8. 函数套函数调用,输出什么?

    def f(x):
        return x * 2
    print(f(f(3)))
    显示答案

    答案

    12

    解析: 内层 f(3) 先执行得到 6,外层再把它翻倍成 12;参数总在所属调用之前求值,嵌套调用永远从里往外。

  9. 输出预测q0661

    9. 函数带默认参数,两次调用分别返回什么?

    def add_one(x=2):
        return x + 1
    print(add_one(), add_one(5))
    显示答案

    答案

    3 6

    解析: add_one() 使用默认值 2 得到 3,add_one(5) 覆盖默认值得到 6。默认值只在省略实参时生效。

  10. 输出预测q0664

    10. 闭包保存外层变量,outer(2)(3) 输出多少?

    def outer(x):
        def inner(y):
            return x + y
        return inner
    print(outer(2)(3))
    显示答案

    答案

    5

    解析: outer(2) 返回闭包 inner,它记住了 x=2,再用 3 调用得到 5。outer 返回后 x 仍被闭包保留。

常见问题

print 和 return 有什么区别?

print 把文字写到控制台;return 把值交回调用方,让其他表达式继续使用。

为什么可变默认参数有风险?

默认对象在函数定义时只创建一次,修改会跨调用保留。可以用 None 作为默认值,在函数内部再创建新对象。

继续保持练习节奏。

完整题库会在这个浏览器里记住进度,支持按主题筛选,并包含每日一题和错题重练。

打开完整练习