Python按值传递参数和按引用传递参数
Posted Hany博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python按值传递参数和按引用传递参数相关的知识,希望对你有一定的参考价值。
Python按值传递参数和按引用传递参数:
按值传递参数:
使用一个变量的值(数字,字符串),放到实参的位置上
注:传递过去的是变量的副本,无论副本在函数中怎么变,变量的值都不变
传递常量:
# 传递常量 # 定义一个函数,输出 欢迎,接收到的参数 name def huanying(name): print("欢迎",name) huanying("小明") # 欢迎 小明 # 定义一个求长方形面积的函数,要求具有返回值且参数为 height 和 width def area(height,width): return height * width mianji = area(5,4) print(mianji) # 20
传递变量:
# 传递变量 # 定义一个函数,输出 欢迎,接收到的参数 name def huanying(name): print("欢迎",name) strs_name = "小明" huanying(strs_name) # 欢迎 小明 # 定义一个求长方形面积的函数,要求具有返回值且参数为 height 和 width def area(height,width): return height * width height = 5 width = 4 mianji = area(height,width) print(mianji) # 20
按引用传递:
输出 列表、元组 和 集合所有元素的总和
# 按引用传递 lst = [1,2,3,4] tuple_1 = (4,5,7) se = {9,6,5,8} def add(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) def jishu(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.append(string) # 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按值传递参数和按引用传递参数的主要内容,如果未能解决你的问题,请参考以下文章