本文待整理到:
中去。
【问题】
| 要求是  我是这样写的 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 | 
【问题解答】
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,你改为别人任何名字,都是无所谓的。
【总结】
不论是,
调用函数中的,传递给被调用函数的变量,也只是普通的,调用函数中的局部变量而已->其变量名,想叫啥就叫啥;
被调用函数中的参数->等价于被调用函数中的局部变量->唯一不同的是,它们的值,是在函数调用发送时,从被调用函数传递过来的->给被调用函数的参数进行初始化赋值而已
=> 调用函数中的参数,和被调用函数的参数,两者的变量名之间,没半毛钱关系;