最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【软件开发基础】调用函数中的变量名和被调用函数中的参数名之间的关系:没半毛钱关系

Soft Dev Basics crifan 3310浏览 0评论

本文待整理到:

【教程】计算机编程语言之基础知识

中去。


【问题】

求教一段python程序

要求是
Write a function, by_three, that calls a second function, cube, if a number is evenly divisible by 3 and Falseotherwise. You should then return the result you get from cube. As for cube, that function should return the cube of the number passed from by_three. (Cubing a number is the same as raising it to the third power).

我是这样写的

def by_three(x):
    if x%3==0: 
        return cube(x)
    else:
        return False
def cube(n):
    result=n**3
    return result
by_three(11)
by_three(12)
by_three(13)

有一点不太清楚的就是by_three里面,return cube(x),这里是应该用x吗?还是用n

x应该是一个argument吧?而n是一个parameter?调用的时候应该填写argument是么?

【问题解答】

1.如果你只是问

x和n有啥区别。

那标准答案就是:

除了字母不一样,其他没啥区别。都是某个函数中的某个参数(变量)而已。

而变量名,是可以(在保证符号语法要求的前提下)随便写的。

比如你的cube函数,就可以改为:

def cube(x):
    result=x**3
    return result

而更加好的写法是:

def cube(inputIntValue):
    threeCubedResult =inputIntValue**3;
    return threeCubedResult

这样才叫做代码的可读性好一些。

2.从你代码本意看,就是

当输入数据是3的倍数时,就返回该数的3次方

否则就返回False

而且代码也是如你所愿的去运行了。

你还有啥疑问???

3.你说的

argument

parameter

简单说:

都是个英文单词,都可以表示函数的参数。

用哪个都可以。

4.反正是说了半天,没看到你到底想问啥。。。。


貌似终于看懂你问的了。。。

简答:

用x

详解:

用x还是n

主要是:

你本身对于函数,参数调用,的概念,完全搞混淆了。

简单解释就是:

你先去搞懂函数变量的概念

然后就自动懂了如何调用函数,如何传递参数

此处就是:

def by_three(x):
if x%3==0: 
    return cube(x)
else:
    return False

中的x,是函数by_three的一个变量

此变量的值,是输入的参数决定的

如果改为n,那么就是:

代码非法,

因为当前函数by_three内,根本就没有n这个变量

所以无法使用。

再总结为:

函数实现的时候,你的函数参数的名字和你被调用的时候,没有半毛钱关系。

cube函数实现时,用的参数名字叫做n,而by_three中调用cube的时候写的x

两者没有关系。

有关系的是:

在别的函数(by_three)中,调用被调用的那个函数(cube)时,确保传递的参数类型是要匹配的,一致的(此处都是int型)


【深入的解释:调用函数中的参数的名字和被调用函数中的参数名字,没有半毛钱关系】

对于之类问题,再举个通用的例子:

void functionCaller()
{
    int para1 = 1;
    int para2 = 2;
    
    functionBeCalled(para1, para2);
}

int functionBeCalled(int para1, int para2)
{
    int sum = para1 + para2;
    return sum;
}

其中的,调用函数functionCaller中的para1和para2,和被调用函数functionBeCalled中的,函数参数的para1和para2,没有任何关系。

即,换成这种:

void functionCaller()
{
    int para3 = 1;
    int para4 = 2;
    
    functionBeCalled(para3, para4);
}

int functionBeCalled(int para1, int para2)
{
    int sum = para1 + para2;
    return sum;
}

也是完全可以的,含义没有任何改变。

 

对于上述例子中的几个变量,更深入的解释,其实是:

para3和para4,都是函数functionCaller中的普通的一个,局部,函数内部的,变量而已。

然后调用别的函数(functionBeCalled),将此两个普通的局部变量的值,传递到被调用的函数中去;

 

然后被调用函数functionBeCalled中的para1和para2,也只是普通的,函数functionBeCalled内部的局部变量而已。

 

所以,如上的代码,其真实的含义,可以理解为:

void functionCaller()
{
    int para3 = 1;
    int para4 = 2;
    
    {
        int para1 = para3;
        int para2 = para4;

        int sum = para1 + para2;
    }
}

可见,对于para3和para4,你改为别人任何名字,都是无所谓的。

 

【总结】

不论是,

调用函数中的,传递给被调用函数的变量,也只是普通的,调用函数中的局部变量而已->其变量名,想叫啥就叫啥;

被调用函数中的参数->等价于被调用函数中的局部变量->唯一不同的是,它们的值,是在函数调用发送时,从被调用函数传递过来的->给被调用函数的参数进行初始化赋值而已

=> 调用函数中的参数,和被调用函数的参数,两者的变量名之间,没半毛钱关系;

转载请注明:在路上 » 【软件开发基础】调用函数中的变量名和被调用函数中的参数名之间的关系:没半毛钱关系

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
88 queries in 0.169 seconds, using 22.05MB memory