python函式實參不是的作用域問題,高手來解釋下下面的輸出

時間 2021-06-28 17:12:06

1樓:

可以先不看f(3,[3,2,1]),這個就是來迷惑人的,光看f(2),f(3),python函式在定義的時候,預設引數l,它指向一個物件[ ],這個物件是和函式同生同死的,每次呼叫該函式,都會預設指向[ ] ,除非傳遞了第二個引數,則改變了l的指向,但是如果前面修改了這個物件,所以也會在後面體現出來,因為他是一個預設指向的物件。所以,定義預設引數要牢記一點:預設引數必須指向不變物件!

2樓:次尋冬

python中函式的引數傳遞問題,函式引數的傳遞往往是一個難以理解的概念,一個經典的例子如下所示:

int swap(int a,int b)

int a = 10,b = 20;

printf("before swap a = %d, b = %d\n",a,b);

swap(a,b);

printf("after swap a= %d,b = %d\n",a,b);

引數是採用值傳遞的形式,存在形參與實參的區別,也就是將實參的值複製給形參,在函式內部操作的都只是形參的內容,並不改變實參的值,所以變數在操作過後並沒有發生改變。

引數傳遞過程中存在兩個規則:

1、通過引用將引數複製到區域性作用域的物件中,意味著被用來訪問函式引數的變數於提高給函式的物件無關,因為存在一個複製問題,這和c語言是相同的。而且修改區域性物件不會改變原始資料。

2、可以在適當位置修改可變物件。可變物件主要就是列表和字典,這個適當位置實質上就是前面分析的區域性子物件的修改不會改變字典物件或者列表物件的id位置。

python再函式實參中的『+』什麼作用

3樓:匿名使用者

word.strip(條件) 函式:刪除word字串中開頭、結尾處,符合「條件」的字元,這裡的條件是兩條相加起來,即:標點(英文)+空格。

附帶一個小實驗,自己試一下,列印:所有數字和標點。

import string

word="    ,.中華人民共和國,."

word = word.strip(string.punctuation + string.whitespace)

print(word)

print(string.digits+string.punctuation)

輸出結果:

中華人民共和國

0123456789!"#$%&'()*+,-./:;<=>?@[\]^_`~

其它條件如下:

string.digits:數字0~9

string.letters:所有字母(大小寫)

string.lowercase:所有小寫字母

string.printable:可列印字元的字串

string.punctuation:所有標點

string.uppercase:所有大寫字母

python函式後面的引數可以跟例項化的物件是同一個嗎?引數可以單獨拿出來使用?

4樓:匿名使用者

沒有學過c的,

來都有這一類問題自

函式定義後,函式存入記憶體中的一個地址,你眼睛看到的foo,是一個函式名字,用來記載這個功能在哪,方便你用。你也可以給這個記憶體中的地址期其他名字,比如,fcc=foo,fxx=foo,都是指向同一個記憶體地址。

你傳入的fun,只是一個地址,你可以直接print(fun)看看是不是輸出一個記憶體地址。當你用fun()時,函式被呼叫執行了。

至於第二個問題,foo只是一個名字,前面我們說過了,函式名是一個記憶體地址,你肉眼看到的foo,具體在python裡面,它是一個指向這個地址的物件。具體字這個問題裡面,原作者是想解釋裝飾器的作用~你當然可以用foo之類的代替。但這樣就沒表達出裝飾器的作用了

瞭解下c的指標,程式的執行原理,這種問題就一眼就懂

5樓:gta小雞

在python中,萬物皆物件源,函式也是一個物件,也可以作為引數傳遞給別的函式。

foo這只是一個識別符號,它可以指向任何東西,包括變數、類、函式、模組、流等。timer是一個返回函式的高階函式,它的返回值是一個函式,賦值給foo之後,foo也就是一個函式。

6樓:暴血長空

python. 如果只是研究演算法,集合(set)是可以變的,它是一個無序不重複元素集 元組(touple)才是不可變的

PYTHON函式接受的實參不完全

有了你就有了心 def make car manufacturer,model,car info car car manufacturer manufacturer car model model for key,value in car info.items car key value retur...

python用def函式,python def 函式不能被呼叫

define的意思,用來定義函式。如 def 函式名 引數1,引數2,引數n 執行語句 例 簡單的函式使用 定義函式 def hello print hello python 呼叫函式 hello hello python 定義一個函式 你可以定義一個由自己想要功能的函式,以下是簡單的規則 任何傳入...

C語言中,函式呼叫時,若是傳地址,行參與實參分配在同一地址嗎

安心播音 通俗一點,c語言中,函式呼叫的時候,如果有引數,則無論引數是什麼,都要為引數申請新的空間。如 int fun int p 它被呼叫的時候,新申請一個指標 p 即使你呼叫的時候這樣 int a 5 fun a 它也會新申請一個指標變數 p 來存放 a 的地址,直到函式返回,該指標 p 的空間...