可變值做函式引數的問題

2022-09-20 07:42:11 字數 457 閱讀 8029

1.用乙個可變的值作為預設值

下面是在函式裡使用預設值時會碰到的另一種相同問題:

```def print_now(now=time.time()):

print now

```跟前面一樣,time.time() 的值是可變的,那麼它只會在函式定義的時候計算,所以無論呼叫多少次,都會返回相同的時間 — 這裡輸出的時間是程式被python解釋執行的時間。

```>>> print_now()

1373121487.91

>>> print_now()

1373121487.91

>>> print_now()

1373121487.91

```* 這個問題和它的解決方案在 python 2.x 和 3.x 裡都是類似的,在python 3.x 裡面唯一的不同,是裡面的print 表示式應該是函式呼叫的方式(print(numbers))。

python函式的可變引數問題

deff x print x,type x f 1 f a b f 1 2,3 23,31 如上程式,定義了乙個函式,裡面的引數加 代表可變引數,也就是可以輸入多個引數,但是,輸入進去後引數的型別就發生了變化。如下為程式執行結果 1,class tuple a b class tuple 1 2,3...

可變引數的函式

1 可變引數的概念 c語言中支援引數可變的函式,printf就是乙個典型的引數可變函式,其函式原型如下 include int printf const char format,printf函式的原型中第1個引數format是固定的,後面的引數個數和型別都是可變的。編譯器使用三個點 作為引數的佔位符...

關於「可變資料型別」做函式預設引數的問題

如果我們在函式傳參時用這個預設引數並且在函式的內部對可變資料型別資料進行了 修改 那麼這樣做是有問題的 如果多次呼叫同乙個函式,被當做引數的這個 可變資料型別 會一直用同乙個 def func name,lst print lst,id lst func 1 func 2 func 3 結果 1 1...