• 1.2 变量和数据类型(Python)


    本文来自异想之旅公开发布的Python教程,原文地址:https://www.yuque.com/yxzl/python

    这节课内容比较多,但是极为重要,请仔细阅读!

    例 01 变量定义

    我们再来了解一个新概念:变量。

    a = 1
    print(a)
    a = 2
    a = 3
    print(a)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出内容:

    1
    3
    
    • 1
    • 2

    名词解释:变量,百度百科解释为计算机语言中能储存计算结果或能表示值的抽象概念。我们可以简单理解为存储一些数据的容器。

    变量具有变量名和值。形如 a = 1 这样的语句成为变量赋值,即将 1 这个值存入 a 变量中。编程语言中的赋值基本都是从右到左,即右边的值给左边。

    针对有其它编程语言基础者:与其它编程语言不同,Python 中变量无需提前声明,在使用时直接赋值即可。

    在执行变量赋值的时候,有如下两种情况:

    • 若变量不存在(如本例中的 a = 1 ),则会创建变量 a 并将 a 的值设定为 1;
    • 若变量存在(如本例中的 a = 2a = 3 ),则直接重新设定 a 的值。

    例 02 变量命名

    a = 1
    name = 2
    Cnt = 3
    x1 = 4
    _temp = 5
    string_len = 6
    HELLO = 7
    异想之旅 = 8
    print(a, name, Cnt, x1, _temp, string_len, HELLO, 异想之旅)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出内容:

    1 2 3 4 5 6 7 8
    
    • 1

    根据本例,变量名命名要求如下:

    • 通常由大写字母 A-Z 、小写字母 a-z 、数字 0-9 、下划线 _ 组成;
    • 也可以由其它非英文语言字符组成,例如本例中运用了中文的 异想之旅 ,但是非英文的变量命名极其不推荐使用
    • 数字不得作为开头。

    对于一些老旧的习题,可能会认为 Python 的变量名只能包含字母数字下划线。

    以上是对于变量名的硬性限制,还有很多为了加强代码可读性的约定,Python 官方的变量命名建议(还包括其它内容的代码格式)是 PEP 8 - Python 代码风格指南

    例 03 常见的数据类型

    a = 1  # 整数int
    b = 3.1415926  # 小数(浮点数)float
    c = 'HelloWorld'  # 字符串str
    d = True  # 波尔类型(包含True和False两个值)bool
    print(a, b, c, d)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    输出内容:

    1 3.1415926 HelloWorld True
    
    • 1

    本例中,我们介绍了 Python 中四种常用的数据类型:

    • 整数int:存储任意整数,例如 1 -10
    • 浮点型float:存储任意小数,例如 0.1 -3.1415926 .98(等同于0.98)
    • 字符串**str**:存储任意字符组成的内容,例如 "Hello World" '异想之旅' "π=3.1415926..." (全部都必须要有单引号或双引号包裹)。在 1.5 章节我会详细介绍这一数据类型的使用
    • 布尔bool:表示逻辑判断,取值为 TrueFalse ,分别对应二进制下的 1 和 0。在 1.8 章节中大家会了解到该类型的使用场景
    • 空值None:有且只有None这一个取值,通常用于表示内容不存在或为空。先做了解,后面会用到

    名词解释:字符串,百度百科解释为编程语言中表示任意文本的数据类型。

    针对有其它编程语言基础者:与其它编程语言不同,Python 的 int 类型不限制数字的大小和位数,运算时自动采用高精度;Python 不存在单个字符(char)的概念,因此单引号和双引号都表示字符串。

    思考一个问题:为什么字符串一定要在两边加引号呢?

    参考答案:因为如果不加以引号进行区分,将无法将字符串与变量名和函数名进行区分,进而无法让计算机识别你是在书写一个字符串还是在访问变量。

    延申:为什么数字和变量可以区分开?

    参考答案:因为变量名不能以数字开头。

    例 04 强制类型转换

    a = 19.97
    print(int(a))
    print(str(a))
    print(bool(a))
    
    • 1
    • 2
    • 3
    • 4

    输出内容:

    19
    19.97
    True
    
    • 1
    • 2
    • 3

    众所周知,水可以在一定条件下自如地在固液气三态中切换。在 Python 中,数据的类型也不是一成不变的,可以通过类型转换使其转变为另一类型类型。水的状态转变前提是温度变化,而类型转换的触发条件则是调用类型转换函数

    针对有编程基础者:严格来讲,int``str等并非函数,而是类的初始化语句,具体将在后文提到。

    名词解释:类型转换,维基百科解释为将数据从一种类型转换到另一种类型的过程。一个简单的例子是将整数转换成浮点数。

    名词解释:类型转换函数,通常为 type_name() ,其中 type_name 为目标类型的缩写。缩写在本节的 例 03 中都已经标注出来(这是需要记住的,本节往后提及数据类型将只标注英文缩写)。

    在本例中,我们通过 int() str() bool() 三个函数分别将浮点型 float 的变量 a 转换为了整型 int、字符串 str 和波尔型 bool。

    强制类型转换的规则大体如下:

    输入类型输出类型转换规则
    intstr将 int 在十进制下使用阿拉伯数字表示:1'1'
    intfloat在 int 末尾加上 .0 占位:11.0
    intbool除 0 外均返回 True(0 返回 False):1True
    floatint舍弃 float 的小数部分(非四舍五入):19.9719
    floatstr将 float 在十进制下使用阿拉伯数字表示:3.14'3.14'
    floatbool除 0 外均返回 True(0 返回 False):1True
    strint将 str 转换为可供运算的 int 格式:'1'1
    strfloat将 str 转换为可供运算的 float 格式:'1.23'1.23
    strbool除空串 '' 为 False 外,全部返回 True:' 'True (空串是长度为 0 的字符串,不是空格)
    boolintTrue1

    False0 |
    | bool | float | True1.0

    False0.0 |
    | bool | str | True'True'

    False'False' |

    特别说明:将 str 转换为 int 或 float 时,该 str 必须是可以由 int 或 float 通过 str() 转换得到的,否则抛出错误:若想要将 '1.23' 转换为 int,则写法为 int(float('1.23')) ,因为 '1.23' 无法通过 int 类型直接转换 str 得到,所以不能直接转 int。

    例 04 删除变量

    a = 1
    print(a)
    del a
    print(a)
    
    • 1
    • 2
    • 3
    • 4

    输出内容:

    1
    Traceback (most recent call last):
      File "e:\Programming\Python\临时\1.py", line 4, in 
        print(a)
    NameError: name 'a' is not defined
    
    • 1
    • 2
    • 3
    • 4
    • 5

    del 语句可用于删除一切以定义的变量。

    上面输出的第 2 行开始为报错语句,后面也会详细提及,现在简单说一下怎么看它:重点内容在最后一行,直接作为英文去读;再往上是报错堆栈信息,会告诉你出错的语句是哪一句,比如这里是文件 e:\Programming\Python\临时\1.py 的第四行,如果是函数内部出错,这里将完整打印函数的调用过程。

  • 相关阅读:
    windows系统安装ubuntu22.04虚拟机
    弹窗、抽屉、页面跳转区别 | web交互入门
    TCP三次握手,四次挥手,你真的了解吗?
    Swift-30-高级编程-类型扩展和协议扩展
    逍遥自在学C语言 | 赋值运算符
    设备树的通识
    基因家族特征分析 - 染色体定位分析
    VScode常用快捷键
    前端面试题46(vue路由如何根据权限动态控制路由的显示?)
    家政预约小程序06服务展示
  • 原文地址:https://blog.csdn.net/weixin_44495599/article/details/126114914