鱼C论坛

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

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

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

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

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

x
  1. def cnm():
  2.         print(1)
  3.         return 'temp'
  4. a = cnm()
  5. print(a)

  6. def cnm():
  7.         print(1)
  8.         return 'temp'
  9. cnm()
  10. print(cnm())

  11. def cnm():
  12.         print(1)
  13.         return 'temp'
  14. a = cnm()
  15. print(cnm())




复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-9-6 23:31:04 | 显示全部楼层
第一个执行一次com,打印一个1
第二和第三执行二次com,打印两个1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

  3. A = func() # 有括號表示賦值+執行
  4. B = func # 沒括號表示只是賦值
复制代码
  1. print(A)
  2. print(B)
复制代码
  1. ABC
  2. <function func at 0x000001C1CDE8DF60>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

为什么执行2次?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

cnm()执行一次
print(cnm())又执行一次
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

cnm()执行一次是1
print(cnm())又执行一次是1 temp
区别呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

cnm()赋值给了变量a,就只执行了一次?为啥呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

a= com(),com执行一次
print(a)时,直接用a的值,不再执行com了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-7 00:25:49 | 显示全部楼层
def
cnm
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

意思就是说,a=cnm()不会打印,但是直接cnm()会打印一次结果
小甲鱼最新课程 -> https://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())




小甲鱼最新课程 -> https://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 一樣的函數,不會執行函數(也就是不會打印)

括號()真正用意就是執行其函數
小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-15 17:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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