1. 程式人生 > >Python函式的引數數傳遞方式

Python函式的引數數傳遞方式

在python中,引數的傳遞方式有兩種

  • 引用傳遞
    對於可變型別如列表,字典等,引數的傳遞時按引用傳遞的。
    eg:
def fun(data):
    data[0]=2
    print(data) #[2,2,3,4]
    print(id(data))

data1=[1,2,3,4]
fun(data1) #[2,2,3,4]
print(id(data1))
###輸出結果
[2, 2, 3, 4]
18026632  #data記憶體地址
18026632  #data1記憶體地址

可見,兩者的記憶體地址是一樣的,所以對於可變的資料型別,是按引用傳遞的,也就是說data1和data指向記憶體的同一塊地址。
  • 值傳遞
    相當於複製引數的值,這種傳遞的方式一般是對那些不可以改變的資料型別:字串,元組,數字,集合等都是不可以改變的物件。
def fun(data):
    data='abc'
    print(id(data)) #次出輸入data的記憶體地址


data1='abcdefg'
fun(data1)
print(id(data1))

###輸出結果
16348528  
17220696
由此可見 引數個data和data1不在同一個記憶體上,即是引數傳遞時複製了一份。

相關推薦

Python函式引數傳遞方式

在python中,引數的傳遞方式有兩種 引用傳遞 對於可變型別如列表,字典等,引數的傳遞時按引用傳遞的。 eg: def fun(data): data[0]=2 print(data) #[2,2,3,4] print(

產品經理學Python:參傳遞方式

暫時 ace 微信公眾 聯網 替代 strong 變參 lose 創建刪除 這是關於Python的第5篇文章,主要介紹下參數傳遞方式和如何設計自己的函數。 (一) 本篇主要介紹2種參數傳遞方式。 位置參數 調用函數時,根據函數定義的參數位置來傳遞參數。 1 def rig

python 函式引數傳遞(引數帶星號的說明) 元組傳遞 字典傳遞

python中函式引數的傳遞是通過賦值來傳遞的。函式引數的使用又有倆個方面值得注意:1.函式引數是如何定義的 2.在呼叫函式的過程中引數是如何被解析 先看第一個問題,在python中函式引數的定義主要有四種方式:1.F(arg1,arg2,...)這是最常見的定義方式,一個函式可以定義任意個引數,每個引

std::list/vector 作為函式引數傳遞方式

       專案中的一個小bug。主觀性認為 std::list 作為函式引數,是按指標傳遞的,實際還是按值傳遞的(不解!!)。 舉例如下   1 #include <iostream>   2 #include <list>   3 

java 函式引數傳遞方式說明(string、 引用型別、基本型別)

程式碼示例: public class TimerTest_main { String obj="Object"; public static void main(String[] agrs){ TimerTest_main obj_dem

C語言中函式的使用小記——掌握函式引數傳遞方式

1.概念: 函式是一個完成特定功能的程式碼模組,其程式程式碼獨立,通常要求有返回值,也可以是空值。 一般形式如下:<資料型別><函式名稱>(<形式引數說明>) { 語句序列: return[(<表示式>)]; } 其中: <函式名稱>是一個識別符號,要求符合識別符號的命名

python函式引數引用傳遞

 首先還是應該科普下函式引數傳遞機制,傳值和傳引用是什麼意思?    函式引數傳遞機制問題在本質上是呼叫函式(過程)和被呼叫函式(過程)在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種:值傳遞和引用傳遞。   值傳遞(passl-by-value)過程中,被調

關於Python函式引數傳遞方式--值傳遞?引用傳遞

渣渣我在學習中遇到的一點問題,特地貼出來,由於我水平渣,所以如有問題,請多指教 經過測試可以發現: python3 不允許我們選擇引數傳遞方式,但是他已經全部採用了引用傳遞。有幾點需要注意: 1.引用傳遞可以當做值傳遞使用,只是你需要把他賦值給一個臨時變數副本,不要直接使

Python 函式 引數傳遞

引數傳遞    在 python 中,型別屬於物件,變數是沒有型別的:        a=[1,2,3]        a="Runoob" &nbs

python函式引數的引用方式

值傳遞和引用傳遞時C++中的概念,在python中函式引數的傳遞是變數指向的物件的實體記憶體地址!!! python不允許程式設計師選擇採用傳值還是傳引用。Python引數傳遞採用的肯定是“傳物件引用”的方式。這種方式相當於傳值和傳引用的一種綜合。如果函式收到的是一個可變物件(比如字典或者列表)的引用,就能

Python函式引數傳遞的問題

Python中的一些概念: 變數:沒有型別,可以指向任何物件 物件:有型別。物件分為可變物件和不可變物件 從id可以看出變數是沒有型別的,同一組資料指向不同的物件,id不同。 Python中引數傳遞是傳遞的變數的值,即變數所指向的物件的地址。 傳遞規律

python函式引數傳遞規則

1、宣告一個引數具有預設值引數的函式,如下: def hello(name = 'python')     print('你好',name) ---無引數傳遞直接呼叫函式,則為:你好,python--(hello) ---有引數傳遞時,如:hello('小明')--結果為:

Python函式引數和返回值

- 函式引數和返回值的作用 函式:封裝功能獨立的程式碼,在需要時通過函式名被呼叫 引數:外界希望在函式內部處理的資料 返回值:函式完成工作後,給呼叫者的一個結果 函式根據有無引數和返回值,可以相互結合,共有4種組合形式 1.無引數,無返回值 2.無引數,有返回值 3.有引數,無返回值

函式引數傳遞

  1.函式的引用傳遞 void Exchg2(int &x, int &y) {  int tmp=x;  x=y;  y=tmp;  printf("x=%d,y=%d\n",x,y);  //6 4 } voi

python函式引數的填坑之路

背景 最近在看廖雪峰老師的python3教程之函式的引數 受益匪淺,但是在實踐的過程中,發現了一些不解之謎 兩個錯誤 import _thread import time def func1(x): while x: print(x) x = x -1 _threa

學習筆記-Java基礎 關於函式引數傳遞問題

當引數為基本資料型別時,傳遞方式為值傳遞。 當引數為物件型別時, 傳遞方式為引用傳遞,此引用是複製出來的引用,所以在函式中進行交換引用操作,不會影響到函式外的引用。 雖然引用不是同一個,但是引用對應的物件例項卻是同一個,也就是說可以改變物件例項的成員變數值。 String 和

python 函式引數作為引用時

作為引數傳入函式中,執行結束後,實參到底會不會影響 1. 各種型別資料,引數名到底對應什麼? 如果你學過c或者c++, 你應該知道引用這個東西,我簡單的理解為,如果這個引數名上的地址,存的不是它的值,而是它對應值得位置,那就是引用。從上圖不難發現,python常用

python-函式引數和文件

四類引數 普通引數 預設引數 關鍵字引數 收集引數 關鍵字引數開始 語法 def func(p1=v1, p2=v2.....): func_body 呼叫函式: func(p1=value1, p2=value2......

Java類的組合與繼承 小問題分析(建構函式引數傳遞方法 、資料隱藏的處理: 對比C++)

一、類的組合:     1、初始化問題(建構函式的引數傳遞方法):       在C++中,通常只要物件中不含有指標類資料的話,物件與物件之間是可以相互賦值且不會出錯的,因此組合出來的類完全可以將傳遞過來的物件引數直接賦值給對應資料成員;       而在java中,物

一篇文章讓你掌握python函式引數的各種用法

  python的函式引數型別比較豐富,而且用法相對比較複雜,今天我們介紹幾種簡單常用的。 當然在學習Python的道路上肯定會困難,沒有好的學習資料,怎麼去學習呢? 學習Python中有不明白推薦加入交流群