return和print一样吗
时间: 2024-02-28 10:39:52 浏览: 81
不一样。`print()`是Python中用于输出信息的函数,它会将括号中的内容打印到控制台上,不会返回任何值。而`return`是用于从函数中返回值的关键字,它可以将一个值传递回调用该函数的地方。`return`语句会终止函数的执行并返回一个值。在函数中,`return`语句只能返回一个值,但可以是任何类型的值,包括数字、字符串、列表、元组、字典等。
相关问题
def func(): print("我是func函数") value = (11, 22, 33, 44) return value def outer(origin): def inner(): print('inner') res = origin() print("after") return res return inner func = outer(func) result = func()
程序的输出结果应该是:
inner
我是func函数
after
同时,result 应该是 (11, 22, 33, 44)。
这段程序是一个实现了函数闭包的例子,outer 函数接收一个函数 origin 作为参数,并返回一个新的函数 inner,inner 函数可以调用 origin 函数,并在这个调用前后分别输出 'inner' 和 'after'。在这里,outer 函数通过返回 inner 函数来“捕获”了 origin 函数,并且在 inner 函数内部可以像调用普通的函数一样调用 origin 函数。为了使得 func 函数可以被 outer 函数调用,我们需要将 func 函数作为参数传递给 outer 函数,然后将 outer 函数的返回值重新赋值给 func。最后调用 func() 函数会返回 (11, 22, 33, 44)。
class A i double f(double x,double y)f return x+y; } static int g(int n) i return n* n; } } class B extends A i double f(double x,double y) i double m = super.f(x,y);return m+x* y; } static int g(int n){ int m = A.g(n);return m +n; } }public class E i public static void main(String[ ] args){ Bb = new B(); system.out.print1n(b.f(10.0,8.0));System.out.print1n(b.g( 3)); Aa = new B(); System.out.print1n(a.f(10.0,8.0));System.out.print1n(a.g(3)); } }运行结果
这段代码中有一些错误,我先进行修正:
```
class A {
public double f(double x, double y) {
return x + y;
}
public static int g(int n) {
return n * n;
}
}
class B extends A {
public double f(double x, double y) {
double m = super.f(x, y);
return m + x * y;
}
public static int g(int n) {
int m = A.g(n);
return m + n;
}
}
public class E {
public static void main(String[] args) {
B b = new B();
System.out.println(b.f(10.0, 8.0));
System.out.println(b.g(3));
A a = new B();
System.out.println(a.f(10.0, 8.0));
System.out.println(a.g(3));
}
}
```
修正后,运行结果为:
```
108.0
12
108.0
9
```
解释一下运行结果:
1. `b.f(10.0, 8.0)` 调用的是类 B 中的 `f` 方法,先调用了 A 类中的 `f` 方法求出 `m` 的值,然后返回 `m+x*y`,即 `18+80=108.0`。
2. `b.g(3)` 调用的是类 B 中的 `g` 方法,先调用了 A 类中的 `g` 方法求出 `m` 的值,然后返回 `m+n`,即 `9+3=12`。
3. `a.f(10.0, 8.0)` 调用的是类 B 中的 `f` 方法,因为 `a` 是一个 `A` 类型的变量,但是 `a` 实际上是一个 `B` 类型的对象,所以调用的是 `B` 类中的 `f` 方法。和上面的情况一样,先调用了 A 类中的 `f` 方法求出 `m` 的值,然后返回 `m+x*y`,即 `18+80=108.0`。
4. `a.g(3)` 调用的是类 A 中的 `g` 方法,因为 `g` 是一个静态方法,所以不会根据对象类型来调用方法。直接返回 `n*n`,即 `3*3=9`。
阅读全文