Python按值傳遞引數和按引用傳遞引數

2022-06-19 12:39:13 字數 2887 閱讀 5594

python按值傳遞引數和按引用傳遞引數:

按值傳遞引數:

使用乙個變數的值(數字,字串),放到實參的位置上

注:傳遞過去的是變數的副本,無論副本在函式中怎麼變,變數的值都不變

傳遞常量:

#

傳遞常量

#定義乙個函式,輸出 歡迎,接收到的引數 name

defhuanying(name):

print("歡迎"

,name)

huanying("小明

")#歡迎 小明

#定義乙個求長方形面積的函式,要求具有返回值且引數為 height 和 width

defarea(height,width):

return height *width

mianji = area(5,4)

print

(mianji)

#20

傳遞變數:

#

傳遞變數

#定義乙個函式,輸出 歡迎,接收到的引數 name

defhuanying(name):

print("歡迎"

,name)

strs_name = "小明"

huanying(strs_name)

#歡迎 小明

#定義乙個求長方形面積的函式,要求具有返回值且引數為 height 和 width

defarea(height,width):

return height *width

height = 5width = 4mianji =area(height,width)

print

(mianji)

#20

按引用傳遞:

輸出 列表、元組 和 集合所有元素的總和

#

按引用傳遞

lst = [1,2,3,4]

tuple_1 = (4,5,7)

se =

defadd(args):

'''將 args 中的元素總和輸出

'''print

(sum(args))

add(lst)#10

add(tuple_1)#16

add(se)#28

#輸出程式的注釋

print(add.__doc__)#

將 args 中的元素總和輸出

使用函式,將引數引用傳遞輸出引數中的奇數

#

按引用傳遞

lst = [1,2,3,4]

tuple_1 = (4,5,7)

defjishu(args):

'''將 args 中的奇數輸出

'''for i in

range(len(args)):

if args[i] % 2 == 1:

print(args[i], end = "")

print

()jishu(lst)

#1 3

jishu(tuple_1)

#5 7

#輸出程式的注釋

print(jishu.__doc__)#

將 args 中的奇數輸出

如果引數發生修改

1.原引數如果為可變型別(列表、集合、字典)則也跟著修改

2.原引數如果為不可變型別(數字、字串、元組)則不發生改變

示例:

列表在函式中呼叫方法,列表本身發生改變

def

add_elem(args,string):

'''將 lst_num 新增到 args 中

'''

#args += string

#args.extend(string)

#args.insert(len(args),string)

return

args

lst = [1,2,3,4]

string = "

abc"

print

(add_elem(lst,string))

#[1, 2, 3, 4, 'a', 'b', 'c']

print

(lst)

#[1, 2, 3, 4, 'abc']

在函式中,如果列表作為實參,形參發生修改時,列表值發生改變

def

add_elem(args,string):

'''將 lst_num 新增到 args 中

'''args[len(args)-1] =string

return

args

lst = [1,2,3,4]

string = "

abc"

print

(add_elem(lst,string))

#[1, 2, 3, 'abc']

print

(lst)

#[1, 2, 3, 'abc']

2020-02-11

Python函式引數 按值傳遞和按引用傳遞

首先簡單說明一下,python中按值傳遞與按引用傳遞的區別 按值引數傳遞是指乙個變數的值來取代乙個函式引數的做法。如果這個值在函式 組中改變,對於呼叫這個函式的 來說,其中相應的變數值並不會受到任何影響,可以把這個引數認為是原變數值的乙個副本。按引用引數傳遞是指對於呼叫這個函式的 會維護這個 中變數...

scala 引數傳遞 按值傳遞 按名傳遞

package leetcode import scala.util.random object function args def getrandom call by name 按名傳遞,傳入引數變數名,如果runbyname內部用到,再去求值 f string int long表示 該無參函式的...

按值傳遞和按引用傳遞

對於基本型別而言,是按值傳遞的 基本型別儲存在棧中 基本型別引數的傳遞和基本型別的複製一樣,傳遞的是值本身 var a 1 function test x test a console.log a 1按值傳遞的意思就是形參是實參的複製,形參實參互不干擾 so,雖然在函式test中a被修改,但是並沒有...