python函数注意事项-参数的改变
来源:互联网 发布:淘宝交易成功数据 编辑:程序博客网 时间:2024/06/01 07:23
对于python中的函数,如果我们在函数需要一个参数,而在函数中又对这个参数做了改变,那么函数调用结束后这个参数会被改变。
下面这个场景:我们有一个列表,其中包括16进制的数:
hex_list = ['0xffffffff','0x11111111']
但是我们想在输出结果中显示十进制的数,于是我们可能定义一个专门输出的函数:
def test(something): for i in something: ind = something.index(i) something[ind] = int(i,16) return something
下面打印一下结果:
x = test(hex_list)print 'result:',x
会得到:
result: [4294967295L, 286331153]
好的,现在看看最初的 hex_list 的变化:
print 'hex_list before test():',hex_listx = test(hex_list)print 'result:',xprint 'hex_list after test():',hex_list
输出:
hex_list before test(): ['0xffffffff', '0x11111111']
result: [4294967295L, 286331153]
hex_list after test(): [4294967295L, 286331153]
我们很惊奇的发现最初的 hex_list 的值被改变了。这是因为在函数中对传入的参数操作了。
有人可能会说,函数中最后将传入的参数返回了,所以会发生改变,那么我们再来看:
hex_list = ['0xffffffff','0x11111111']def test(something): result = '' for i in something: ind = something.index(i) something[ind] = int(i,16) result = result + str(something[ind]) return resultprint 'hex_list before test():',hex_listx = test(hex_list)print 'result:',xprint 'hex_list after test():',hex_list
输出:
hex_list before test(): ['0xffffffff', '0x11111111']
result: 4294967295286331153
hex_list after test(): [4294967295L, 286331153]
由此可见,不管返回值是什么,传入的参数都被改变了,就是因为这一句:
something[ind] = int(i,16)以上实验在2.7.5中。
0 0
- python函数注意事项-参数的改变
- python函数参数注意事项
- python 函数的缺省参数的注意事项
- Python【函数:调用函数 定义函数 函数的参数 递归函数】学习注意事项
- [python]函数的参数
- python 函数的参数
- Python的函数参数
- Python--函数的参数
- python 函数的参数
- python--函数的参数
- Python函数的参数
- python函数的参数
- Python 函数的参数
- Python函数的参数
- python-函数的参数
- python 函数的参数
- python函数的参数
- Python 函数的参数
- 我们为何离职???
- cxf + spring 的WS-Security示例(一)
- 8路彩灯显示系统
- [ffmpeg] clip video & audio
- 黑马程序员___集合1
- python函数注意事项-参数的改变
- 快速枚举
- 一步一步写makefile
- 16.2
- 金正康健公司面试题
- 网络体系结构
- cxf + spring 的WS-Security示例(二)
- TCP和UDP的"保护消息边界" 机制
- OpenCV 机器学习之 支持向量机的用法实例