当前位置: 首页 > news >正文

洗礼灵魂,修炼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)

其实这些优先级基本和数学里的优先级一样的。

唯一要注意的是:

其中,幂运算左边正负号优先级比右边优先级低:

 

至此,真正的前期概念和规则你已经掌握了,后面将进入真正的洗礼之路了。

转载于:https://www.cnblogs.com/yangva/p/7611294.html

相关文章:

  • System Error. Code:1722. RPC服务器不可用解决办法
  • Spring Boot开启的2种方式
  • AnkhSVN 1.0 RC3 released on August 25, 2006
  • 爆零专场
  • 2017.10.2解题报告
  • 5、ASP.NET MVC入门到精通——NHibernate代码映射
  • VLAN及vlan路由
  • 产品经理也要云转型 需掌握这10个技能
  • Oracle权限管理
  • TCP/IP编程实现远程文件传输
  • xshell中复制快捷键的设置
  • MySQL之内联接、左联接、右联接、交叉联接
  • Android自定义Toast
  • [C#]获取指定文件夹下的所有文件名(递归)
  • .Net下的签名与混淆
  • [js高手之路]搞清楚面向对象,必须要理解对象在创建过程中的内存表示
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • java多线程
  • Leetcode 27 Remove Element
  • MySQL用户中的%到底包不包括localhost?
  • node入门
  • PHP 的 SAPI 是个什么东西
  • SpringBoot几种定时任务的实现方式
  • springMvc学习笔记(2)
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • vue--为什么data属性必须是一个函数
  • vue中实现单选
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 产品三维模型在线预览
  • 动态规划入门(以爬楼梯为例)
  • 汉诺塔算法
  • 前端临床手札——文件上传
  • 前端设计模式
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 鱼骨图 - 如何绘制?
  • ​flutter 代码混淆
  • ​批处理文件中的errorlevel用法
  • "无招胜有招"nbsp;史上最全的互…
  • #DBA杂记1
  • #HarmonyOS:Web组件的使用
  • #Linux杂记--将Python3的源码编译为.so文件方法与Linux环境下的交叉编译方法
  • #LLM入门|Prompt#1.8_聊天机器人_Chatbot
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (过滤器)Filter和(监听器)listener
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (一)插入排序
  • (转)用.Net的File控件上传文件的解决方案
  • ./configure,make,make install的作用(转)
  • .net core 控制台应用程序读取配置文件app.config
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法