7.2 参数传递

7.2 参数传递


在Python中,类型属于对象,变量是没有类型的,例如:

x = [1 , 2 , 3 , 4 , 5 , 6]

y = "bike"

在上述代码中, [1 , 2 , 3 , 4 , 5 , 6 ] 是List 类型, "bike" 是String 类型,而变量x 是没有类型,它仅仅是一个对象的引用(一个指针) ,可以是指向List 类型对象,也可以是指向String 类型对象。

7.2.1 不可更改对象

在Python 中,字符串( string ),元组( tuple )和数值型(number)是不可更改对象。例如,变量赋值a=6 后再赋值a=18 ,这里实际是新生成一个int 值对象18 ,再让a 指向它,而6 被丢弃,不是改变a 的值,相当于新生成了a 。

在Python 函数的参数传递中,不可变对象类似C++ 的值传递,如整数、字符串、元组。如fun ( a) ,传递的只是a 的值,没有影响a 对象本身。比如在fun (a) 内部修改a 的值,只是修改另一个复制的对象,不会影响a本身。

单击"开始"菜单,打开Python 3.6.5 Shell 软件,然后单击菜单栏中的"File/New File" 命令,创建一个Python 文件,并命名为"Mypython7-2.py" ,然后输入如下代码:

在上述代码中int 对象2 ,指向它的变量是趴在传递给Changelnt( )函数时,按传值的方式复制变量b , a 和b 都指向同一个int 对象,在a=10 肘,则新生成一个int 值对象10 ,并让a 指向宫。

所以调用ChangeInt( ) 函数后, b 指向的是int 对象2 ,而a 指向的是int 对象10 ,所以函数的返回值是10 ,而变量b 显示的是2 。

单击菜单栏中的"Run/Run Module" 命令或按下键盘上的"F而5可以运行程序代码,结果如图7.2 所示。

7.2.2 可更改对象

在Python 中,列表(list) 、字典( dict )等是可以修改的对象。例如,变量赋值la=[1 , 2 , 3 , 4] 后再赋值la[2]=5 ,则是将列表la 中的第三个元素值更改,本身la 没有变,只是其内部的一部分值被修改了。

提醒:python 中一切都是对象,严格意义不能说值传递还是引用传递,应该说传不可变更对象和传可变更对象。

单击"开始"菜单,打开Python 3.6.5 Shell 软件, 然后单击菜单栏中的"FilelNew File" 命令,创建一个Python 文件,并命名为"Mypython7-3.py" ,然后输入如下代码:

传入函数的和在末尾添加新内容的对象用的是同一个引用,所以函数内取值和函数外取值是一样的。

单击菜单栏中的"Run/Run Module" 命令或按下键盘上的"F5" ,就可以运行程序代码,结果如图7.3 所示。