zoukankan      html  css  js  c++  java
  • Python第二章-变量和数据类型

    变量和数据类型

    一、什么是变量,常量

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

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

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

    例如:一个仓库存有霍亮和霍晶两人的金银财宝,共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 中,用 一对双引号 "" 或 一对单引号 '' 括起来的单个或多个字符就是字符串 。

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

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

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

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

    a = r'abc
    x	yz'
    print(a)
    print("------")
    b = 'abc
    x	yz'
    print(b)
    

    如果一个字符串内有多行数据,又不想写过多的 则可以使用 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
    
  • 相关阅读:
    SQL SERVER备份数据库存储过程.
    JMail组件使用中文文档
    Oracle,SQL Server,Access万能数据库通用类!
    快速幂的理解及使用
    关于地图坐标问题转换
    ref和依赖注入
    Unity3D 中的程序后台运行
    Unity中创建双面材质
    Unity3d 移动平台中文显示问题
    Unity3D 4.0中使用传统动画
  • 原文地址:https://www.cnblogs.com/yanadoude/p/12604256.html
Copyright © 2011-2022 走看看