Problem#1 Python的函式引數傳遞
本專欄會不定期增加一些Python基本問題的分析和解答以促進Python知識的理解和掌握。第一道Python題如下:
#第一題Python題
a = 1
def fun(a):
a = 2
fun(a)
print(a)
b = []
def fun(b):
b.append(1)
fun(b)
print(b)
這道題a與b的輸出是什麼?我們不妨先把其中的地址打印出來:
輸出結果為:#Problem#1 a = 1 def fun(a): print(str(id(a))) a = 2 print(str(id(a))+":"+str(id(2))) fun(a) print(str(id(a))+":"+str(a)) b = [] def fun(b): print(str(id(b))) b.append(1) print(str(id(b))+":"+str(id(1))) fun(b) print(str(id(b))+":"+str(b))
1355046512
1355046528:1355046528
1355046512:1
46538224
46538224:1355046512
46538224:[1]
從地址中可以看到,a的地址發生了變化,其實a傳入的是複製的引用值,儲存的是數字的地址,由於是值傳遞,所以實際值並沒有改變,b為列表,傳入的是實際的地址,所以值發生了改變。
相關推薦
Python 函式 引數傳遞
引數傳遞 在 python 中,型別屬於物件,變數是沒有型別的: a=[1,2,3] a="Runoob" &nbs
Python函式引數傳遞的問題
Python中的一些概念: 變數:沒有型別,可以指向任何物件 物件:有型別。物件分為可變物件和不可變物件 從id可以看出變數是沒有型別的,同一組資料指向不同的物件,id不同。 Python中引數傳遞是傳遞的變數的值,即變數所指向的物件的地址。 傳遞規律
python函式引數傳遞規則
1、宣告一個引數具有預設值引數的函式,如下: def hello(name = 'python') print('你好',name) ---無引數傳遞直接呼叫函式,則為:你好,python--(hello) ---有引數傳遞時,如:hello('小明')--結果為:
關於Python函式引數傳遞方式--值傳遞?引用傳遞!
渣渣我在學習中遇到的一點問題,特地貼出來,由於我水平渣,所以如有問題,請多指教 經過測試可以發現: python3 不允許我們選擇引數傳遞方式,但是他已經全部採用了引用傳遞。有幾點需要注意: 1.引用傳遞可以當做值傳遞使用,只是你需要把他賦值給一個臨時變數副本,不要直接使
Problem#1 Python的函式引數傳遞
本專欄會不定期增加一些Python基本問題的分析和解答以促進Python知識的理解和掌握。第一道Python題如下: #第一題Python題 a = 1 def fun(a): a = 2 fun(a) print(a) b = [] def fun(
Python基礎筆記_Day07_函式引數傳遞、關鍵字引數、預設引數、匿名函式、裝飾器
Day07_函式引數傳遞、關鍵字引數、預設引數、匿名函式、裝飾器 07.01_Python基礎語法(函式的引數的傳遞)(掌握) 07.02_Pythony語言基礎(關鍵字引數)(掌握) 07.03_Pythony語言基礎(預設引數/預設引數)(掌握) 07.04_Pythony語言基礎(
四、1、函式引數是按值傳遞還是按引用傳遞
參考連結:https://www.zhihu.com/question/27114726 http://bosn.me/js/js-call-by-sharing/ 基本型別在函式引數中肯定是
Python的函式引數傳遞後 引數可變與不可變問題
首先看下面的例子: a = 1 def func(a): a=2 func(a) print(a) ##1 a = [] def func(a): a.append(1) func(a) print(a) ##[1] 解釋如下: 型別是屬於物件的,而不是變
python函式引數(1)
(1)<1> 定義帶有引數的函式示例如下:def add2num(a, b): c = a+b print c <2> 呼叫帶有引數的函式以呼叫上面的add2num(a, b)函式為例:def add2num(a, b): c
python 函式引數的傳遞(引數帶星號的說明) 元組傳遞 字典傳遞
python中函式引數的傳遞是通過賦值來傳遞的。函式引數的使用又有倆個方面值得注意:1.函式引數是如何定義的 2.在呼叫函式的過程中引數是如何被解析 先看第一個問題,在python中函式引數的定義主要有四種方式:1.F(arg1,arg2,...)這是最常見的定義方式,一個函式可以定義任意個引數,每個引
Python學習之函式引數傳遞:傳值 or 引用 ?
在學完Python函式那一章節時,很自然的的就會想到Python中函式傳參時傳值呢?還是傳引用?或者都不是? 我回去看了看我以前做的關於淺拷貝與深拷貝的筆記,其實那裡也已經涉及了一些引用相關的問題了。不過在這裡還是再進行一次總結吧。 在回答上面的問題之前我們先
Python中函式引數傳遞
前幾天寫一個方法的時候,內部呼叫了第三方庫的可變引數方法,由於實際的需求,導致引數越寫越長,很不方便。這時是不是我們自己也應該寫一個可變引數的方法,然後根據需要動態傳遞引數? 在解決這個問題之前,我們先來了解Python中四種傳遞引數的形式: fun1(a, b, c)
第二週專案1-C/C++語言中函式引數傳遞的三種方式
問題及程式碼: /* * Copyright (c) 2016,煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:Cpp1.cpp * 作者:張相如 * 完成日期:2016年9月5日 * 版本號:v1.0 * * 問題
python函式引數引用傳遞
首先還是應該科普下函式引數傳遞機制,傳值和傳引用是什麼意思? 函式引數傳遞機制問題在本質上是呼叫函式(過程)和被呼叫函式(過程)在呼叫發生時進行通訊的方法問題。基本的引數傳遞機制有兩種:值傳遞和引用傳遞。 值傳遞(passl-by-value)過程中,被調
Python函式引數和返回值
- 函式引數和返回值的作用 函式:封裝功能獨立的程式碼,在需要時通過函式名被呼叫 引數:外界希望在函式內部處理的資料 返回值:函式完成工作後,給呼叫者的一個結果 函式根據有無引數和返回值,可以相互結合,共有4種組合形式 1.無引數,無返回值 2.無引數,有返回值 3.有引數,無返回值
JS中的函式引數傳遞到底是按值傳遞還是按引用傳遞
首先我們知道JS中的資料型別大致可以分為簡單資料型別和複雜資料型別; 當我們宣告一個變數並給它賦值時,可以賦給其簡單值和複雜值(以下堆記憶體和棧記憶體的地址表示均隨意取的,只是為了區分,不代表真實的記憶體地址); 針對簡單資料型別: 例1 var simpleData1 = 18 v
Java和Python的引數傳遞
我之前總結過很多次java的引數傳遞問題,但是總覺得不夠完美,今天再來總結一次,帶上python java的引數傳遞只有值傳遞,這是首先要宣告的. 如果傳遞的引數是基本資料型別,那就是把本身的複製傳了過去,不管在方法內部怎樣修改這個值,都不會影響到方法外的變數。 如果傳遞的是一個物件,這是十分
python函式引數的填坑之路
背景 最近在看廖雪峰老師的python3教程之函式的引數 受益匪淺,但是在實踐的過程中,發現了一些不解之謎 兩個錯誤 import _thread import time def func1(x): while x: print(x) x = x -1 _threa
C語言指標作為函式引數傳遞學習(一)
1. 一維指標做函式引數 傳入的指標為NULL 比如下面的例子,很多人都會理解錯: #include <stdio.h> void test(char *string) { string = "hello world"; } int main() { cha