python元组传参的理解
2015-11-27 16:14
836 查看
def changename(n): n[0] = 'Mr1' names=['Mr0','MrA'] print(names) changename(names) print(names)
这一段代码运行的效果是:
['Mr0', 'MrA']
['Mr1', 'MrA']
也就是说,实际上,python的列表概念和C++里面的数组概念几乎是完全一样的,传递的如果是一个列表的话,相当于也是传递一个指针(其实准确点来讲是引用吧),也就是说在函数里面的操作也会影响实参的值。
上面的代码类似于:
#include<iostream>
#include<string>
using namespace std;
void changenames(string a[]){
a[0] = "Mr1";
}
int main(){
string names[] = { "Mr0", "MrA" };
cout << names[0]<< endl;
changenames(names);
cout << names[0] << endl;
system("pause");
return 0;
}如果要在python函数中不想改变原来列表的值,应该在函数中新建一个副本:
def changename(n):
n_copy=n[:]
n_copy[0] = 'Mr1'
names=['Mr0','MrA']
print(names)
changename(names)
print(names)输出结果:
['Mr0', 'MrA']
['Mr0', 'MrA']
相关文章推荐
- Python支持tab键补全
- [基础] - Python中 is 和 == 的区别
- python 扫描目录下所有文件并读取文件
- python实现简单的音乐播放功能
- 2.python学习笔记:python操作mysql数据库
- python的参数
- python request
- [基础] - Python中 @staticmethod 和 @classmethod
- windows 64bit selenium+python环境搭建
- Python 文件操作
- pygame for python3.5
- Python学习笔记(1)
- Python 文本挖掘:使用gensim进行文本相似度计算
- Python flask多维字典实现菜单动态添加
- Python cPickle模块
- 一些有趣的python开源项目
- Some Notes of Python Interfaces Pycaffe (Caffe)
- python 跳板机登录脚本
- Python安装配置
- 如何用Python写一个贪吃蛇AI