一、数字类型:属值传递;函数内的修改传不出来。
def func(x):
x = 1
print('函数里面,x的值是:', x)
x = 0
func(x)
print('函数外面,x的值是:', x)
函数里面,x的值是: 1
函数外面,x的值是: 0
二、字符串类型:属值传递;函数内的修改传不出来。
def func(x):
x = 'python'
print('函数里面,x的值是:', x)
x = 'hello'
func(x)
print('函数外面,x的值是:', x)
函数里面,x的值是: python
函数外面,x的值是: hello
三、元组类型:属值传递;函数内的修改传不出来。
def func(x):
x = (11, 22, 33)
print('函数里面,x的值是:', x)
x = (1, 2, 3)
func(x)
print('函数外面,x的值是:', x)
函数里面,x的值是: (11, 22, 33)
函数外面,x的值是: (1, 2, 3)
四、敲黑板了!列表类型:属引用传递;但若整体改头换面、另起炉灶,依然传递不出来。
def func(x):
x = [11, 22, 33]
print('函数里面,x的值是:', x)
x = [1, 2, 3]
func(x)
print('函数外面,x的值是:', x)
函数里面,x的值是: [11, 22, 33]
函数外面,x的值是: [1, 2, 3]
五、列表类型:属引用传递;按索引或切片的方式修改可以传递出来。
def func(x):
x[0] = 11
x[1:] = [22, 33, 44]
print('函数里面,x的值是:', x)
x = [1, 2, 3]
func(x)
print('函数外面,x的值是:', x)
函数里面,x的值是: [11, 22, 33, 44]
函数外面,x的值是: [11, 22, 33, 44]
六、字典类型:属引用传递;与列表类似。
def func(x):
x['Jack'] = 66
x['Andy'] = 88
print('函数里面,x的值是:', x)
x = {'Jack': 60, 'Andy': 80}
func(x)
print('函数外面,x的值是:', x)
函数里面,x的值是: {'Jack': 66, 'Andy': 88}
函数外面,x的值是: {'Jack': 66, 'Andy': 88}
总结:
- 数字、字符串、元组:按值传递,传不出来;
- 列表,字典:按引用传递,只要不另起炉灶,可以传出来。