洗礼灵魂,修炼python(5)--python操作符,内置函数
前面提到了BIF(内置函数)这个概念,什么是内置函数,就是python已经定义好的函数,不需要人为再自己定义,直接拿来就可以用的函数,那么都有哪些BIF呢?
可以在交互式界面(IDLE)输入这段代码,注意是两边都是双下划线
dir(__builtins__)
则可以查看不同python版本都有哪些BIF

就看这些就能很明显的看出python3和python2还是有很多区别的,想看哪个BIF的用法就直接help()它看官方文档就行,这里要说的是,python官方的代码其实很少的语法,基本都是很简单的英语,要学编程不可能不学英文的,怎么也要掌握该开发语言的常用术语吧,而且官方文档比其他任何一篇解析来的更正式更准确,要学会去看官方文档。
前一章结尾处你应该看到了运算了,是的,任何一种开发语言都是可以运算,你要把它当计算器用我也没办法。
说到这,自然就牵扯到操作符了:
1.算术操作符
+,-,*(注意是星号,不是字母x),这是数学里都学过的,就不多说了
//,/,% 这几个都是和除法相关的,但代表的都是不同的。先说/,在python2和python3有不同的结果:

上面是python2,下面是python3,/默认在python2里是正常除,但舍去小数部分,如果想达到python3里的结果,也就是该等于多少就等于多少的话,需要后面的高级语法了:

这个【from __future__ import division】语法暂且不说,后面在模块章节会提到,你知道有这个用法就行
你是不是觉得,哇,好坑啊,一个简单的除法运算,还不能得到一个本来该有的结果,是的,python官方得知后,把这个也改进到python3中了,该是多少就是多少
// 取模运算,或者叫取整预算

% 取余数运算

这个取余运算在后面会发挥很大的作用,好好体会
2.比较符:
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于 (注意这里的== 不等同于is)
!= 不等于 (<> 也表示不等于)
= 表示赋值 (x=y=z 链式赋值)
3.逻辑操作符:
in 属于
or 或(注意与其他语言区别,这里的or不等同于|,|有其他意义)
not in 不属于
is 等同于
前面三个在高中数学里学集合的时候都学过的,不用多说,后面运用的时候你会从中体会
主要是 is ,它是判断是不是自身的用法,比如:


这里的id()是内置函数,可以查看对象的内存空间里的id,由此和is配套使用可以真的判断其不是就是他自己,不过这里都一样的,好像没什么问题对不?因为结果一样,你是不是就会觉得==就是is?并不是的,接着看

这里又用了一个后面才提到的知识,列表,很抱歉,因为知识点就是这么交叉的,为了解释当前的==不等同于is,不得不提到列表,后面会详解,姑且不说这个问题
看到没,此时再用 a is b返回的是False了,但是id还是相同的。所以 == 并不等同于 is 记住这一点就行
4.** 幂运算

5.正负号:
+,- (此时并不是算术操作符里的加减运算)
6.按位运算
&:按位与运算,按位是指将一个数字转换为二进制,然后这些二进制按位进行与运算,即类似and运算
例:>>> a=7&18 #7二进制为111 转换为二进制: 00000111
>>> a #18 为10010 转换为二进制: 00010010,两个作与运算,
2 得: 0000010,为2

|:按为或运算,按位是指将一个数字转换为二进制,然后这些二进制按位进行或运算,即类似or运算 #注意,这里的“|”不等同于“or”(注意与c语言区别)
例:>>> b=7|18 #7二进制为111,转换为二进制:00000111
>>> b #18 为10010,转换为二进制: 00010010
23 # 得 00010111,为23
例:

^:按位异或运算,按位是指将一个数字转换为二进制,然后这些二进制按位进行或运算,不同则是1,相同则是0
例:
>>> c=7^18 #7二进制为111,00000111
>>> c #18为10010, 00010010
21 # 得00010101,为21
~:按位翻转,即~x=-(x+1)
例:>>> a=~18 ~18=-(18+1)
>>> a
-19
<<:按位左移,比如18即为00010010
左移一个单位 00100100,即36,左移一个单位相当于乘以2,左移N个单位则为乘2的N次幂
例;

>>:按位右移,比如18即为00010010
右移一个单位 00001001,即9,左移一个单位相当于除以2,左移N个单位则为除以2的N次幂
例:

你现在应该有疑问了,如果这些操作符混合在一起,怎么计算呢?谁先开始计算,谁最后计算?
所以又有了运算优先级:

是的这是全部的运算优先级,你应该会想,我靠,我学习个编程语言,优先级规则这么多,难道我还要背吗?
不是的,基本不用靠背,你在写代码维护代码的同时你就会自然的记住,而且不用全部记住,通常用的就这些:
优先级从左到右高到低:
幂运算(**),正负号(+,-),算术操作符(*,/,//,%,+,-),比较操作符(<,<=,>,>=,==,!=),逻辑操作符(not,and,or,is)
其实这些优先级基本和数学里的优先级一样的。
唯一要注意的是:
其中,幂运算左边正负号优先级比右边优先级低:

至此,真正的前期概念和规则你已经掌握了,后面将进入真正的洗礼之路了。
洗礼灵魂,修炼python(5)--python操作符,内置函数的更多相关文章
- Python标准库:内置函数hasattr(object, name)
Python标准库:内置函数hasattr(object, name) 本函数是用来判断对象object的属性(name表示)是否存在.如果属性(name表示)存在,则返回True,否则返回False ...
- python字符串——"奇葩“的内置函数
一.前言 python编程语言里的字符串与我们初期所学的c语言内的字符串还是有一定不同的,比如python字符串里的内置函数就比语言的要多得多:字符串内的书写格式也会有一点差异,例:字符串内含有引 ...
- python 类(object)的内置函数
python 类(object)的内置函数 # python 类(object)的内置函数 ### 首先 #### 以__双下划线开头的内置函数 __ #### __往往会在某些时候被自动调用,例如之 ...
- python学习日记(内置函数)
目前所有内置函数 http://www.runoob.com/python3/python3-built-in-functions.html *菜鸟教程* 内置函数分类 作用域相关globals(). ...
- Python开发基础-Day11内置函数补充、匿名函数、递归函数
内置函数补充 python divmod()函数:把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) 语法: divmod(a, b) #a.b为数字,a为除数,b ...
- Python学习笔记-Day3-python内置函数
python内置函数 1.abs 求绝对值 2.all 判断迭代器中的所有数据是否都为true 如果可迭代的数据的所有数据都为true或可迭代的数据为空,返回True.否则返回False 3.a ...
- Python装饰器、内置函数之金兰契友
装饰器:装饰器的实质就是一个闭包,而闭包又是嵌套函数的一种.所以也可以理解装饰器是一种特殊的函数.因为程序一般都遵守开放封闭原则,软件在设计初期不可能把所有情况都想到,所以一般软件都支持功能上的扩展, ...
- PYTHON语言之常用内置函数
一 写在开头本文列举了一些常用的python内置函数.完整详细的python内置函数列表请参见python文档的Built-in Functions章节. 二 python常用内置函数请注意,有关内置 ...
- python基础 (装饰器,内置函数)
https://docs.python.org/zh-cn/3.7/library/functions.html 1.闭包回顾 在学习装饰器之前,可以先复习一下什么是闭包? 在嵌套函数内部的函数可以使 ...
- python类中的内置函数
__init__():__init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的初始化.注意,这个名称的开始和结尾都是双下划线.代码例子: #!/usr/bin/p ...
随机推荐
- Express异步进化史
1.导言 在 Javascript 的世界里,异步(由于JavaScript的单线程运行,所以JavaScript中的异步是可以阻塞的)无处不在. Express 是 node 环境中非常流行的Web ...
- java代码块的理解
最近在复习java基础,在看到java代码块的时候,忽然发现自己貌似对于java代码块一无所知,于是赶紧对着一些资料实战演练了一把. 对于java代码块,不难根据名称看出其实就是一些java语句的集合 ...
- python中字符串中一些函数的用法
1..capitalize():字符串的首字母大写: 2..count():字符串中的某个字母的个数: 3..center(50,'-'):对象居中,且左右用'-'补齐: 4..encode():吧字 ...
- Java学习记录:降低耦合度
耦合度定义 耦合度(Coupling)是对模块间关联程度的度量.耦合的强弱取决与模块间接口的复杂性.调用模块的方式以及通过界面传送数据的多少. 模块间的耦合度是指模块之间的依赖关系,包括控制关系.调用 ...
- Java课设--俄罗斯方块Tetris
Java程序设计课程作业报告 作业:俄罗斯方块游戏 姓名 赵璐媛 学号 程序得分 90% 作业报告 得分10% 实验总分 100% 作业目的: 掌握基本的图形程序设计方法 掌握Java事件处理程序编写 ...
- 微软为啥让免费升Win10?
今天终于赶在截止日期之前把我的联想PC升到win10.微软这次对中国开放的持续一年的免费升级活动主要有两个原因.首先当然是"感恩Windows用户长久支持的回馈".微 ...
- Mac Intellij Debug 模式
前言:本文的核心是记录debug的使用,与具体的操作系统无关. 1.什么是Debug Debug是程序的一种运行模式.用来发掘程序的走向,以及程序在运行过程中参数的变化. 2.Debug的作用 deb ...
- Tomca软件介绍和安装
Web开发入门 软件的结构: C/S (Client - Server 客户端-服务器端) 典型应用:QQ软件 ,飞秋,红蜘蛛. 特点: 1)必须下载特定的客户端程序. 2)服务器端升级,客户端升级 ...
- 201521123011《Java程序设计》第6周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. XMind 2. 书面作业 1.clone方法 1.1 O ...
- 201521123008《Java程序设计》第五周实验总结
1.本章学习总结 2.书面作业 1.代码阅读:Child压缩包内源代码 1.1 com.parent包中Child.java文件能否编译通过?哪句会出现错误?试改正该错误.并分析输出结果. 不能.Sy ...