Boibot 发表于 2021-9-6 23:24:35

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

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())




冬雪雪冬 发表于 2021-9-6 23:31:04

第一个执行一次com,打印一个1
第二和第三执行二次com,打印两个1

傻眼貓咪 发表于 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>

Boibot 发表于 2021-9-6 23:49:12

冬雪雪冬 发表于 2021-9-6 23:31
第一个执行一次com,打印一个1
第二和第三执行二次com,打印两个1

为什么执行2次?

冬雪雪冬 发表于 2021-9-6 23:52:10

Boibot 发表于 2021-9-6 23:49
为什么执行2次?

cnm()执行一次
print(cnm())又执行一次

Boibot 发表于 2021-9-6 23:59:56

冬雪雪冬 发表于 2021-9-6 23:52
cnm()执行一次
print(cnm())又执行一次

cnm()执行一次是1
print(cnm())又执行一次是1 temp
区别呢?

Boibot 发表于 2021-9-7 00:02:28

冬雪雪冬 发表于 2021-9-6 23:52
cnm()执行一次
print(cnm())又执行一次

cnm()赋值给了变量a,就只执行了一次?为啥呀

冬雪雪冬 发表于 2021-9-7 00:19:23

Boibot 发表于 2021-9-7 00:02
cnm()赋值给了变量a,就只执行了一次?为啥呀

a= com(),com执行一次
print(a)时,直接用a的值,不再执行com了

拿我那八倍镜来 发表于 2021-9-7 00:25:49

def
cnm{:10_245:}

人生立 发表于 2021-9-7 09:08:40

冬雪雪冬 发表于 2021-9-7 00:19
a= com(),com执行一次
print(a)时,直接用a的值,不再执行com了

意思就是说,a=cnm()不会打印,但是直接cnm()会打印一次结果

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




傻眼貓咪 发表于 2021-9-7 12:26:54

人生立 发表于 2021-9-7 09:08
意思就是说,a=cnm()不会打印,但是直接cnm()会打印一次结果

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

括號()真正用意就是執行其函數

冬雪雪冬 发表于 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
页: [1]
查看完整版本: 把函数赋值给一个变量,再print变量,和直接print函数不一样,为什么?