1. 程式人生 > 其它 >python過去main的引數_這是python的大坑

python過去main的引數_這是python的大坑

技術標籤:python過去main的引數

Python3 函式

函式是組織好的,可重複使用的,用來實現單一,或相關聯功能的程式碼段。

函式能提高應用的模組性,和程式碼的重複利用率。你已經知道Python提供了許多內建函式,比如print()。但你也可以自己建立函式,這被叫做使用者自定義函式。


Python3基礎 函式 引數為list 使用+=會影響到外部的實參

程式碼如下:

def change(num_list: list):    # 列表使用+=,本質上是呼叫extend方法!    # 不修改引用,整合列表,改變外部實參    # 此等細節...    num_list += [1]    print("def +=", id(num_list))    # 使用 +...=    # 這樣寫,沒有呼叫方法。修改了引用,外部實參不受影響。    num_list = num_list + [1, 2, 3]    print("def +...=", id(num_list))def main():    num_list = [0, 1, 2, 3]    print("main", id(num_list))    print("main", num_list)    change(num_list)    print("main change", id(num_list))    print("main change", num_list)    # 多使用id函式,自然解開疑惑if __name__ == '__main__':    main()

列印結果:

main 140265422970760main [0, 1, 2, 3]def += 140265422970760def +...= 140265422204360main change 140265422970760main change [0, 1, 2, 3, 1]Process finished with exit code 0

原因:

可更改(mutable)與不可更改(immutable)物件

在 python 中,strings, tuples, 和 numbers 是不可更改的物件,而 list,dict 等則是可以修改的物件。

  • 不可變型別:變數賦值a=5後再賦值a=10,這裡實際是新生成一個 int 值物件 10,再讓 a 指向它,而 5 被丟棄,不是改變 a 的值,相當於新生成了 a。

  • 可變型別:變數賦值la=[1,2,3,4]後再賦值la[2]=5則是將 list la 的第三個元素值更改,本身la沒有動,只是其內部的一部分值被修改了。

python 函式的引數傳遞:

  • 不可變型別:類似 C++ 的值傳遞,如 整數、字串、元組。如 fun(a),傳遞的只是 a 的值,沒有影響 a 物件本身。如果在 fun(a))內部修改 a 的值,則是新生成來一個 a。

  • 可變型別:類似 C++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後 fun 外部的 la 也會受影響

python 中一切都是物件,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳可變物件。

完畢!!!!!!!!!

99cff23d624ace8de33473f4171b9e65.png

點贊?????在看