python 函式中引數的傳遞方式
def
fn1(a =1)
:# 函式中的(a)是形參 和外面的變數無關 (這裡的是定義函式中指定預設值)
print
("fn1"
, a)
# 這個是區域性變數
a =9
# 這個是全域性變數
fn1(
)# 呼叫函式
print
(a)# 輸出變數的值
fn1 1
9
第乙個實參賦值給第乙個形參,第二個實參賦值給第二個形參…
def
fn2(a, b, c)
:# ↓ ↓ ↓
# fn2(1, 2, 3)
#print
("fn2"
, a, b, c)
fn2(1,
2,3)
# 呼叫函式
fn2 1
23
關鍵字實參:可以不按形參定義的順序去傳遞,而直接根據 形參 名字去傳遞引數
def
fn3(a, b, c)
:print
("fn3"
, a, b, c)
fn3(a =
3, b =
2, c =
1)
fn3 3
21
def
fn4(a, b, c)
:print
("fn4"
, a, b, c)
fn4(
1,c =
2, b =3)
# 實參a沒有指定關鍵字 那麼就會當成位置引數傳入
fn4 1
32
def
fn5(a, b, c)
:print
("fn5"
,a,b,c)
j =999
# int 型別
k =true
# 布林
l ="張三"
# 字串
n =none
# 未定義
m =[1,
2,3]
# 列表
v =# 字典
fn5(j, k, l)
fn5(n, m, v)
fn5 999
true 張三
fn5 none[1
,2,3
]
使用函式演算法的時候就需要把 字串轉化為整數 或者浮點數來進行計算
def
fn6(x)
: x[0]
=10# 這裡修改的是物件裡面的內容 把傳遞進來的變數a裡面的第乙個資料改了,而不是修改變數a的名字
print
("x ="
, x,
id(x)
,"這裡是指向(傳進來的變數的)物件id"
)a =[1
,2,3
]print
(a)fn6(a)
# 呼叫函式 這個函式會修改變數a裡面的資料
print
("a ="
,a,id
(a))
# 檢視變全域性量a被修改後的變化
[1,
2,3]
x =[10,
2,3]
23672200 這裡是指向(傳進來的變數的)物件id
a =[10,
2,3]
23672200
1.傳遞副本,用到淺複製 x.copy()
2.也可以用切片 [:] 不指定起始值,也不指定 也不指定結束值 全要 切到的也是乙個副本
def
fn7(a)
: a[0]
=10print
("a ="
, a,
id(a)
,"這裡的是指向(傳進來的變數的)物件b的id"
)b =[1
,2,3
]fn7(b.copy())
# 淺複製
fn7(b[:]
)# 切到的也是乙個副本
print
("b ="
,b,id
(b),
"這裡的是指向物件變數b的id"
)
# fn7(b.copy()) 傳遞副本,用到淺複製 再進行運算的結果
a =[10,
2,3]
23673256 這裡的是指向(傳進來的變數的)物件b的id
# fn7(b[:]) 切片得到副本 再進行運算的結果
a =[10,
2,3]
23673256 這裡的是指向(傳進來的變數的)物件b的id
# b 原來的 資料和id
b =[1,
2,3]
23673288 這裡的是指向物件變數b的id
Python中函式引數的傳遞
python中函式引數的傳遞是通過 賦值 來傳遞的。但這條規則只回答了函式引數傳遞的 戰略問題 並沒有回答 戰術問題 也就說沒有回答怎麼賦值的問題。函式引數的使用可以分為兩個方面,一是函式引數如何定義,二是函式在呼叫時的引數如何解析的。而後者又是由前者決定的。函式引數的定義有四種形式 1.f arg...
python中函式引數的傳遞
實際引數按照前後順序依次賦值給形式引數。def party area,person print 晚上聚會 print 地點 area print 參與人員 person print 有了酒,就有了故事.party 皇家一號 全體人員 函式宣告定義時,可以給某個引數設定預設資料,在呼叫執行時 有預設資...
Python函式中的引數傳遞
函式的引數 1 函式的引數是可選的 2 函式需要處理的資料應該通過引數來傳遞 3 函式名後面括號裡的引數被稱為形參,由於它不是實際存在的引數所以又稱虛擬引數 4 呼叫函式時後面括號裡的引數稱為實參 def create fib n fib list 0 1 for i in range n 2 re...