![]() |
光明磊落的登山鞋 · postgresql 安装过程中出现 ...· 1 年前 · |
![]() |
爱吹牛的大熊猫 · 如何将SQLServer2005中的数据同步 ...· 1 年前 · |
![]() |
悲伤的机器人 · 云从的多粒度网络(MGN)的结构设计与技术实 ...· 2 年前 · |
![]() |
近视的大象 · 90后博导研发石墨烯人工喉,可将聋哑人声音“ ...· 2 年前 · |
![]() |
旅途中的茄子 · [BuildRelease]产品和文件版本号 ...· 2 年前 · |
以下实例演示了Python所有位运算符的操作:
以上实例输出结果:
1 - c 的值为: 12 2 - c 的值为: 61 3 - c 的值为: 49 4 - c 的值为: -61 5 - c 的值为: 240 6 - c 的值为: 15Python语言支持逻辑运算符,以下假设变量 a 为 10, b为 20:
运算符逻辑表达式描述实例 andx and y 布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。 (a and b) 返回 20。 orx or y布尔"或" - 如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值。 (a or b) 返回 10。 notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 not(a and b) 返回 False以上实例输出结果:
以上实例输出结果:
1 - 变量 a 和 b 都为 True 2 - 变量 a 和 b 都为 True,或其中一个变量为 True 3 - 变量 a 和 b 有一个不为 True 4 - 变量 a 和 b 都为 True,或其中一个变量为 True 5 - 变量 a 和 b 都为 False,或其中一个变量为 False除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组。
运算符描述实例 如果在指定的序列中找到值返回 True,否则返回 False。 x 在 y 序列中 , 如果 x 在 y 序列中返回 True。 not in如果在指定的序列中没有找到值返回 True,否则返回 False。 x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。以下实例演示了Python所有成员运算符的操作:
以上实例输出结果:
1 - 变量 a 不在给定的列表中 list 中 2 - 变量 b 不在给定的列表中 list 中 3 - 变量 a 在给定的列表中 list 中运算符描述实例 is 是判断两个标识符是不是引用自一个对象 x is y , 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False is notis not 是判断两个标识符是不是引用自不同对象 x is not y , 类似 id(a) != id(b) 。如果引用的不是同一个对象则返回结果 True,否则返回 False。
注: id() 函数用于获取对象内存地址。
以下实例演示了Python所有身份运算符的操作:
以上实例输出结果:
1 - a 和 b 有相同的标识 2 - a 和 b 有相同的标识 3 - a 和 b 没有相同的标识 4 - a 和 b 没有相同的标识is 与 == 区别:
is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。
>>> a = [1, 2, 3] >>> b = a >>> b is a >>> b == a >>> b = a[:] >>> b is a False >>> b == apython中会为每个出现的对象分配内存,哪怕他们的值完全相等(注意是相等不是相同)。如执行a=2.0,b=2.0这两个语句时会先后为2.0这个Float类型对象分配内存,然后将a与b分别指向这两个对象。所以a与b指向的不是同一对象:
>>> a=2.0 >>> b=2.0 >>> a is b False >>> e
但是为了提高内存利用效率对于一些简单的对象,如一些数值较小的int对象,python采取重用对象内存的办法,如指向a=2,b=2时,由于2作为简单的int类型且数值小,python不会两次为其分配内存,而是只分配一次,然后将a与b同时指向已分配的对象:
>>> a=2 >>> a is b True
如但果赋值的不是2而是大的数值,情况就跟前面的一样了:
>>> a=4444 >>> b=4444 >>> a is b False True
CosmosHua
cos***cosmos@163.com
Gy_GDUT
634***603@qq.com
gjxie
130***2297@qq.com
因为在 Python 里的数值和字符串之类的都是不可变对象,对不可变对象操作的结果都会生成一个新的对象。
a = 1 a += 1
在 C/java 之类的语言中,把 a 指向内存地址单元数据值由 1 改成了 2。
但是在 Python 中是完全不同的另一套机制。
解释器创建一个新的整数对象 2。
然后把这个对象的地址再次分配给 a。
见下面代码:
>>> id(1) 41116008L >>> a = 1 >>> id(a) 41116008L >>> id(2) 41115984L >>>a += 1 >>> id(a) 41115984L所以在 Python 中不可能出现C/java 之类那种单独一行一个 i++,i-- 的。
广工陈不亮
113***2936@qq.com
Python 基础的发现个问题,有一个列表 a=[1,2,3,4,5] ,赋值给 b 的两种方式:
# 第一种 # 第一种 b=a[:]
结果都是: [1, 2, 3, 4, 5]
这两种赋值结果看起来都是一样的,但是他们有什么区别么?
区别就是:
前者传递引用 后者是拷贝Python 有个叫做 id 的函数能够得到对象的地址,你打印出来看看就清楚了。直接 = 是引用赋值,引用原来的对象;而 [:] 是重新推导,会生成新的对象。
>>> a=[1,2,3,4,5] >>> c=a[:] >>> id(a) 4410359536 >>> id(b) 4410359536 >>> id(c) 4410358240从以上结果上看 id(a) 与 id(b) 的内存地址一样的,而 id(a) 与 id(c) 内存地址不一样。
BNG
459***40967@qq.com
jt
jun***hu1995@163.com
Rounie
zha***51282436@sina.com