鱼C论坛

 找回密码
 立即注册
查看: 1864|回复: 12

把函数赋值给一个变量,再print变量,和直接print函数不一样,为什么?

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

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

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

x
def cnm():
        print(1)
        return 'temp'
a = cnm()
print(a)

def cnm():
        print(1)
        return 'temp'
cnm()
print(cnm())

def cnm():
        print(1)
        return 'temp'
a = cnm()
print(cnm())
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-6 23:31:04 | 显示全部楼层
第一个执行一次com,打印一个1
第二和第三执行二次com,打印两个1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-6 23:48:49 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2021-9-6 23:51 编辑
def func():
    print("Hello World!")

A = func() # 有括號表示賦值+執行
B = func # 沒括號表示只是賦值
print(A)
print(B)
ABC
<function func at 0x000001C1CDE8DF60>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-6 23:49:12 | 显示全部楼层
冬雪雪冬 发表于 2021-9-6 23:31
第一个执行一次com,打印一个1
第二和第三执行二次com,打印两个1

为什么执行2次?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-6 23:52:10 | 显示全部楼层
Boibot 发表于 2021-9-6 23:49
为什么执行2次?

cnm()执行一次
print(cnm())又执行一次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-6 23:59:56 | 显示全部楼层
冬雪雪冬 发表于 2021-9-6 23:52
cnm()执行一次
print(cnm())又执行一次

cnm()执行一次是1
print(cnm())又执行一次是1 temp
区别呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-9-7 00:02:28 | 显示全部楼层
冬雪雪冬 发表于 2021-9-6 23:52
cnm()执行一次
print(cnm())又执行一次

cnm()赋值给了变量a,就只执行了一次?为啥呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-7 00:19:23 | 显示全部楼层
Boibot 发表于 2021-9-7 00:02
cnm()赋值给了变量a,就只执行了一次?为啥呀

a= com(),com执行一次
print(a)时,直接用a的值,不再执行com了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-7 00:25:49 | 显示全部楼层
def
cnm
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-7 09:08:40 | 显示全部楼层
冬雪雪冬 发表于 2021-9-7 00:19
a= com(),com执行一次
print(a)时,直接用a的值,不再执行com了

意思就是说,a=cnm()不会打印,但是直接cnm()会打印一次结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-7 10:41:55 | 显示全部楼层
def cnm():
        print(1)
        return 'temp'
a = cnm()
print(a)#这里print(a) <=> print(cnm())

def cnm():
        print(1)
        return 'temp'
cnm()#这二个唯一的区别是 这里也调用了一次cnm()函数 这里调用只会输出1 不会输出return的值; 'temp'还是存放在cnm()函数中 所以print(cnm()) 会输出二个值
print(cnm())




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

使用道具 举报

发表于 2021-9-7 12:26:54 | 显示全部楼层
人生立 发表于 2021-9-7 09:08
意思就是说,a=cnm()不会打印,但是直接cnm()会打印一次结果

你的說法好像有誤,正確來說應該是:
cnm() # 執行函數(也就是肯定會打印)
a = cnm() # 將 a 變成和 cnm return的值 + 執行函數(也就是肯定會打印)
a = cnm   #  將 a 變成和 cnm 一樣的函數,不會執行函數(也就是不會打印)

括號()真正用意就是執行其函數
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-7 20:32:48 | 显示全部楼层
冬雪雪冬 发表于 2021-9-7 00:19
a= com(),com执行一次
print(a)时,直接用a的值,不再执行com了

无论是a = com()
还是 com()
都执行一次print(1)
但 print(a)不会执行函数com
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-24 21:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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