变量和数据类型

一、什么是变量,常量

思考:程序执行指的是什么?

对数据进行存储处理和计算,最终获得结果,这是程序执行的本质。

变量的概念和在数学中的变量的概念一样的,只是在计算机程序中,变量不仅可以是数字,还可以是任意数据类型。

例如:一个仓库存有霍亮和霍晶两人的金银财宝,共10吨,已知霍晶的财宝是霍亮的4倍,问霍晶霍亮分别有多少财宝?

解: 设霍亮的财宝为X,则霍晶的就是4X

X+4X =10

X=2

变量的本质就是一小块内存,在程序运行过程中用于存储数据,并且数据可以改变

有些书籍把变量解释为一个容器

常量:不会发生改变的

二、变量的声明

2.1 变量的声明语法

在 python 中变量的声明与其他语言有显著的差别。

如果是其他语言比如 java 中,则需要先声明变量,然后赋值。

int a = 10;   //Java 中的声明变量和赋值

在 python 中,使用变量一定要先给变量赋值,不需要专门去声明。如果是第一次赋值则会在内存中创建一个对象,如果不是第一次则会使用已经创建过的。

变量名 = 数值

变量名要见名知意,建议使用英文单词(而不是没有意义的字母),如果多个英文单词使用下划线链接,比如:student_name = "石鹏涛"

a = 10    # 第一次使用 a,所以会自动创建变量a,并把它的赋值为10
print(a) # 10
a = 20 # 第二次使用 a, 所以不会再创建变量 a,而是使用前面创建的变量 a,然后赋值为20
print(a) # 20

所以,python 中各种代码相比其他语言就是精简和优雅 爽


python 的同一个变量,可以先存储数字,然后也可以再更改为其他类型。这是弱类型语言的典型特征。

a = 10    # 赋值为数字
print(a)
a = 'abc你好' #赋值为字符串
print(a)

2.2 变量的命名

  1. 变量名必须是数字、字母(ascii 和 uncode 字符都可以,但是尽量避免使用中文)、下划线_组成
  2. 不能数字开头
  3. 如果有多个单词组成,建议每个字母都用小写字母,且不同的单词用下划线连接

合法:abca1_hellomy_girl

不合法:1a$a

三、变量的内存模型

​ 虽然 python 的变量使用起来非常简单,但是理解变量的内存模型也是非常重要的。

看下面的代码:

a = "abc"
print(a)
b = a
b = "xyz"
print(a) # abc
print(b) # xyz
  • 第1行代码做了3件事情:

    1. 在内存中创建了一个字符串"abc"
    2. 在内容创建了一个变量,变量名为a
    3. 字符串"abc"在内存中的地址赋值给变量 a。即可以理解为变量 a 指向了字符串 "abc"

第3行代码做了2件事情:

  1. 创建一个变量,变量名是 b
  2. 把 变量 a 的值赋给变量 b。因为 a 中是存储的字符串 "abc" 的内存地址,则变量 b 存储的也是字符串 "abc" 的内存地址。即变量 b 也指向了字符串 "abc"

第5行代码做了2件事情:

  1. 在内存中创建了一个字符串"xyz"
  2. 字符串"xyz"在内存中的地址赋值给变量 b。则 b 中的值被更换为字符串 "xyz" 的内存地址, b 与 字符串 "abc" 则再无关系。

计算机要处理的数据各种各样,每种数据的类型是不一样的,比如有的是数字,有的是字符串等。所以 python 把数据分成了多种类型。

但是有一点要注意:由于 python 是弱类型语言,变量存储的值的类型并不固定。所以 不应该说变量的类型,而应该说变量的值的类型

四、什么是字面常量?

一个字面常量(Literal Constants) 的例子是诸如51.23 这样的数字或 你好abc 这样的文本。

这么称呼这一变量是因为它们是 字面上的 --你用的就是它字面意义上的值或是内容。数 字 2 总是表示它本身而非其他含义--它是一个 常量,因为它的值不能被改变。

因此,所有的这些都被称作字面常量。

  • int(整数)
  • float(浮点数)
  • str(字符串)
  • bool(布尔)

五、数据类型

5.1 整数(int)

python 可以精确的处理任意长度的整数(也包括负整数)。

a = 200000000000000000000000000000000000000000000000000000
print(a)

在计算机中经常用到2进制8进制10进制16进制 类型的数据,python也支持这样的字面量数据。

a = 100     # 十进制的100.
print(a)
b = 0b100 # 用 0b 开头表示二进制数据
print(b)
c = 0o100 # 用 0o 开头表示八进制数据
print(c)
d = 0x100 # 用 0x 开头表示十六进制的数据
print(d)

输出结果总是使用10进制形式:

100
4
64
256

5.2 浮点数(float)

​ 计算机中的浮点数就是我们数学中的小数。

​ 浮点数可以用数学写法,如1.233.14-9.01,等等。但是对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e80.000012可以写成1.2e-5等等。

注意:

​ 整数和浮点数在计算机中的存储方式是不一样的。整数永远可以精确的表示,而大部分的浮点数是近似表示。

5.3 字符串(str)

​ 在 python 中,用 一对双引号 "" 或 一对单引号 '' 括起来的单个或多个字符就是字符串 。

​ 有些字符没有办法直接写在 单引号或者双引号中,比如回车、换行、制表符等。这时候需要借助转义字符来。

\ 是转义字符。(几乎在所有的编程语言中都是它)

转义字符串 含义
\n 换行
' 单引号
" 双引号
\ \
\t 制表符
\r 回车
\b 退格(back)

如果不想让字符串中的转义字符起作用,则可以在字符串前面添加 r 来表示. 这样的字符串我们称之为原始字符串(raw string)

a = r'abc\nx\tyz'
print(a)
print("------")
b = 'abc\nx\tyz'
print(b)

如果一个字符串内有多行数据,又不想写过多的 \n 则可以使用 3 对单引号或双引号来表示。

a = '''hello
world
哈哈哈哈'''
print(a) b = """hello
world
哈哈哈哈
"""
print(b)

在 python 中的字符串是不可变的。

​ 这意味着一旦你创造了一串字符串,你就不能再改变它。尽管这看起来像是一件坏事,但实 际上并非如此。

5.4 布尔值(bool)

​ 布尔值表示一种逻辑值。在 python 中只有 2 个字面量布尔值 TrueFalse

​ 可以使用字面量布尔值,也可以通过一定的计算得到布尔值。

a = True
b = False
c = 3 > 4
print(a)
print(b)
print(c)

注意:bool 是int的子类,继承自int

六、测试变量或常量的数据类型

python 提供了两个内置函数来判断数据的类型

6.1方式1: type(变量或常量)

print(type(True))
a = 3
print(type(a))

如果想得到bool型的结果,则可以使用下面的方式

print(type(True) is bool)
a = 3
print(type(a) is int)
print(type(a) is float)

6.2方式2:isinstance(变量或常量, 类型)

print(isinstance(3, int))
a = True
print(isinstance(a, str))
b = 2.2
print(isinstance(b, float))

isinstance()还可以针对一个数据,同时判断多种数据类型,只要有一个满足就返回True

print(isinstance(3, (float, int, str)))    # True

Python第二章-变量和数据类型的更多相关文章

  1. Java 第二章 变量、数据类型和运算符

    第二章      变量.数据类型和运算符 什么是变量: 变量代表一块内存区域,变量类型不一样,这一块内存的大小也不一样. #在编程语言里面,你可以通过定义变量,向内存里添加数据或者修改内存已有的数据. ...

  2. 简学Python第二章__巧学数据结构文件操作

    #cnblogs_post_body h2 { background: linear-gradient(to bottom, #18c0ff 0%,#0c7eff 100%); color: #fff ...

  3. Java 第二章 变量

    第二章 变量 变量称为:是计算机语言中能储存计算机结果或能表示值抽象概念 .变量可以通过变量名访问 int money ; //变量 money=1000; //赋值 int money=1000: ...

  4. C++ Primer 笔记(2)第二章 变量与基本类型

    第二章 变量与基本类型 1.基本内置类型包括算术类型和空类型,算术类型分为两类:整型(包括字符和布尔类型)和浮点型: 2.布尔类型(bool)的取值是真(true)或者假(false): 3.字面值常 ...

  5. Python第二天 变量 运算符与表达式 input()与raw_input()区别 字符编码 python转义符 字符串格式化 format函数字符串格式化 帮助

    Python第二天  变量  运算符与表达式  input()与raw_input()区别  字符编码  python转义符  字符串格式化  format函数字符串格式化  帮助 目录 Pychar ...

  6. 第二章 深入 C# 数据类型

    第二章 深入 C# 数据类型 1.封装又称信息隐藏,是指利用抽象数据类型将数据和数据的操作结合在一起,使其构成一个不可分割的独立实体,尽可能的隐藏内部的细节,只保留一些对外接口,使之于外部发生联系. ...

  7. 《C++ Primer》读书笔记—第二章 变量和基本类型

    声明: 文中内容收集整理自<C++ Primer 中文版 (第5版)>,版权归原书所有. 学习一门程序设计语言最好的方法就是练习编程. 1.8比特的char类型计算机表示的实际范围是-12 ...

  8. day03-执行python方式、变量及数据类型简介

    目录 执行Python程序的两种方式 1. 第一种:交互式 2. 第二种:命令式 3. Python执行程序的三个阶段 变量 变量 什么是变量 Python中的变量 变量名的命名规范 内存管理 定义变 ...

  9. python中的变量和数据类型

    一.变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字. 二.变量命名规则: 1. 变量名由字母.数字.下划线组成 2. 数字不能开头 3. 不可 ...

随机推荐

  1. JasperReport框架使用教程(附带常见空白页问题说明)

    概述与安装使用 1. PDF报表概述 概述 ​ 在企业级应用开发中,报表生成.报表打印下载是其重要的一个环节.在之前的课程中我们已经学习了报表中比较重要的一种:Excel报表.其实除了Excel报表之 ...

  2. 自制一个可编辑QueryString的类URLModifier

    有些情况下,需要 新增/删除/替换 url中的部分Querystring中的参数,而.net自带的Uri类只能解析,不能编辑,,并且如果是Relative类型的链接,转成Uri类型之后,很多参数又不能 ...

  3. Mariadb 修改root密码及跳过授权方式启动数据库

    默认情况下,yum方式新安装的 mariadb 的密码为空,在shell终端直接输入 mysql 就能登陆数据库. 如果是刚安装第一次使用,请使用 mysql_secure_installation ...

  4. js移动端滑倒顶部加载历史消息解决方案!

    最近做了一个语音直播聊天的项目,有一个功能是当没有直播时,进入房间可以查看历史消息,滑动到顶部加载之前的历史消息,我用jquery scroll事件,来判断是否滚动到顶部,问题来了: 首先触发请求事件 ...

  5. 编程老司机带你玩转 CompletableFuture 异步编程

    本文从实例出发,介绍 CompletableFuture 基本用法.不过讲的再多,不如亲自上手练习一下.所以建议各位小伙伴看完,上机练习一把,快速掌握 CompletableFuture. 个人博文地 ...

  6. CVE-2020-1947 Sharding-UI的反序列化复现及分析

    CVE-2020-1947 复现及分析 0x01 影响 Apache ShardingSphere < =4.0.0 0x02 环境搭建 incubator-shardingsphere 的ui ...

  7.  FPGA边沿检测Verilog代码

    FPGA边沿检测Verilog代码(上升沿,下降沿,双边沿) 实现思路:用两个一位寄存器直接异或可以实现 代码实现: ​ module edge_detect( input clk, input rs ...

  8. 百度地图API-创建多个坐标,连线,信息提示

    这是一个多坐标创建,并连线,和信息显示的例子 <!DOCTYPE html> <html> <head> <meta http-equiv="Con ...

  9. Google Flutter Clock 大赛优秀项目推荐

    Flutter 在 Google 加持下,如今可以作为跨平台首选了.早在 Flutter 刚刚出现强势苗头,我作为第一批体验了一把,<Flutter 初尝:从 Java 无缝过渡>,不过也 ...

  10. 数据结构 - ArrayList

    简介 ArrayList是一个动态数组.ArrayList几乎拥有数组所有优点,例如元素有序,索引访问等:并且一般情况下它还不会越界,添加元素时它能动态扩容.平时工作中ArrayList被我们广泛应用 ...