python中非可選引數 Python可選引數

2021-10-12 15:16:49 字數 1162 閱讀 5094

為了有效地使用預設值,您需要了解預設值是如何工作的。

函式是物件。因此,它們具有屬性。所以,如果我建立這個函式:>>> def f(x, y=):

return y

我建立了乙個物件。其特點如下:>>> dir(f)

['__call__', '__class__', '__closure__', '__code__', '__defaults__', '__delattr__',

'__dict__', '__doc__', '__format__', '__get__', '__getattribute__', '__globals__',

'__hash__', '__init__', '__module__', '__name__', '__new__', '__reduce__',

'__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__',

'func_closure', 'func_code', 'func_defaults', 'func_dict', 'func_doc', 'func_globals',

'func_name']

其中之一是func_defaults。聽起來不錯,裡面有什麼?>>> f.func_defaults

這是乙個包含函式預設值的元組。如果預設值是物件,則元組包含該物件的例項。

如果您認為f向列表中新增了乙個項,而在沒有提供列表的情況下返回僅包含該項的列表,則會導致一些相當違反直覺的行為:>>> f(1)

[1]>>> f(2)

[1, 2]

但是,如果您知道預設值是儲存在函式屬性之一中的物件例項,那麼它就不那麼違反直覺了:>>> x = f(3)

>>> y = f(4)

>>> x == y

true

>>> x

[1, 2, 3, 4]

>>> f(6)

[1, 2, 3, 4, 5, 6]

知道了這一點,很明顯,如果希望函式引數的預設值是乙個新列表(或任何新物件),就不能簡單地將物件的例項儲存在func_defaults中。每次呼叫函式時都必須建立乙個新的:>>>def g(x, y=none):

if y==none:

y =

return y

python中使用可選引數和命名引數

info 函式就是這樣乙個例子,它有兩個可選引數。def info object,spacing 10,collapse 1 spacing 和 collapse 是可選引數,因為它們已經定義了預設值。object 是必備引數,因為它沒有指定預設值。如果呼叫 info 時只指定乙個引數,那麼 spa...

mvn可選引數

引數 描述 pl 選項後可跟隨 或者所選模組的相對路徑 多個模組以逗號分隔 am和 pl連用,同時構建指定模組依賴的模組 amd 和 pl連用,同時構建依賴於指定模組的模組 rf從指定的模組開始構建 n不遞迴子模組 這裡說的依賴包含兩層含義 父子關係 依賴關係 例1 從指定的模組開始構建 mvn c...

Python的位置引數,可選引數,關鍵字引數

關鍵字引數 把引數名與值繫結在一起,使用引數名提供的引數叫做關鍵字引數。設定關鍵字引數預設值。位置引數 帶單個星號引數 以元祖形式輸出 關鍵字引數 帶兩個星號引數 以字典形式輸出,def funcd a,b,c print a print b print length of c is d len c...