日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python定义变量名的时候、需要注意问题_python中将函数赋值给变量时需要注意的一些问题...

發(fā)布時間:2025/3/11 python 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python定义变量名的时候、需要注意问题_python中将函数赋值给变量时需要注意的一些问题... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

本文主要給大家介紹的是關于python將函數(shù)賦值給變量時需要注意的一些問題,分享出來供大家參考學習,下面話不多說了,來一起看看詳細的介紹:

見過兩種函數(shù)賦值給變量的形式,一種是

a=f

另一種是

a=f()

這兩種形式是有區(qū)別的,分別總結(jié)一下。

1.a=f型屬于將變量指向函數(shù)。

用代碼驗證一下:

>>> f = abs

>>> f(-10)

10

說明變量f現(xiàn)在已經(jīng)指向了abs函數(shù)本身。直接調(diào)用abs()函數(shù)和調(diào)用變量f()完全相同。這是廖雪峰老師python教程上的例子,現(xiàn)在調(diào)用f()和調(diào)用abs()是一樣的了。

再舉一個工廠函數(shù)的例子:

def maker(N):

def action(X):

return X**N

return action

這個嵌套函數(shù)的外層返回值為內(nèi)層函數(shù)的函數(shù)名,注意沒有括號,這里有無括號是有很大區(qū)別的。此時調(diào)用外部函數(shù):

f=maker(2)

那么如上所述,f便指向了action函數(shù),且限制條件為N=2,可以理解為f為N等于2時的action函數(shù)。我們來調(diào)用它:

>>> f(3)

9

證明f和action函數(shù)是一樣的。

2.a=f()型屬于將f()的返回值賦值給a的過程

這里的a僅僅接收f()的返回值,如果f()沒有返回值,那么a即被賦值為None。這里值得注意的一點是,在a=f()的執(zhí)行過程中,f()會運行一次,這也是我剛剛搞明白的,如:

>>> def add(x,y):

z=x+y

print(z)

>>>a=add(3,4)

7

這里雖然只有一個賦值語句執(zhí)行了,但是卻輸出了結(jié)果7,說明賦值過程函數(shù)add執(zhí)行了,然而a的值為None,且只能通過print語句才可以顯示。不只是賦值過程函數(shù)會執(zhí)行,寫在return語句中也會如此。

>>>def log(func):

def wrapper(*args, **kw):

print('call %s():' % func.__name__)

return func(*args, **kw)

return wrapper

>>>@log

>>>def now():

print('2015-3-25')

這是廖雪峰老師python教程裝飾器一節(jié)的例程,剛開始我以為return func(*args,**kw)這個語句是返回了now()函數(shù)(即func函數(shù))的返回值,后來發(fā)現(xiàn)now函數(shù)沒有返回值,即為None,所以其實是這個語句在賦值過程,

func(*args,**kw)執(zhí)行了,即函數(shù)now的print語句執(zhí)行了。

下面的習題中,一個變形是要求在函數(shù)調(diào)用的前后打印出'begin call'和'end call',下面一位網(wǎng)友的程序是這么寫的:

def wrapper(*args,**kw):

print(t+'begin call')

result=func(*args,**kw)

print(t+'end call')

return result

開始不太理解為什么使用result=func(*args,**kw)這句,后來理解后才明白其實賦值本身并沒有意義,只是這句話同時使得func函數(shù)運行了,所以寫成

def wrapper(*args,**kw):

print(t+'begin call')

func(*args,**kw)

print(t+'end call')

結(jié)果也是一樣的。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

總結(jié)

以上是生活随笔為你收集整理的python定义变量名的时候、需要注意问题_python中将函数赋值给变量时需要注意的一些问题...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。