首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Python的函数中使用参数而不是局部变量有什么区别?

在Python的函数中使用参数而不是局部变量有什么区别?
EN

Stack Overflow用户
提问于 2017-04-27 13:07:17
回答 1查看 301关注 0票数 0

您什么时候知道什么时候使用参数或局部变量(局部变量,我指的是在函数中声明的变量,如例2)?有时人们使用局部变量,有时他们在函数中使用参数。有什么关系?

代码语言:javascript
复制
def function(a, b):
    return a+b
function(2,3)

和:

代码语言:javascript
复制
def function():
    a = 2
    b = 3
    return a+b

这是一个非常简单的例子,但是如果函数要更大,什么时候使用局部变量而不是参数呢?请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-27 14:28:36

为了帮助回答这个问题,我想举一个例子来回答。

函数可以被认为是可重复的指令。所以我们可以有一个叫做fixCar()的函数。这个功能基本上是我们的机器人修理汽车的一套指令。我们想把车交给机器人修理,因为我们不知道我们要修理的是哪辆车,我们应该直接通过:

代码语言:javascript
复制
def fixCar(car):

这就产生了这样一种要求:我们必须把车交给机器人来修理,如果我们不把车交给机器人,机器人会如何修理汽车呢?

要修复汽车,机器人需要有基本工具,确保每次都可以传递基本工具(def fixCar(car, tools)),但是如果一组基本工具需要修复任何汽车,那么将这些工具作为局部变量包括在不需要每次指定它们的地方是有意义的:

代码语言:javascript
复制
def fixCar(car):
    tools = 'basic tools'

不管我们经过哪辆车,机器人都有基本的工具可以使用。如果我们想给他们特殊的工具来处理特殊的汽车,会发生什么呢?由于它可能是客户引入的一种特殊工具(想想高端汽车上的轮胎锁),我们将不得不将这套特殊工具通过参数传递给机器人:

代码语言:javascript
复制
def fixCar(car, specialTools):
    tools = 'basic tools'

但是,如果我们要传递一些工具,有时,而不是总是,我们可以设置一个默认的参数。这就产生了specialToolsoptional argument,这意味着如果我们没有传入任何内容,程序就不会抱怨,如果传入什么内容,程序将使用specialTools

代码语言:javascript
复制
def fixCar(carType, specialTools=None):
    if specialTools:
        print('I have special tools to work with')
    else:
        print('I didn't receive any special tools, but that's okie')
    tools = 'basic tools'

总之,局部变量可以是函数所需的东西,这样它就可以完成它的工作。参数是用于“配置”函数以以某种方式运行,或者是函数必须使用的“未知”因素。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43658802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档