我在偷偷学Python的第十七天(按值传递和按引用传递)

按值传递

Python按值传递参数和按引用传递参数:

按值传递参数:

使用一个变量的值(数字,字符串),放到实参的位置上

注:传递过去的是变量的副本,无论副本在函数中怎么变,变量的值都不变

# 传递常量

# 定义一个函数,输出 欢迎,接收到的参数 name
def huanying(name):
    print("欢迎",name)
huanying("小明")
# 欢迎 小明



# 定义一个求长方形面积的函数,要求具有返回值且参数为 height 和 width
def area(height,width):
    return height * width

mianji = area(5,4)
print(mianji)
# result :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']

作者:Eamonze
时间:2020/12/6

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值