柿子饼同学 发表于 2021-2-24 17:33:23

定义函数时的问题

刚开始学函数,我有下面几个问题:{:10_297:}
0定义函数时是不是如果不写return它还是有返回值none?
1下面这两个函数有什么不同
def fire():
        pass
        return '轰,发射成功!'
以及
def fire():
        print('轰,发射成功!')

我看他们返回的都是一样的,那到底有什么不同呢?{:10_245:}
可不可以用print()代替return呢?
谢谢大家{:10_254:}

z5560636 发表于 2021-2-24 17:34:59

pass是python里面的关键字,作用是占位符。
浅显的理解pass   就是没什么用的关键字,啥也不干。

z5560636 发表于 2021-2-24 17:36:37

def fire():
      print('轰,发射成功!')
print(fire())


会输出:轰,发射成功!,None

柿子饼同学 发表于 2021-2-24 17:41:22

z5560636 发表于 2021-2-24 17:36
会输出:轰,发射成功!,None

可是正常使用是一样的呀

昨非 发表于 2021-2-24 17:48:40

柿子饼同学 发表于 2021-2-24 17:41
可是正常使用是一样的呀

并不是所有的返回值都是用来打印的
需要打印的时候,用return+调用的时候print 和 直接打印是一样的

更多的时候返回值另有他用,不能用print代替

柿子饼同学 发表于 2021-2-24 17:53:06

昨非 发表于 2021-2-24 17:48
并不是所有的返回值都是用来打印的
需要打印的时候,用return+调用的时候print 和 直接打印是一样的



举个栗子好么,谢谢{:10_297:}

柿子饼同学 发表于 2021-2-24 17:55:13

还是不知道return除了打印还能干什么

昨非 发表于 2021-2-24 17:57:31

柿子饼同学 发表于 2021-2-24 17:53
举个栗子好么,谢谢

这两种情况效果是一样地def fun1():
    return 'hello'

def fun2():
    print('hello')

print(fun1())
fun2()

结果:hello
hello

z5560636 发表于 2021-2-24 18:09:12

柿子饼同学 发表于 2021-2-24 17:41
可是正常使用是一样的呀

def fire():
      print('轰,发射成功!')
a = fire()
print(a)

def fire():
      a = '轰,发射成功!'
a = fire()
print(a)

试试

曼查克 发表于 2021-2-24 18:10:01

本帖最后由 曼查克 于 2021-2-24 18:13 编辑

关于return这个例子希望对你的理解有帮助
>>> def a():
        b = 1
        return b

>>> c = a()
>>> c
1
>>>
print的作用只是在交互界面上打印出想打印的字符,而return是实实在在的传出了一个值,可以交给程式使用。

crisfo 发表于 2021-2-24 18:19:26

def fun1():
    return '123'

def fun2():
    print('123')

print('运行fun1()')
fun1()
print('运行fun2()')
fun2()

print('----------分割线--------------')

print('赋值操作 fun1()')
s1 = fun1()
print('赋值操作 fun2()')
s2 = fun2()

print('----------分割线--------------')

print(type(s1))
print(type(s2))


运行结果:
运行fun1()
运行fun2()
123
----------分割线--------------
赋值操作 fun1()
赋值操作 fun2()
123
----------分割线--------------
<class 'str'>
<class 'NoneType'>

逃兵 发表于 2021-2-24 18:37:44

有返回值的可以被赋值,没有返回值就会返回None
def fire():
      pass
      return '轰,发射成功!'

def fire2():
      print( '轰,发射成功!')

>>> a = fire()
>>> b = fire2()
轰,发射成功!
>>> print(a)
轰,发射成功!
>>> print(b)
None
>>> type(a)
<class 'str'>
>>> type(b)
<class 'NoneType'>
>>>

Daniel_Zhang 发表于 2021-2-24 18:42:52

怎么说呢,如果你需要在其他地方继续使用函数里面的某个变量,你就需要用 return 语句将该变量传递给需要使用的地方

如果你只是需要打印,就可以直接在函数里面进行打印,而不需要 return

所以,需不需要 return 完全看你要不要在其他地方使用函数里面的东西

柿子饼同学 发表于 2021-2-24 21:58:20

Daniel_Zhang 发表于 2021-2-24 18:42
怎么说呢,如果你需要在其他地方继续使用函数里面的某个变量,你就需要用 return 语句将该变量传递给需要使 ...

比如说,我这定义一个函数:
def num():
        n = 3
        return n

然后我怎么写才能把n传输到别的地方呢?(比如想在另一个函数里使用n){:10_297:}

柿子饼同学 发表于 2021-2-24 22:01:09

谢谢大家

Daniel_Zhang 发表于 2021-2-24 23:31:54

def num():
    n = 3
    return n


def call_num(num):# 调用并打印 n 的值
    print(num)


get_num = num()# 在此处通过调用 num() 传入 n 的值并赋值给 get_num 并打印
print(get_num)

# 也可以直接打印 num() 传递的值, 即打印 n 的值
print(num())

#   或者在其他的函数中调用 n 的值
call_num(num())

逃兵 发表于 2021-2-25 08:44:25

柿子饼同学 发表于 2021-2-24 21:58
比如说,我这定义一个函数:

然后我怎么写才能把n传输到别的地方呢?(比如想在另一个函数里使用n){: ...

#定义函数num()
def num():
      n = 3
      return n

#定义函数num2()

def num2(n):
    return n**2

n = num()

m = num2(n)

print(m)

在这个例子中,我们把函数num()的返回值 赋值给n

也就是 n = num()

拿到了num()的结果3

再将 n 传入 给函数num2() 赋值给 m

也就是

m = num2(n)

m = num2(3)

m = 3**2

m = 9

或者直接将函数num()作为num2()的参数

#定义函数num()
def num():
      n = 3
      return n

#定义函数num2()

def num2(n):
    return n**2

m = num2(num())

print(m)

结果

9

H.E.G. 发表于 2021-2-25 09:41:32

代码性质上有些区别
(1):
def fire():
    pass#占位符,可以删掉
    return '轰,发射成功!'
print(fire)#用print语句打印返回的值

(2):
def fire():
    print('轰,发射成功!')
fire()#调用函数后打印出的结果

如果打印出代码(2)fire函数的值是会产生以下的结果
>>> def fire():
      print('轰,发射成功!')

>>> print(fire())
轰,发射成功!
None

以上是代码的区别

H.E.G. 发表于 2021-2-25 10:12:00

柿子饼同学 发表于 2021-2-24 17:55
还是不知道return除了打印还能干什么

return 可以返回一个值,也可以实现闭包的作用
input函数的返回值应该就是通过return函数实现的
以下是一个return的例子
def A(a, b):
   return a + b

def B(c):
   _ = A(6,9)
   return _ * c

print(B(4))

print无法实现值的传递效果

柿子饼同学 发表于 2021-2-25 11:46:10

逃兵 发表于 2021-2-25 08:44
在这个例子中,我们把函数num()的返回值 赋值给n

也就是 n = num()


在对函数的赋值操作时,到底是先赋值还是先把函数结果算出来再赋值呢{:10_257:}
页: [1] 2
查看完整版本: 定义函数时的问题