可以在2个不同的定义中使用相同的参数吗?蟒蛇

时间:2014-04-27 15:27:35

标签: python function parameters

说我在Python中有一个函数:

def createCube(no_of_cubes):

此函数创建立方体,其创建的立方体数量由参数设置:no_of_cubes

如果我想创建另一个功能:

def moveCubes():

我想在这个函数中使用参数no_of_cubes,并且参数使用为第一个函数输入的相同整数。我该怎么办?或者是不可能的?

4 个答案:

答案 0 :(得分:1)

参数只是函数的一个参数,就像你在数学函数中所拥有的那样,例如f(x) = 2*x。同样在数学中,您可以使用相同的参数定义无限问题,例如g(x) = x^2

参数的名称不会改变任何内容,它只是你的函数将如何调用该值。您可以随意调用它,例如f(potato) = 2 * potato。但是,有一些广泛的命名约定 - 例如,在数学中,您可以优先考虑实际变量的小写罗马字母。在编程中,就像你一样,你想给出有意义的名字 - 如果它引用了多维数据集的数量,调用它no_of_cubes会让你更容易阅读你的程序而不是调用它oquhiaisnca,所以赞誉在那。

我不确定这一点如何适合你的程序。其他一些答案提出了实现这一目标的方法。如果它只是两个松散的函数(不是类的一部分),你可以在函数之外定义一个变量来做你想要的,如下所示:

1: n = 4 # number of cubes, bad variable name
2: def createCube(no_of_cubes):
3:     # things
4: def moveCubes(no_of_cubes):
5:     # different things
6: createCube(n)
7: moveCubes(n)

这里发生的是第6行调用函数createCube并将n(即4)作为参数。然后第7行调用moveCubes,为其提供与n相同的参数。

这是一个非常基本的问题,所以我假设你是编程的新手。如果你参加一些python教程,它可能会有很大帮助。我推荐Codecademy,但您可以选择其他几个。祝你好运!

答案 1 :(得分:0)

有可能。但是这两个定义将该参数作为自己的参数。我的意思是该参数仅适用于定义范围。它可能对不同定义中的另一个相同名称参数无害。

答案 2 :(得分:0)

您可以在createCube()中加载函数moveCubes()。例如:

def createCube(no_of_cubes):
    # Do stuff
    moveCubes(no_of_cubes)

def moveCubes(no_of_cubes):
    # Do more stuff

或者您可以从函数中定义no_of_cubes,以便所有人都可以访问它。

no_of_cubes = 5

def createCube():
    global no_of_cubes
    # Do stuff

def moveCubes():
    global no_of_cubes
    # Do stuff

答案 3 :(得分:0)

如果你做不到,可能你不应该这样做。

如果他们是两个独立的功能(不是嵌套的),他们不应该共享参数。

如果他们确实以某种方式建立联系,更好的方法是定义一个类:

class Cube:
    def __init__(self, no_of_cubes):
        self.no_of_cubes = no_of_cubes

    def create_cube(self):
        # use self.no_of_cubes
        pass

    def move_cubes(self):
        # use self.no_of_cubes
        pass

c = Cube(no_of_cubes)
c.create_cube()
c.move_cubes

除非你知道自己在做什么,否则不要定义全局变量。