鱼C论坛

 找回密码
 立即注册
查看: 3134|回复: 22

[已解决]定义函数时的问题

[复制链接]
发表于 2021-2-24 17:33:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
刚开始学函数,我有下面几个问题:
0  定义函数时是不是如果不写return它还是有返回值none?
1  下面这两个函数有什么不同
def fire():
        pass
        return '轰,发射成功!'
以及
def fire():
        print('轰,发射成功!')
我看他们返回的都是一样的,那到底有什么不同呢?
可不可以用print()代替return呢?
谢谢大家
最佳答案
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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-2-24 17:34:59 | 显示全部楼层
pass  是python里面的关键字,作用是占位符。
浅显的理解pass   就是没什么用的关键字,啥也不干。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-24 17:36:37 | 显示全部楼层
def fire():
        print('轰,发射成功!')
print(fire())

会输出:轰,发射成功!,None
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-24 17:41:22 | 显示全部楼层
z5560636 发表于 2021-2-24 17:36
会输出:轰,发射成功!,None

可是正常使用是一样的呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-24 17:48:40 | 显示全部楼层
柿子饼同学 发表于 2021-2-24 17:41
可是正常使用是一样的呀

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

更多的时候返回值另有他用,不能用print代替
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

举个栗子好么,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2021-2-24 17:55:13 | 显示全部楼层
还是不知道return除了打印还能干什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-24 17:57:31 | 显示全部楼层
柿子饼同学 发表于 2021-2-24 17:53
举个栗子好么,谢谢

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

def fun2():
    print('hello')

print(fun1())
fun2()
结果:
hello
hello
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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)

试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-24 18:10:01 | 显示全部楼层
本帖最后由 曼查克 于 2021-2-24 18:13 编辑

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

>>> c = a()
>>> c
1
>>> 
print的作用只是在交互界面上打印出想打印的字符,而return是实实在在的传出了一个值,可以交给程式使用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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'>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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'>
>>> 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

所以,需不需要 return 完全看你要不要在其他地方使用函数里面的东西
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

比如说,我这定义一个函数:
def num():
        n = 3
        return n
然后我怎么写才能把n传输到别的地方呢?(比如想在另一个函数里使用n)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-24 22:01:09 | 显示全部楼层
谢谢大家
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
以上是代码的区别
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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无法实现值的传递效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-2-25 11:46:10 | 显示全部楼层
逃兵 发表于 2021-2-25 08:44
在这个例子中,我们把函数num()的返回值 赋值给n

也就是 n = num()

在对函数的赋值操作时,到底是先赋值还是先把函数结果算出来再赋值呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 05:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表