洗礼灵魂,修炼python(5)--python操作符,内置函数
2018-03-02 09:36
579 查看
前面提到了BIF(内置函数)这个概念,什么是内置函数,就是python已经定义好的函数,不需要人为再自己定义,直接拿来就可以用的函数,那么都有哪些BIF呢?可以在交互式界面(IDLE)输入这段代码,注意是两边都是双下划线
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929144451747-46838008.png)
就看这些就能很明显的看出python3和python2还是有很多区别的,想看哪个BIF的用法就直接help()它看官方文档就行,这里要说的是,python官方的代码其实很少的语法,基本都是很简单的英语,要学编程不可能不学英文的,怎么也要掌握该开发语言的常用术语吧,而且官方文档比其他任何一篇解析来的更正式更准确,要学会去看官方文档。前一章结尾处你应该看到了运算了,是的,任何一种开发语言都是可以运算,你要把它当计算器用我也没办法。说到这,自然就牵扯到操作符了:1.算术操作符+,-,*(注意是星号,不是字母x),这是数学里都学过的,就不多说了//,/,% 这几个都是和除法相关的,但代表的都是不同的。先说/,在python2和python3有不同的结果:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929145802137-2099852156.png)
上面是python2,下面是python3,/默认在python2里是正常除,但舍去小数部分,如果想达到python3里的结果,也就是该等于多少就等于多少的话,需要后面的高级语法了:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929150008528-1773637657.png)
这个【from __future__ import division】语法暂且不说,后面在模块章节会提到,你知道有这个用法就行你是不是觉得,哇,好坑啊,一个简单的除法运算,还不能得到一个本来该有的结果,是的,python官方得知后,把这个也改进到python3中了,该是多少就是多少// 取模运算,或者叫取整预算
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929150700028-756448357.png)
% 取余数运算
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929150743856-1306464448.png)
这个取余运算在后面会发挥很大的作用,好好体会 2.比较符:> 大于>= 大于等于< 小于<= 小于等于== 等于 (注意这里的== 不等同于is)!= 不等于 (<> 也表示不等于)= 表示赋值 (x=y=z 链式赋值)3.逻辑操作符:in 属于or 或(注意与其他语言区别,这里的or不等同于|,|有其他意义)not in 不属于is 等同于 前面三个在高中数学里学集合的时候都学过的,不用多说,后面运用的时候你会从中体会主要是 is ,它是判断是不是自身的用法,比如:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929151139387-1432372503.png)
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929151557028-1793681806.png)
这里的id()是内置函数,可以查看对象的内存空间里的id,由此和is配套使用可以真的判断其不是就是他自己,不过这里都一样的,好像没什么问题对不?因为结果一样,你是不是就会觉得==就是is?并不是的,接着看
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929151759231-187883728.png)
这里又用了一个后面才提到的知识,列表,很抱歉,因为知识点就是这么交叉的,为了解释当前的==不等同于is,不得不提到列表,后面会详解,姑且不说这个问题看到没,此时再用 a is b返回的是False了,但是id还是相同的。所以 == 并不等同于 is 记住这一点就行4.** 幂运算
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929152438965-524887113.png)
5.正负号:+,- (此时并不是算术操作符里的加减运算) 6.按位运算&:按位与运算,按位是指将一个数字转换为二进制,然后这些二进制按位进行与运算,即类似and运算例:>>> a=7&18 #7二进制为111 转换为二进制: 00000111>>> a #18 为10010 转换为二进制: 00010010,两个作与运算,2 得: 0000010,为2
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929164034465-1118545211.png)
|:按为或运算,按位是指将一个数字转换为二进制,然后这些二进制按位进行或运算,即类似or运算 #注意,这里的“|”不等同于“or”(注意与c语言区别)例:>>> b=7|18 #7二进制为111,转换为二进制:00000111>>> b #18 为10010,转换为二进制: 0001001023 # 得 00010111,为23例:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929164250403-174972274.png)
^:按位异或运算,按位是指将一个数字转换为二进制,然后这些二进制按位进行或运算,不同则是1,相同则是0例:>>> c=7^18 #7二进制为111,00000111>>> c #18为10010, 0001001021 # 得00010101,为21 ~:按位翻转,即~x=-(x+1)例:>>> a=~18 ~18=-(18+1)>>> a-19 <<:按位左移,比如18即为00010010 左移一个单位 00100100,即36,左移一个单位相当于乘以2,左移N个单位则为乘2的N次幂例;
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929164440450-655267980.png)
>>:按位右移,比如18即为00010010 右移一个单位 00001001,即9,左移一个单位相当于除以2,左移N个单位则为除以2的N次幂例:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929164536622-960059580.png)
你现在应该有疑问了,如果这些操作符混合在一起,怎么计算呢?谁先开始计算,谁最后计算?所以又有了运算优先级:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929152831653-902813540.png)
是的这是全部的运算优先级,你应该会想,我靠,我学习个编程语言,优先级规则这么多,难道我还要背吗?不是的,基本不用靠背,你在写代码维护代码的同时你就会自然的记住,而且不用全部记住,通常用的就这些:优先级从左到右高到低:幂运算(**),正负号(+,-),算术操作符(*,/,//,%,+,-),比较操作符(<,<=,>,>=,==,!=),逻辑操作符(not,and,or,is)其实这些优先级基本和数学里的优先级一样的。唯一要注意的是:其中,幂运算左边正负号优先级比右边优先级低:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929153316653-805917834.png)
至此,真正的前期概念和规则你已经掌握了,后面将进入真正的洗礼之路了。
dir(__builtins__)则可以查看不同python版本都有哪些BIF
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929144451747-46838008.png)
就看这些就能很明显的看出python3和python2还是有很多区别的,想看哪个BIF的用法就直接help()它看官方文档就行,这里要说的是,python官方的代码其实很少的语法,基本都是很简单的英语,要学编程不可能不学英文的,怎么也要掌握该开发语言的常用术语吧,而且官方文档比其他任何一篇解析来的更正式更准确,要学会去看官方文档。前一章结尾处你应该看到了运算了,是的,任何一种开发语言都是可以运算,你要把它当计算器用我也没办法。说到这,自然就牵扯到操作符了:1.算术操作符+,-,*(注意是星号,不是字母x),这是数学里都学过的,就不多说了//,/,% 这几个都是和除法相关的,但代表的都是不同的。先说/,在python2和python3有不同的结果:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929145802137-2099852156.png)
上面是python2,下面是python3,/默认在python2里是正常除,但舍去小数部分,如果想达到python3里的结果,也就是该等于多少就等于多少的话,需要后面的高级语法了:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929150008528-1773637657.png)
这个【from __future__ import division】语法暂且不说,后面在模块章节会提到,你知道有这个用法就行你是不是觉得,哇,好坑啊,一个简单的除法运算,还不能得到一个本来该有的结果,是的,python官方得知后,把这个也改进到python3中了,该是多少就是多少// 取模运算,或者叫取整预算
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929150700028-756448357.png)
% 取余数运算
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929150743856-1306464448.png)
这个取余运算在后面会发挥很大的作用,好好体会 2.比较符:> 大于>= 大于等于< 小于<= 小于等于== 等于 (注意这里的== 不等同于is)!= 不等于 (<> 也表示不等于)= 表示赋值 (x=y=z 链式赋值)3.逻辑操作符:in 属于or 或(注意与其他语言区别,这里的or不等同于|,|有其他意义)not in 不属于is 等同于 前面三个在高中数学里学集合的时候都学过的,不用多说,后面运用的时候你会从中体会主要是 is ,它是判断是不是自身的用法,比如:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929151139387-1432372503.png)
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929151557028-1793681806.png)
这里的id()是内置函数,可以查看对象的内存空间里的id,由此和is配套使用可以真的判断其不是就是他自己,不过这里都一样的,好像没什么问题对不?因为结果一样,你是不是就会觉得==就是is?并不是的,接着看
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929151759231-187883728.png)
这里又用了一个后面才提到的知识,列表,很抱歉,因为知识点就是这么交叉的,为了解释当前的==不等同于is,不得不提到列表,后面会详解,姑且不说这个问题看到没,此时再用 a is b返回的是False了,但是id还是相同的。所以 == 并不等同于 is 记住这一点就行4.** 幂运算
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929152438965-524887113.png)
5.正负号:+,- (此时并不是算术操作符里的加减运算) 6.按位运算&:按位与运算,按位是指将一个数字转换为二进制,然后这些二进制按位进行与运算,即类似and运算例:>>> a=7&18 #7二进制为111 转换为二进制: 00000111>>> a #18 为10010 转换为二进制: 00010010,两个作与运算,2 得: 0000010,为2
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929164034465-1118545211.png)
|:按为或运算,按位是指将一个数字转换为二进制,然后这些二进制按位进行或运算,即类似or运算 #注意,这里的“|”不等同于“or”(注意与c语言区别)例:>>> b=7|18 #7二进制为111,转换为二进制:00000111>>> b #18 为10010,转换为二进制: 0001001023 # 得 00010111,为23例:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929164250403-174972274.png)
^:按位异或运算,按位是指将一个数字转换为二进制,然后这些二进制按位进行或运算,不同则是1,相同则是0例:>>> c=7^18 #7二进制为111,00000111>>> c #18为10010, 0001001021 # 得00010101,为21 ~:按位翻转,即~x=-(x+1)例:>>> a=~18 ~18=-(18+1)>>> a-19 <<:按位左移,比如18即为00010010 左移一个单位 00100100,即36,左移一个单位相当于乘以2,左移N个单位则为乘2的N次幂例;
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929164440450-655267980.png)
>>:按位右移,比如18即为00010010 右移一个单位 00001001,即9,左移一个单位相当于除以2,左移N个单位则为除以2的N次幂例:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929164536622-960059580.png)
你现在应该有疑问了,如果这些操作符混合在一起,怎么计算呢?谁先开始计算,谁最后计算?所以又有了运算优先级:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929152831653-902813540.png)
是的这是全部的运算优先级,你应该会想,我靠,我学习个编程语言,优先级规则这么多,难道我还要背吗?不是的,基本不用靠背,你在写代码维护代码的同时你就会自然的记住,而且不用全部记住,通常用的就这些:优先级从左到右高到低:幂运算(**),正负号(+,-),算术操作符(*,/,//,%,+,-),比较操作符(<,<=,>,>=,==,!=),逻辑操作符(not,and,or,is)其实这些优先级基本和数学里的优先级一样的。唯一要注意的是:其中,幂运算左边正负号优先级比右边优先级低:
![](http://images2017.cnblogs.com/blog/1249183/201709/1249183-20170929153316653-805917834.png)
至此,真正的前期概念和规则你已经掌握了,后面将进入真正的洗礼之路了。
相关文章推荐
- 洗礼灵魂,修炼python(37)--面向对象编程(7)—了解魔法方法
- 洗礼灵魂,修炼python(39)--面向对象编程(9)—魔法方法表
- 洗礼灵魂,修炼python(40)--面向对象编程(10)—定制魔法方法+time模块
- 洗礼灵魂,修炼python(15)--列表进阶话题—>列表解析/列表生成器
- 洗礼灵魂,修炼python(26)--编程核心之“递归”
- 洗礼灵魂,修炼python(17)--跨平台操作三剑客—os,os.path.sys模块
- 洗礼灵魂,修炼python(27)--异常处理(1)—>了解异常
- 洗礼灵魂,修炼python(18)--温故加知新
- 洗礼灵魂,修炼python(1)--python简介
- 洗礼灵魂,修炼python(29)--装饰器(1)—>利用经典案例解析装饰器概念
- 洗礼灵魂,修炼python(19)--文件I/O操作,linecache,fileinput模块
- 洗礼灵魂,修炼python(30)--装饰器(2)—>装饰器总结+进阶使用
- 洗礼灵魂,修炼python(20)--自定义函数(1)—基础概念
- 洗礼灵魂,修炼python(6)--活起来的代码+列表
- 洗礼灵魂,修炼python(31)--面向对象编程(1)—面向对象,对象,类的了解
- 洗礼灵魂,修炼python(7)--元组,集合,不可变集合
- 洗礼灵魂,修炼python(9)--灵性的字符串
- 洗礼灵魂,修炼python(22)--自定义函数(3)—函数作用域,闭包
- 洗礼灵魂,修炼python(34)--面向对象编程(4)—继承
- 洗礼灵魂,修炼python(32)--面向对象编程(2)—进一步认识类