Python函数疑问:英里转公里代码报错原因及用法咨询
Python函数相关问题解答
1. NameError报错原因
你在函数内部定义的km是局部变量,Python的作用域规则明确:函数内部定义的变量只能在函数内部访问,函数执行结束后,局部变量会被销毁,外部代码根本无法识别它。所以你在函数外面写print(km)时,Python找不到名为km的变量,就会抛出NameError。
原代码里能拿到类似km的值,是因为函数用return km把局部变量的数值返回了,外面通过result=distance_con(mile)拿到的是返回值,本质上result是新变量,和函数内部的km不是同一个。
2. 函数调用赋值报错原因
如果函数没有return语句,调用它时默认返回None。如果你把这种无有效返回值的函数调用结果赋值给变量(比如之前的result=distance_con(mile)),虽然Python不会直接报错,但代码检查工具会提示Assigning result of a function call, where the function has no return——这是在提醒你:你可能误以为这个函数有返回值才去赋值,但实际上它返回的是None,这种赋值大概率没有实际意义。
3. def函数的使用时机与方法
使用时机
- 重复代码复用:当某段逻辑需要多次执行时,封装成函数,避免重复编写相同代码
- 拆分复杂逻辑:把大功能拆成多个小函数,每个函数只负责单一任务,代码更清晰、易维护
- 隐藏实现细节:只对外暴露调用接口,内部逻辑修改不影响外部调用
使用方法
- 定义格式:用
def 函数名(参数列表):开头,缩进块内编写函数逻辑def distance_con(mile): km = 1.6 * mile return km - 参数可设默认值:比如
def distance_con(mile=0):,调用时不传参就使用默认值 - 返回值:用
return语句返回结果,没有return则默认返回None - 调用方式:直接写
函数名(参数),比如distance_con(12),有返回值时可赋值给变量
4. Python学习资料推荐
- Python官方教程:权威入门资料,覆盖基础到进阶,内容严谨准确
- 《Python编程:从入门到实践》:适合新手,搭配大量实战练习,兼顾理论学习和项目实践
- 《流畅的Python》:进阶必备,深入讲解Python核心特性与最佳实践
- 廖雪峰Python教程:通俗易懂的中文教程,知识点讲解清晰,适合入门阶段快速上手
内容的提问来源于stack exchange,提问作者Razak
相关产品推荐
相关产品推荐

