Python语言最常用的对象是变量和常量,常量的值是字面意思,其值是不可变的,变量的值是可变的,例如,123,"上海"是常量,而a=1,a=2,其中a是变量名。内置的核心数据类型有:数字、字符串、列表、字典、元组、文件、集合、None和布尔类型。变量的数据类型是由初始化的常量来指定的,其类型根据赋值是可变的,这就是Python的动态类型模型。

Python语言的特点是:

  • Python是强类型的语言,只能对一个对象进行适合该类型的操作。
  • Python是动态类型的,自动检测到变量的类型。
  • Python语言是大小写敏感的,变量a和变量A是不同的变量名,'abc' 和'Abc'是不同的字符串。

一,变量的动态类型

在Python中,类型是在运行过程中动态决定的,而不是通过代码声明的,这意味着没有必要事先声明变量。

当在Python中运行赋值语句:a = 3 时,Python自动把a作为整数对象来使用。变量名不和类型关联,变量名只不过是对象的一个引用而已,数据类型是和对象相关联的。当变量出现在表达式中时,它会马上被当前引用的对象所代替。

总之,变量在赋值的时候创建,可以引用任何数据类型的对象,并且必须在初始化之后才能引用。

二,数字类型

Python的数字类型包括:整数、浮点数和复数

  • 整数:在Python3.0中支持无穷精度的整数,可以通过内置函数int(n)来创建整数,整数是精确的,
  • 浮点数:类似于C语言中的双精度,可以通过内置函数float(n)来创建浮点数,浮点数可能存在误差,
  • 复数:虚部以j或J结尾,可以通过内置函数complex(real,image)来创建复数
  • 二进制,八进制和十六进制:可以通过内置函数bin(n),oct(n),hex(n)来分别创建二进制数,八进制数和十六进制数

1,基数为2,8和16的整数

二进制,八进制和十六进制只能表示整数:

  • 二进制(binary):以0b或0B开头,后面接0-1的数字
  • 八进制(octal):以0o或0O开头,后面接0-7的数字,
  • 十六进制(hex ):以0x或0X开头,后面接十六进制的数字0-9和A-F,字符编写成大写或小写都行

各个进制的常量表示:

  • 常量0o10 是指十进制的8,使用oct(8)来表示
  • 常量0b10是指十进制的2,使用bin(2)来表示
  • 常量ox10是指十进制的16,使用hex(16)来表示

2,除法

Floor除法是指:把结果向小舍入到最近的整数,例如,小于2.5最小的整数是2,小于-2.5最小的整数是-3

>>> import math
>>> math.floor(2.5) >>> math.floor(-2.5)
-

在Python 2.6 版本中:

/ 表示传统除法:如果两个操作数都是整数类型,执行截断的整数除法,返回的结果是整数;如果任意一个操作数是浮点数,则返回小数。

// 表示Floor除法:总是截断余数,当两个操作数都是整数时,结果是整数(n);如果有任何一个操作数是浮点类型,则返回一个浮点数(n.0)。

在Python 3.0 版本中:

/ 表示真除法:不管操作数的类型,都返回包含小数的结果;

// 表示Floor除法:对于整数执行截断除法,对于浮点数执行浮点除法。

例如,在Python 3.0 版本中:

>>> //2.0
2.0
>>> //-2.0
-3.0

3,位操作

把整数当作二进制位串来对待,使用位操作符进行位移操作

>>> x=1  #0b0001
>>> x<< >>> x| >>> x&

4,内置的数学工具

导入内置的math模块,常用的数学工具:

  • pow(a,b),求a的b次幂
  • round(seed):求随机数
  • math.sqrt(x),求x的平方根
  • math.floor(x):向下取最小的整数
  • math.trunc(x):截断小数点,保留整数

5,精确小数

精确小数是有固定精度的浮点数,通常情况下,浮点数缺乏精确性,这是因为用来存储数值的空间有限,例如,下面的计算应该得到0,但是结果却没有等于0,而是结果接近于0:

>>> 0.1+0.1+0.1-0.3
5.551115123125783e-17

不过使用精确小数,结果能够修正:

>>> from decimal import Decimal
>>> Decimal('0.1') + Decimal('0.1') - Decimal('0.2')
Decimal('0.0')

设置精确小数对象的精度:

decimal.getcontext().prec = 

6,分数

分数是指带有分子和分母的表达式,分数 1/2的表示方法是:

>>> from fractions import Fraction
>>> x=Fraction(,)

三,布尔类型

bool数据类型的值是:True和False,显示的是True和False,其行为跟整数1和0是相同的。

布尔类型常用于条件表达式中,用于控制循环结构和分支结构。

对于bool值可以进行逻辑运算(and,or,not)。

1,Python的真值规则

  • 数字0、0.0、空字符串、空值None、空对象(空的元组,空的集合,空的列表)都是False;
  • 其他值都是True

2,布尔and和or运算符返回对象,而不是值True或False

and 和 or运算符总会返回对象,不是运算符左侧的对象,就是右侧的对象。

对于or运算符而言,Python会由左至右求操作对象,然后返回第一个为真的操作对象。or运算符是短路计算,Python会在其找到第一个True的操作数就停止。如果没有遇到True的对象,那么返回最后一个假的对象。

>>> 1 or []
1
>>> [] or 1
1
>>> [] or {}
{}

对于and运算符而言,Python会由左至右求操作对象,然后返回第一个为假的操作对象。and运算符是短路计算,Python会在其找到第一个False的操作数就停止。如果没有遇到False的对象,那么返回最后一个True的对象。

>>> 1 and 2 and 3
3
>>> [] and {}
[]
>>> 1 and []
[]

四,空值

空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。在真值测试中,表现为False。

五,操作符

特殊的操作符

  • =  :赋值
  • ==  :相等
  • !=  :不等
  • is   :检查对象的同一性,如果两个变量名指向同一个对象,返回True

1,逻辑运算符

  • and  :逻辑与
  • or  :逻辑或
  • not  :逻辑非

2,逻辑表达式

  • >,<,>=,<=  :大于,小于,大于或等于,小于或等于
  • ==:相等
  • !=:不等

3,算术操作符

  • +  :加
  • -  :减
  • *  :乘
  • **  :幂乘,例如,a**b,是指a的b次方
  • /  :除,在Python3.0中,是真除法,无论任何类型都会保持小数部分
  • //  :Floor除法,省略掉结果的小数部分
  • %  :求模

4,位运算符

  • &  :按位与
  • |  :按位或
  • ^  :异或

5,移位符

  • <<  :向左移位
  • >>  :向右移位

参考文档:

Python 学习 第一篇:数据类型(数字,集合,布尔类型,操作符)的更多相关文章

  1. python基础——数字&集合&布尔类型

    Python的核心数据类型 内置对象 对象类型 例子 数字 123,3.1415,3+4j,Decimal(小数),Fraction(分数) 字符串 'dodo',"guido's" ...

  2. Python学习第一篇

    好久没有来博客园了,今天开始写自己学习Python和Hadoop的学习笔记吧.今天写第一篇,Python学习,其他的环境部署都不说了,可以参考其他的博客. 今天根据MachineLearning里面的 ...

  3. python学习笔记:数据类型——数字、字符串、元祖、字典

    计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同的数据,需要定义不同的数 ...

  4. 75、python学习第一篇

    1.sys包下边的argv方法,从控制台获取数据 ''' Created on 2017年4月8日 @author: weizhen ''' import sys One = [" * &q ...

  5. Python学习笔记 - day3 - 数据类型及运算符

    Python的数据类型 计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...

  6. LINQ to XML LINQ学习第一篇

    LINQ to XML LINQ学习第一篇 1.LINQ to XML类 以下的代码演示了如何使用LINQ to XML来快速创建一个xml: public static void CreateDoc ...

  7. python学习第一讲,python简介

    目录 python学习第一讲,python简介 一丶python简介 1.解释型语言与编译型语言 2.python的特点 3.python的优缺点 二丶第一个python程序 1.python源程序概 ...

  8. Python人工智能第一篇:语音合成和语音识别

    Python人工智能第一篇:语音合成和语音识别 ​ 此篇是人工智能应用的重点,只用现成的技术不做底层算法,也是让初级程序员快速进入人工智能行业的捷径.目前市面上主流的AI技术提供公司有很多,比如百度, ...

  9. 从.Net到Java学习第一篇——开篇

    以前我常说,公司用什么技术我就学什么.可是对于java,我曾经一度以为“学java是不可能的,这辈子不可能学java的.”结果,一遇到公司转java,我就不得不跑路了,于是乎,回头一看N家公司交过社保 ...

随机推荐

  1. weblogic系列漏洞整理 -- 1. weblogic安装

    目录 0. 概述 1. 下载安装Java环境 2. 下载安装weblogic 安装 部署domain域 进入weblogic 3. 排错 如果出现如下错误 0. 概述 WebLogic是美国Oracl ...

  2. MIME 内容类型

    MIME内容类型 https://www.iana.org/assignments/media-types/media-types.xhtml 媒体在各浏览器的支持情况: https://develo ...

  3. EntityFramework Code-First 简易教程(九)-------一对多

    一对多(One-to-Many)关系: 下面,我们来介绍Code-First的一对多关系,比如,在一个Standard(年级)类中包含多个Student类. 如果想了解更多关于one-to-one,o ...

  4. Calling Matlab function from python: “initializer must be a rectangular nested sequence”

    I am writing a python script from which I hope to call the Matlab anovan function. I have attempted ...

  5. 戴尔dell服务器硬件故障SMTP邮件报警idrac配置

    上次公司有台戴尔的服务器硬盘故障了却没有及时发现,后面就研究了一下看到戴尔的idrac有硬件SMTP报警功能 然后自己折腾了一下,一开始配置不成功,后面问了一下戴尔官方的最好自己再摸索了一下解决了,做 ...

  6. django中的中间件机制和执行顺序

    这片文章将讨论下面内容: 1.什么是middleware 2.什么时候使用middleware 3.我们写middleware必须要记住的东西 4.写一些middlewares来理解中间件的工作过程和 ...

  7. Nginx SSL TLS部署最佳实践

    本文介绍nginx在提供HTTPS时使用的一些其他配置选项. 虽然这些功能有助于优化nginx的SSL和TLS,但这不是一个完整对加固nginx的介绍. 确保您的服务器安全的最佳方法是不仅需要正确的配 ...

  8. D - C Looooops POJ - 2115 欧几里德拓展

    题意:就是看看for(; ;)多久停止. 最让我蛋疼的是1L和1LL的区别!让我足足wa了12发! 1L 是long类型的, 1LL为long long类型的! 思路: 这就是欧几里德扩展的标准式子了 ...

  9. 搭建OpenResty(Nginx+Lua)

    这篇文章是一个多月前写的,当时之所以搭建这个是为了最大程度上发挥Nginx的高并发效率(主要是结合lua脚本),参考的话,主要参考张开涛先生写的跟开涛学Nginx+lua系列文章,地址为:https: ...

  10. 动态分析Android程序

    快速定位程序关键点 代码注入法 插入log函数,输出调试信息. const-string v0,"TAG" const-string v1,"info" inv ...