小甲鱼的嫖客 发表于 2020-7-8 14:22:12

return 这个函数的用法我始终云里雾里,没搞懂它功能是什么?

def full_name(name1,name2,name3):
    if name3:
      names=name1 + name2 + name3
    else:
      names=name1 + name2
      
    title_name=names.title()

    return print(title_name)
   
full_name(name1="li",name2="xiao",name3="pang")

这个代码中return没有起到任何作用呀。
感谢大神指点迷津!

Twilight6 发表于 2020-7-8 14:27:03


print 函数没有返回值,所以你设置 returnprint(xxx) 的时候返回的是 None

你要返回的是 title_name ,而不是 print ,print 是可以打印函数的返回值的,所以你在调用函数那边加上print 就好了

def full_name(name1, name2, name3):
    if name3:
      names = name1 + name2 + name3
    else:
      names = name1 + name2

    title_name = names.title()

    return title_name


print(full_name(name1="li", name2="xiao", name3="pang"))

Twilight6 发表于 2020-7-8 14:33:23

本帖最后由 Twilight6 于 2020-7-8 14:41 编辑



当一个函数没有设置 return 时候,默认返回的是 None

举些例子:

def func():
    x = 100
    return print(x)

print(func())
运行结果:
100
None
这里 100 是函数里面的 print 打印的

而 None 就是因为 print 函数没有返回值 所以你在外部打印函数的时候会打印 None

def func():
    x = 100
    return x

func()   # 直接调用函数不会打印返回值结果,但是实际上有返回值,只是没有打印
print(func()) # 这里就可以将函数的返回值打印出来
运行结果:
100
这样打印就不会有 None因为打印的是函数返回的结果,而函数返回了的值是 x 的值

而为什么要设置函数返回值呢?因为你需要一个函数运行后 返回出一个结果给你,所以需要设置函数的返回值,在看看这几个简单例子:
def func():
    x = 100
    return x

z = func()
temp = z*2
print(temp)
这边函数设置了返回值,所以 z 可以接收到函数 func 的返回值,此时 z= func() 就可以视为 z = 100 了

而如果不设置返回值:
def func():
    x = 100

z = func()
print(z)
打印结果为 None ,说明 func() 返回了一个 None 给 z,这个时候你就不能用函数内的结果给其他代码进行使用了


需要注意的是在 IDLE 或者其它编译器的控制台会自动打印出除了 None 以外的返回值

而如果你脚本直接运行,则不会自动打印函数的返回值,需要你配合 print 函数将 函数调用的结果给打印除了

Stubborn 发表于 2020-7-8 14:43:35

Twilight6 发表于 2020-7-8 14:33
当一个函数没有设置 return 时候,默认返回的是 None

举些例子:


好长,最棒的!{:10_255:}

Twilight6 发表于 2020-7-8 14:44:34

Stubborn 发表于 2020-7-8 14:43
好长,最棒的!

{:7_132:}{:7_132:}

小甲鱼的铁粉 发表于 2020-7-8 15:05:19

来学习一下

heidern0612 发表于 2020-7-8 15:14:21

本帖最后由 heidern0612 于 2020-7-8 15:19 编辑

return的主要返回一个结果,可用于函数的再加工,或结果用于再加工。

给个简单的复合例子,你就明白用法了。

def msgbox(msg):
    if msg:
      return msg, "打印内容存在。"
    else:
      return None, False


msg = input("是否存在打印内容:")

Flag, msg = msgbox(msg)

while Flag:
    print(msg)
    break
else:
    print("打印内容为空")

lhgzbxhz 发表于 2020-7-8 15:31:58

举个例子:
def func1():
    print("你好!")

def func2():
    return "你好!"

def func3():
    return print("你好!")

func1()
#上面这行代码会打印"你好!"
#因为在func1中调用了print函数

str1 = func1()
#上面这行代码会打印"你好!"
#但是str1变量中什么也没有
#因为func1没有返回值

str2 = func2()
#str2的值为"你好!"
#但是并没有打印出来
#因为我们没有让它打印

str3 = print("你好!")
#上面那行代码会打印"你好!"
#但是str3变量中什么也没有
#因为print函数没有返回值

str4 = func3()
#上面这行代码和str3的道理是一样的
#因为print函数没有返回值
#所以str4变量中什么也没有

小甲鱼的嫖客 发表于 2020-7-10 14:55:08

heidern0612 发表于 2020-7-8 15:14
return的主要返回一个结果,可用于函数的再加工,或结果用于再加工。

给个简单的复合例子,你就明白用法 ...

我可能是段位太低了,您发这个我看的稀里糊涂的。

小甲鱼的嫖客 发表于 2020-7-10 14:57:29

lhgzbxhz 发表于 2020-7-8 15:31
举个例子:

我应该是看书的过程中,错过了关键内容知识点,导致我看不懂你的讲解,十分感谢。

小甲鱼的嫖客 发表于 2020-7-10 15:00:54

Twilight6 发表于 2020-7-8 14:27
print 函数没有返回值,所以你设置 returnprint(xxx) 的时候返回的是 None

你要返回的是 title_nam ...

十分感谢,你的解答,我编写的那段代码无论加不加return 最终的打印结果都是lixiaopang,我始终没有搞懂return的用法和功能

小甲鱼的嫖客 发表于 2020-7-10 15:04:18

Twilight6 发表于 2020-7-8 14:33
当一个函数没有设置 return 时候,默认返回的是 None

举些例子:


看了你的这个讲解,我彻底迷失,"返回值”是什么意思?

Twilight6 发表于 2020-7-10 15:05:11

本帖最后由 Twilight6 于 2020-7-10 15:06 编辑

小甲鱼的嫖客 发表于 2020-7-10 15:00
十分感谢,你的解答,我编写的那段代码无论加不加return 最终的打印结果都是lixiaopang,我始终没有搞懂r ...




你如果是在 IDLE 中或者 其他编译器的控制台直接运行,会自动帮你打印返回值

但是你在编辑器直接运行脚本,如果没有 print 那么返回值将不会被打印出来

print 函数只是为了打印显示

而 return 是为了返回一个值

在举个例子哈,列表的 sort函数没有返回值,所以当你这样做的时候:a =
print(a.sort())会返回:
None但是列表的pop 方法有返回值:a =
print(a.pop())返回结果:
1
而设不设置返回值就是函数定义时候的问题了,这里 pop 需要你弹出元素 所以 有返回值

而sort 是为了在原列表上进行排序,所以并没有返回新的列表,而是在原列表上直接进行改变

简单来说 返回值就是使用这个函数后返回的结果

Twilight6 发表于 2020-7-10 15:14:06

小甲鱼的嫖客 发表于 2020-7-10 15:00
十分感谢,你的解答,我编写的那段代码无论加不加return 最终的打印结果都是lixiaopang,我始终没有搞懂r ...

你编写的代码无论怎么改 return 会打印结果是因为你给里面加上了 print

说实话,上面那么多大佬也都解释的很清楚了,你这样还不懂.....

那还是暂时跳过吧,先学习下后面的知识,说不定到时焕然大悟

小甲鱼的嫖客 发表于 2020-7-10 15:27:15

Twilight6 发表于 2020-7-8 14:33
当一个函数没有设置 return 时候,默认返回的是 None

举些例子:


我大概明白了,return是让公式返回的是值,如果不加return返回的是公式 没有值。

heidern0612 发表于 2020-7-10 15:56:05

本帖最后由 heidern0612 于 2020-7-10 15:57 编辑

小甲鱼的嫖客 发表于 2020-7-10 15:04
看了你的这个讲解,我彻底迷失,"返回值”是什么意思?

这么说吧,你print打印输出到屏幕,是为了给读你程序的人用的,而return是给自己用的。

相当于,你写了个游戏,print是给玩你游戏的人用的,因为它直接输出到屏幕上。

而return是用于你,也就是程序员,再加工这个数据用的。

比如,一个英雄的血量,在喝了一瓶红药之后,上涨了50.

你需要:print给用户看“英雄使用了红药,血量上涨了50”.

而retuen的含义在于,英雄的血量在经过函数一系列运算后,return了一个值给程序员。

return出来这个值之后,也许return这个值之后,你还需要做一系列的加工,比如计算防御,计算英雄总体血量之类的。

然后程序员,也就是你,才决定print出来给用户看。

小甲鱼的嫖客 发表于 2020-7-16 09:51:22

heidern0612 发表于 2020-7-10 15:56
这么说吧,你print打印输出到屏幕,是为了给读你程序的人用的,而return是给自己用的。

相当于,你 ...

感谢感谢,懂了
页: [1]
查看完整版本: return 这个函数的用法我始终云里雾里,没搞懂它功能是什么?