没有学不来的python
概括
任何编程语言的初衷都是把现实生活中的各种问题抽象出来得到对象,然后对对象进行操作得出结论。所以学完数据类型,就该学算子了。操作员就像螺丝一样,可以将各个单独的零件连接起来,得到一个完整的产品。
运营商分类
根据操作对象的数量:
有一元运算符、二元运算符和三元运算符。
#not就是单目运算符,这里只有一个操作对象即False if not False: pass #+就是双目运算符,它的左右连接着10和20两个对象 sum = 10 + 20
按操作类型:
运算符有:算术运算符、比较运算符、逻辑运算符、位运算符、赋值运算符、成员运算符、恒等运算符
下面直接进入实战,无需铺垫。
算术运算符
算术运算符是我们在日常数学中学习的那些加法、减法、乘法和除法运算。一般来说,它们的操作对象基本都是数值类型。
常用运算符:
算术运算符比较简单,写几个例子练习一下:
num1 = 10,num2 = 20 # +运算符 sum = num1 + num2 #-运算符 diff = num2 - num1 #*运算符 product = num1 * num2 # /运算符,注意被除数不能为0,否则抛异常 business = num1 / num2 # %运算符 remainder = num1 % num2
位运算符
位运算符是对运算对象进行二元运算。执行时,首先将对应的操作数转换为对应的二进制操作数,然后对二进制操作数进行位运算。
如果位操作使用得当,它们往往会产生意想不到的效果。但是,位运算的缺点是大多数人不熟悉二进制运算的规则。其次,位运算编写的代码很难转化为现实的逻辑。需要配置注释。
所以我认为按位运算符是高级学习。我的系列文章的目的是让您入门,因此在此不再提及。只是对于我们初学者来说,我们需要知道python也可以进行二元运算,然后我们以后需要学习和补充二元运算。
身份运算符
恒等运算符是用来判断两个变量是否指向同一个内存地址的运算符。
两个变量的值相等,不一定指向同一个内存地址,但是如果两个变量指向同一个内存地址,那么它们的值一定相等。
恒等运算符实际上是 is 符号。它可以用来比较两个变量是否引用同一个对象。
请看下面的示例代码
# 身份运算符的示例 a = [1, 2, 3] b = [1, 2, 3] print("a is b :" + str(a is b)) print("a == b :" + str(a == b)) print("a的地址:" + str(id(a))) print("b的地址:" + str(id(b)))
输出结果
a is b :False a == b :True a的地址:2586803790472 b的地址:2586803790536
由上可知,a和b的值虽然相等,但并不指向同一个地址。因为 a 和 b 是列表,它们都是可变对象,所以它们引用不同的内存地址。
看下一个例子:
num1 = 10 num2 = 10 print("num1 is num2 :" + str(num1 is num2)) print("num1 == num2 :" + str(num1 == num2)) print("num1的地址:" + str(id(num1))) print("num2的地址:" + str(id(num2)))
输出结果
num1 is num2 :True num1 == num2 :True num1的地址:140712013685680 num2的地址:140712013685680
从上面可以看出,不仅num1和num2的值相等,而且引用的内存地址也是一样的。为什么,因为它们都是不可变的对象,所以在内存中会有一个固定的位置。当多个变量使用相同的值时,直接引用这个地址即可,既节省空间又便于管理内存。
或许我们在这里会有些疑惑,我们怎么看是真的?只要记住下面的句子。
两个可变对象,即使值相等,也指向不同的内存地址。
不可变对象,只要值相等,就必须引用同一个内存地址
除了比较两个变量是否为同一个对象外,is更多的用于判断是否为空值。参见示例:
a = None if a is None: pass
以上就是判断空值的用法。
另外,如果要比较两个值是否相等,应该使用=而不是is。记住,比较值的大小是用来=的,是用来判断两个变量是否指向同一个地址的。
比较运算符
比较运算符用于比较两个操作数之间的大小关系。比较特别的是不仅可以比较数字,还可以比较字符串。因为每个字符都是一个ascii码单目运算符的结合性是,所以可以通过它来比较大小。但是如果是中文的话,就比较复杂了。中文需要自己验证。因为涉及到字符编码的问题,这里不再赘述。
主要的比较运算符如下:
比较运算符的用法比较简单。我只举一个例子。其余的用法相同。请仔细尝试。
# 比较运算符 a = 10 b = 20 if a > b: print("a>b") else print("a s_2: print("s_1>s_2") else print("s_1<s_2")
注意,不要尝试比较字符串和数字,会报错。在比较之前,必须将数据转换为相同的数据类型,然后进行比较。
同时,如果要比较一系列数字,可以将它们写在一起而不分开。例如:
num_1 = 10 # 连着写 if 5 <= num_1 <= 15: print("True") # 等同于 if (5 <= num_1) and (num_1 <= 15): print("True")
会员运营商
顾名思义,成员运算符就是用来判断一个元素是否是组合元素的成员的运算符。通常的做法是确定数字或字符串是否是元组或列表字典的成员。
成员运算符很简单单目运算符的结合性是,只有两个,它们是:
成员运算符的运算效率在列表和元组中较慢。正如我之前所说,这两个元素是线性搜索的。相比之下,字典和集合更快,因为它们是通过键索引的。这些在前面的章节中已经提到。
让我们看一个例子来学习如何使用成员运算符:
输出结果
s_2包含在s_1里面 num_1是list_1的元素
逻辑运算符
逻辑运算符是离散数学中的与、否、或运算,对应的字母是与、非、或。其中and and or 是二元运算符,not 是一元运算符,and and and or 都是短路运算符。
短路运算符意味着只有当第一个操作数的值不能确定逻辑运算的结果时,才计算第二个操作数。例如,当AND的第一个操作数的值为假时,结果必然为假;当 OR 的第一个操作数为真时,最终结果必定为真,这种情况下不需要知道第二个操作数的具体值。
另请注意,除非您的操作数是布尔值,否则逻辑运算符的结果不是布尔值。它实际返回的是决定操作结果的操作数。并且因为,在python中,除了0、None和False都是假的,其他都是真值,所以可以通过判断操作数的值来判断整个表达式的真假。
例如:
# 逻辑运算符 num_1 = 0 num_2 = -1 # num1 and num2因为num1是0所以整个表达式就是False,因此返回的是决定整个表达式的因子num_1 print("对num_1和num_2进行and运算,得到:{0}".format(num_1 and num_2)) # not 就是取反的意思 if not num_1: print("num_1是0,因此它是假值。所以not num_1变成真值")
输出结果:
对num_1和num_2进行and运算,得到:0 num_1是0,因此它是假值。所以not num_1变成真值
赋值运算符
赋值运算符的意思是在赋值之前执行一个操作。一般来说,先对右操作数和左操作数进行运算,然后将运算结果赋给左操作数。
例如:
a = 10 b = 20 a += b
就是先计算10+20得到30,然后将30赋给a变量。
主要的赋值运算符如下:
至于它们的用法,上面也给出了 += 运算符的用法。
结尾
至此,您已经基本掌握了运算符。现在你应该结合之前学过的数据类型,多做一些编码练习,这样你就不会在学完运算符后丢失数据类型。对于初学者来说,加深对代码的感觉非常重要。
顺便给大家留个有趣的实验,就是三元运算符的使用。
python中只有一个三元运算符,用于替换if else的控制结构。
我举个例子:
a = 1 b = 2 h = None #下面的句子就是三目运算符,即如果a>b则返回a否则的话返回b.即取ab中最大值 h = a if a>b else b print(h)
然后大家继续深入挖掘这个三元算子的用法。
常见问题FAQ
- 免费下载或者VIP会员专享资源能否直接商用?
- 本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
- 提示下载完但解压或打开不了?
- 找不到素材资源介绍文章里的示例图片?
- 欧资源网