先来看个例子:
执行结果:
l1 和 l2指向相同的地址,由于列表可变,l1改变时,l2也跟着变了 。
接着看下面的例子:
结果:
l1没有变化!为什么不是[1, 2, 3, 4]呢?
l = l + [4]表示创建一个“末尾加入元素 4“的新列表,并让 l 指向这个新的对象,l1没有进行任何操作,因此 l1 的值不变 。如果要改变l1的值,需要加一个返回值:
结果:
下面的代码执行结果又是什么呢?
执行结果:
和第一个例子一样,l1 和 l2指向相同的地址,所以会一起改变 。这个问题怎么解决呢?
可以使用下面的方式:
也可以使用浅拷贝或者深度拷贝,具体使用方法可参考Python对象及内存管理机制 。这个问题在Python编程时需要特别注意 。
本文主要介绍了python函数的几种参数类型:必选参数、可选参数、可变参数、位置参数、强制位置参数、关键字参数、强制关键字参数,注意他们不是完全独立的,比如必选参数、可选参数也可以是关键字参数 , 位置参数可以是必选参数或者可选参数 。
另外 , python中的参数传递属于对象的引用传递,在对可变数据类型进行参数传递时需要特别注意 , 如有必要,使用python的拷贝方法 。
参考文档:
--THE END--
python中怎么设定函数形参的类型#Python 2.5
#这个可以用修饰器来完成
#但是一般不会限制参数类型
#给python改变类型函数你个思路:
def argfilter(*types):
def deco(func):
#这是修饰器
def newfunc(*args):
#新python改变类型函数的函数
if len(types)==len(args):
correct = True
for i in range(len(args)):
if not isinstance(args[i], types[i]):
#判断类型
correct = False
if correct:
return func(*args)
#返回原函数值
else:
raise TypeError
else:
raise TypeError
return newfunc
#由修饰器返回新python改变类型函数的函数
return deco
#返回作为修饰器python改变类型函数的函数
@argfilter(int, str)
#指定参数类型
def func(i, s):
#定义被修饰的函数
print i, s
#之后你想限制类型的话, 就这样:
#@argfilter(第一个参数的类名, 第二个参数的类名, ..., 第N个参数的类名)
#def yourfunc(第一个参数, 第一个参数, ..., 第N个参数):
#
...
#
#相当于:
#def yourfunc(第一个参数, 第一个参数, ..., 第N个参数):
#
...
#yourfunc = argfilter(第一个参数的类名, 第二个参数的类名, ..., 第N个参数的类名)(yourfunc)
Python3 & 基本数据类型(一) Python提供python改变类型函数的基本数据类型python改变类型函数:数值(整型、浮点型、复数、布尔型等)、字符串、列表、元组、字典、集合等,将它们简单分类如下:
通常被称为整型,数值为正或者负,不带小数点 。
Python 3的整型可以当做Long类型使用,所以Python 3没有
Python 2的Long类型 。
Python 初始化的时候会自动建立一个小整数对象池,方便我们调用,避免后期重复生成!这是一个包含 262个指向整数对象的指针数组,范围是 -5 到 256。
Python的浮点数就是数学中的小数,类似C语言中的double 。
浮点数 也就是小数,如 1.23 , 3.14,-9.01 等等 。但是对于很大或很小的浮点数,一般用科学计数法表示,把10用e替代, 1.23x10^9 就是 1.23e9 ,或者 12.3e8 , 0.000012 可以写成1.2e-5 等等 。
复数 由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点 。
推荐阅读
- cf手游安卓换苹果微信,cf手游微信安卓账号转移ios
- 普通电视怎么设置点播节目的简单介绍
- linux常见命令及用法,linux常用命令总结
- 如何推广第四方物流,如何发挥第四方物流的作用
- php吧数据转换字符串 php 转换为字符串
- linux命令10分类,linux命令有哪几部分组成
- 西瓜视频下载的简单介绍
- 地球内部冒险游戏,ness地球冒险
- linux服务器命令行 linux服务器配置命令