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

洗礼灵魂,修炼python(4)--从简单案列中揭示常用内置函数以及数据类型

 

 上一篇说到print语句,print是可以打印任何类型到屏幕上,都有哪些类型呢?

  • 整形(int)
  • 长整型(long)
  • 浮点型(float)
  • 字符型(str)
  • 布尔型(bool)

最常见的就这几种。

 

在这之前不得不先提到一个知识——变量,什么是变量,一般会这么理解:就是会变的量,它的值会改变的量,与常量(数字)对应。其实这不太准确的。

变量名就像我们现实社会的名字,把一个值赋值给一个名字时,TA会存储在内存中,称之为变量(variable)。在大多数语言中,都把这个行为称为“给变量赋值”或“把值存储的在变量中,给变量赋值就是一个等号符号(=),不过在python中,比如a=4,那么此时a的值即为4,接下来我又让a=6,此时a的值即为6。但注意赋值并不等同于数学里的等于符号,等于是’==‘,在python里是作为判断使用,并且在python里,a=4这个操作解释为给变量赋值是不太准确的,4并不是把值存储在变量中,而更像是把名字贴在值的上。这里又牵扯到python提倡的一个关键词:内存空间

 

 注意:

  • 使用变量前需要赋值
  • 变量名可以是字母,数字,下划线,但变量不能以数字开头
  • 区分大小写
  • 符号’=’是赋值的意思,左边是名字,右边是值
  • 变量的名字尽量取专业的名字,做到顾名思义
  • 变量是不可变对象(这个后面会提到,先了解是不可变对象就行)

 

以下变量名为了方便解说,暂且随意取,并且为了简单操作,我使用的python2的IDLE

一,基本知识:

1.整形(int):

整形即为整数,一个数字,没有小数的数字,比如1,2,-1,-2等

打印:

这里用到一个BIF(内置函数)——type(),这个函数可以查看类型,方便辨别是是什么类型

还有一个和type()函数一样功能的函数:isinstance(),用法如下:

那么为何type里只放了一个参数,isinstance用了两个参数,为什么呢?我怎么知道其用法呢?

这里又要用到一个BIF——help()来查看python的官方文档,如:

(由于输出的内容很长,只截了目前有用的一点),只看注明那一行,object是对象的意思,在python里一切皆对象,所以type()的用法是,你可以将任何东西放进去,然后反馈给你这个对象的类型

 同样看看isinstance()的官方帮助文档:

意思是,要给两个参数,第一个参数是需要查看类型的对象,第二个是给一个类型,然后会返回一个布尔型(请看第5点),这样就可以辨别类型了。

 

2.长整型(long):

长整型也是整形,是整形的一种,不过由于比整形更长,所以叫长整型,比如123552466L,后面带一个‘L’的即为长整型,在python3里不再有长整型,因为其实没什么鸟用,大部分时候还是直接用的整形

打印:

 

3.浮点型(float):

即带有小数的数字类型,比如1.5,1.0,1.555等

和浮点型对应的有个定点型(double),也是有小数的数字类型,基本很少用

4.字符型(str):

即被引号包围住的,比如:‘python’,’hello‘这种,可以用单引号,也可以用双引号,不影响,但不能单双混用

 

5.布尔型(bool):

布尔本是一个人的名字,这人当时定义开灯即为1,关灯即为0,好比二进制0/1,而永远都只有这两个状态,不可能处于不开灯也不关灯或者又开灯又关灯的状态,而这个原理被其他研究者拿来放到运算原理里,让这种只存在两者中的任一一种状态发扬光大。

在编程里也一样,有对,有错,不可能出现又对又错或者不对也不错的状态,所以则有True和False(首字母必须大写)这两个关键词,这两个关键词在判断里会有很大的作用。

还有一点,True和False其实分别等于1和0的:

但在编程中如果把True和False当作1和0来参与计算是很蹩脚的,这也不是一个合格的程序员能做的,记住这一点就行,在以后的编程里可以方便理解等的。

 说到这,那肯定要说一个关键语句——判断语句if

这是最基础也是最核心的东西,所有的开发语言都有这个判断语句

怎么判断呢?

if,如果的意思,有如果那就有一个相反的else:

当满足给的条件就跟着程序走一条路,当不满足就走另一条路

可以有单个if,但不可以有单个else,if...else,while...else是配套存在的(while在后面的循环里会提到)

 

 

数据类型之间是可以相互转换的,python很灵活,不会像JAVA一样,JAVA的只能数据类型短的转换到数据类型长度长的,数据类型长度长的不能转换成数据类型短(真要转换得强制转换,题外话不多说)。

看几个简单的例子你就懂了:

number=2
type(number)
number2=long(number)
type(number2)
number2
number3=str(number)
type(number3)
number3
number4=float(number)
type(number4)
number4

 

结果:

 

开始print一些东西了:

打印一个文件路径:

这里要说个概念,其实你应该注意到了,print和没使用print结果不一样,也就是为什么在交互式界面(IDLE)里直接给变量和print 变量得到的结果不太一样?因为print在打印时会自动加入一个\n换行符,这样在编程时可以下面的代码隔开,并且表达式是代表一件事,print+表达式是这件事,比如‘1+2’是指这件事,print ‘1+2’ 是做打印‘1+2’这件事,并且个人认为在python里print会根据默认编码等的默认设置来自动处理一下代码并打印到屏幕上,但是注意的是,print不会改变其对象本身任何东西,只是根据自己的机制打印到屏幕上。

注意在Windows中,路径分割符是双\\,Windows就要这样,没办法

再打印一个:

和我们预想有点出入,在这之前需要了解几个特殊符号(完整版):

\ :转义字符;换行续写(后面多行字符串会提到)
\':单引号
\":双引号
\a:发出系统响铃声
\b:退格符
\n:表示换行
\t  表示一个制表符,即一个tab键的位置
\v:纵向制表符
\r:回车符
\f:换页符
\o:八进制数代表的字符
\x:十六进制数代表的字符
\0:表示一个空字符
\\  表示\字符本身,反斜杠
# 注释字符,也可以注释掉暂时不用的代码

 

所以这里错把’\n‘和’\t‘当作特殊字符看待了,由此一个换行了,一个tab了

 

给它转义一下,用\\转义成它自身,让它没有任何特殊意义即可:

实际应用:

打印——Let's go(其本身就带有一个引号)的

一贯操作:,颜色变了,因为关键词颜色会高亮显示,这里明显颜色不对

果然,见红报错了,这报错意思是语法错误,后面在异常处理会详细解说

外层用双引号可以解决:

或者用转义符转义:

但这又有一个问题,如果路劲过长呢,还有一个一个手动的添加转义吗?

所以牵扯一个新的用法,是的,我的套路就是在实际问题中慢慢丢出要掌握的概念

r ---原始字符串

原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。

在字符串之前加上r,这个用法其实在前面说道编码问题时有用过,前面查看中国的’中‘字,使用Unicode方式就是写的【u'中'】,可以翻翻前面的。

但是还有一个问题,照原始字符串的概念来讲,我这样写没问题啊:

但是报错了,第一个刚才说了,那是因为引号字符冲突,加入r不能解决。第二个在最后加入了反斜行,还是报错了,所以解决办法是:

在原始字符串无法解决的位置单独转义:

但是还是不太方便对不对,万一以后就要这么用怎么办?还要每个单独再转义一次,有点麻烦啊

所以又有了一个终极必杀技:多行字符串,或者叫长字符串’’’’’’,三个引号

多行字符串内,不管里面是什么,都是字符串,不再发生任何意义,顾名思义,还可以注释多行

但是注意如果多行字符串在最后有反斜行的话会这样:

 

一直敲回车都没用,因为末尾的\成了换行续写的意思,或者你也可以理解为转义符\把本有的反三引号给转义了。所以一直没完,手动加入反三引号才算完

 

 

最后还有个问题,因为print后面的字符串,字符串里面有什么就打印什么,假如,我不想这样,我想执行字符串里的代码并得到一个结果呢?

比如:

我想得到这个结果怎么办?

有两个内置函数可以解决这个问题,exec()和eval()

但是这两个函数基本很少用的,记住有这么个用法就行

 

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

相关文章:

  • c语言数据类型(一)
  • VS中 Duplicate items are not supported by the Resources parameter 解决方法
  • SaaS与本地部署该如何闯出属于自己的路?
  • 记录下sparkStream的做法(scala)
  • JavaScript总结1
  • EXTJS学习系列提高篇:第二十三篇(转载)作者殷良胜,ext2.2打造全新功能grid系列--显示列表第二篇...
  • caffe源码 全连接层
  • [Spark][Python][RDD][DataFrame]从 RDD 构造 DataFrame 例子
  • 使用SQLite做本地数据缓存的思考
  • 与Brian Goetz聊Java的模式匹配
  • 感叹人生
  • Flash Builder 4.7 正式版下载、破解
  • 苹果开发者账号的区别,发布方式In-House和Ad Hoc区别
  • Safari on Windows已可良好支持中文!
  • chrome 图片助手下载
  • 【Leetcode】104. 二叉树的最大深度
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Debian下无root权限使用Python访问Oracle
  • Git同步原始仓库到Fork仓库中
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • JDK9: 集成 Jshell 和 Maven 项目.
  • JS题目及答案整理
  • MySQL主从复制读写分离及奇怪的问题
  • Sublime text 3 3103 注册码
  • 阿里云前端周刊 - 第 26 期
  • 从输入URL到页面加载发生了什么
  • 利用jquery编写加法运算验证码
  • 前端学习笔记之观察者模式
  • 让你成为前端,后端或全栈开发程序员的进阶指南,一门学到老的技术
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 吴恩达Deep Learning课程练习题参考答案——R语言版
  • 一个项目push到多个远程Git仓库
  • 用jquery写贪吃蛇
  • 转载:[译] 内容加速黑科技趣谈
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • # 透过事物看本质的能力怎么培养?
  • #LLM入门|Prompt#3.3_存储_Memory
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • $.each()与$(selector).each()
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (vue)页面文件上传获取:action地址
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (强烈推荐)移动端音视频从零到上手(上)
  • (四)Linux Shell编程——输入输出重定向
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (转载)PyTorch代码规范最佳实践和样式指南
  • ***利用Ms05002溢出找“肉鸡
  • **PHP二维数组遍历时同时赋值
  • .Net Core与存储过程(一)
  • .net Stream篇(六)
  • .NET 回调、接口回调、 委托
  • .net6+aspose.words导出word并转pdf