Python进阶(十):参数传递

python中,参数是以引用的形式传递给函数的。来看下面代码:

def a(the_list):
    print('Got', the_list)
    the_list.append('treats')
    print('Set to', the_list)

outer_list = ['Dogs', 'eats']

print('Before, outer_list = ', outer_list)
a(outer_list)
print('After, outer_list = ', outer_list)

# Outputs in terminal
# >>> Before, outer_list = ['Dogs', 'eats']
# >>> Got ['Dogs', 'eats']
# >>> Set to ['Dogs', 'eats', 'treats']
# >>> After, outer_list = ['Dogs', 'eats', 'treats']

在上面代码中the_list作为参数传递进入a函数中,a函数对the_list进行操作,由于the_list是outer_list的引用,所以改变的是outer_list的数值。

好了,来看下进阶版:

def b(the_list):
     print('Got', the_list)
    the_list = ['You', 'never', 'lie']
    print('Set to', the_list)

outer_list = ['Dogs', 'eats']

print('Before, outer_list = ', outer_list)
a(outer_list)
print('After, outer_list = ', outer_list)

# Outputs in terminal
# >>> Before, outer_list = ['Dogs', 'eats']
# >>> Got ['Dogs', 'eats']
# >>> Set to ['You', 'never', 'lie']
# >>> After, outer_list = ['Dogs', 'eats']

上面代码中一开始the_list还是outer_list的引用,但是由于the_list = ['You', 'never', 'lie']这句语句等号右边是直接生成一个新的列表,所以the_list不在时outer_list的引用,而是变成了一个新的参数。对the_list操作,并不会改变outer_list的值。

发布了67 篇原创文章 · 获赞 77 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/weixin_37720172/article/details/102938988