• Python初学:变量是什么?盘点那些变量的基本概念


    前言

    Python变量可以看成一个小盒子,专门用来“盛放”程序中的数据。每个变量都拥有独一无二的名字,通过变量的名字就能找到变量中的数据。(文末送读者福利)

    而这个小盒子,就是在内存中的一个地址,也可以理解成为一个门牌号。

    将数据赋值给变量的过程就叫做赋值,Python里的赋值就使用‘=’来实现:

    s=5
    p='abc'
    m=3.14159
    t='中国人'
    姓名='张三'#可以使用中文作为变量名,但不推荐
    
    • 1
    • 2
    • 3
    • 4
    • 5

    变量只能容纳一个值,当新的赋值语句修改原有的变量值,原来的值就不存在了。Python的变量赋值方法比较灵活,如:

    m=3.14159
    s=m+1#结果为4.14159
    q=3+2-1*9 #结果为-4
    o=s+(5*2)#结果为14.14159
    
    • 1
    • 2
    • 3
    • 4

    在其他强类型语言(如C++、C、Java)中,变量赋值前需要申明,但Python无须先申明,可以直接赋值。

    所以,Python属于弱类型语言。

    弱类型语言有两个特点:

    变量无须声明就可以直接赋值,对一个不存在的变量赋值就相当于定义了一个新变量。变量的数据类型可以随时改变,比如,同一个变量可以一会儿被赋值为整数,一会儿被赋值为字符串。

    但是,不代表变量就没有类型,只是书写的时候不需要特别关注。可以使用type()来判断变量的类型:
    在这里插入图片描述
    结果显示:,说明这是一个整数型的变量,前面的class说明这个变量也是一个类,这也说明在Python中万事万物皆是类,后面我们会讲到。

    int类型叫做整数类型,整数包括正整数、0 和负整数。如果数据比较长,Python规定,还可以用下划线来分隔,并不影响数值本身:
    在这里插入图片描述
    与之对应的就是小数,也称为浮点数。

    浮点数和定点数是相对的:小数在存储过程中如果小数点发生移动,就称为浮点数;如果小数点不动,就称为定点数。

    Python的小数有两种书写形式:

    一种是十进制形式,如‘32.658,‘78.125’等等,另一种是指数形式,aen或者aEn的形式:

    f= 5e5
    print(f)
    print(type(f))
    
    p=5E5
    print(p)
    print(type(p))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行结果:

    500000.0
    
    500000.0
    
    
    • 1
    • 2
    • 3
    • 4

    Python中还有一种数字的类型叫复数类型,表达方式为a+bj:

    c1 = 9 + 0.5j
    print("c1: ", c1)
    print("数据类型", type(c1))
    c2 = 8 - 1.5j
    print("c2: ", c2)
    #对复数进行简单计算
    print("c1+c2: ", c1+c2)
    print("c1*c2: ", c1*c2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行结果:

    c1:  (9+0.5j)
    数据类型 
    c2:  (8-1.5j)
    c1+c2:  (17-1j)
    c1*c2:  (72.75-9.5j)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    当我们在Python里面执行0.1+0.2的时候,会发现一个惊人的有趣的现象,就是输出结果:

    >>> 0.1+0.2
    >>> 0.30000000000000004
    
    • 1
    • 2

    为什么会这样?

    原来是二进制的转换在作怪,前面我们讲到过机器语言的内容,Python将数字0.1和0.2转换成二进制的电信号输出给计算机。
    在转换的时候,0.1(10)=0.00011001100110011…(2)这是一个无限循环的数,由于计算机存储的位数是有限制的,所以如果要存储的二进制位数超过了计算机存储位数的最大值,其后续位数会被舍弃(舍弃的原则是“0 舍 1 入”)。

    这样就会出现上面的情况,而且在所有的编程语言中都会遇到这样的情况。
    如果希望得到精确的结果,可以使用decimal模块或Fraction:

    import decimal
    a = decimal.Decimal("20.0")
    b = decimal.Decimal("3")
    print(20.0/3)
    print(a/b)
    
    from fractions import Fraction
    print(20/3)
    print(Fraction(20,3))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    输出结果为:

    6.666666666666667
    6.666666666666666666666666667
    6.666666666666667
    20/3
    
    • 1
    • 2
    • 3
    • 4

    除了数值型的变量,Python还有字符型变量。
    字符型的变量是用’'或“”包含起来的(注意这里是英文输入法里的符号,小伙伴们千万不要踩坑)。

    这里需要注意,如果字符串里有‘’或“”注意的字符,就需要转义:"he’s pen"这样的字符写成:

    s='he\'s pen'
    s="he's pen"
    
    • 1
    • 2

    注意区分中文输入和英文输入的切换,很多新手辛辛苦苦写了几百行代码,因为一个标点符号检查了一个通宵的事情,时有发生。

    关于换行的问题,一般采用‘\’换行,有的长字符串才有‘’‘XXXXX’‘’或者“”“XXXX”“”的办法,但是后面这种方式输出时是这样的:

    s='''这是一个案例
         转行输出
         被隔开了'''
    print(s)
    
    • 1
    • 2
    • 3
    • 4

    结果:

    这是一个案例
    转行输出
    被隔开了
    
    • 1
    • 2
    • 3

    另外一个很重要的情况如:“F:\Program Files\Python\python.exe”

    就需要是有转义字符,写成"F:\Program Files\Python\python.exe"
    在这里插入图片描述
    Python 3.x 中,字符串采用的是 Unicode 字符集,这个以后在外面的实例程序中会专门讲解。

    Python bytes 类型的数据非常适合在互联网上传输,可以用于网络通信编程;bytes也可以用来存储图片、音频、视频等二进制格式的文件。

    字符串由若干个字符组成,以字符为单位进行操作;字节串由若干个字节组成,以字节为单位进行操作。

    #通过构造函数创建空 bytes
    s1 = bytes()
    #通过空字符串创建空 bytes
    s2 = b''
    #通过b前缀将字符串转换成 bytes
    by_s = b'http://www.baidu.com/python/'
    print("by_s: ", by_s)
    print(by_s[3])
    print(by_s[7:22])
    
    
    #通过 decode() 方法将 bytes 转换成字符串
    str1 = by_s.decode('UTF-8')
    print("str1: ", str1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    输出结果如下:

    by_s:  b'http://www.baidu.com/python/'
    112
    b'www.baidu.com/p'
    str1:  http://www.baidu.com/python/
    
    • 1
    • 2
    • 3
    • 4

    再来看一个例子:

    #通过构造函数创建空 bytes
    s1 = bytes()
    #通过空字符串创建空 bytes
    s2 = b''
    #通过b前缀将字符串转换成 bytes
    by_s = b'http://www.baidu.com/python/'
    print(by_s)
    print(by_s[0])
    print(by_s[7:22])
    #为 bytes() 方法指定字符集
    s4 = bytes('这是一段文字', encoding='UTF-8')
    print("b4: ", s4)
    #通过 encode() 方法将字符串转换成 bytes
    s5 = "这是一段文字".encode('UTF-8')
    print("b5: ", s5)
    #通过 decode() 方法将 bytes 转换成字符串
    q1 = s4.decode('UTF-8')
    print("str1: ", q1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    输出结果:

    b'http://www.baidu.com/python/'
    104
    b'www.baidu.com/p'
    b4:  b'\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\x80\xe6\xae\xb5\xe6\x96\x87\xe5\xad\x97'
    b5:  b'\xe8\xbf\x99\xe6\x98\xaf\xe4\xb8\x80\xe6\xae\xb5\xe6\x96\x87\xe5\xad\x97'
    str1:  这是一段文字
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Python 提供了 bool 类型来表示真(对)或假(错)使用 True /False来代表,
    在这里插入图片描述
    在 Python 中,所有的对象都可以进行真假值的测试,包括字符串、元组、列表、字典、对象等,后面会介绍。

    坚持学习每天都能进步一点点!

    读者福利:知道你对Python感兴趣,便准备了这套python学习资料,

    对于0基础小白入门:

    如果你是零基础小白,想快速入门Python是可以考虑的。

    一方面是学习时间相对较短,学习内容更全面更集中。
    二方面是可以找到适合自己的学习方案

    零基础Python学习资源介绍

    👉Python学习路线汇总👈

    Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(学习教程文末领取哈)

    👉Python必备开发工具👈

    温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

    👉Python学习视频600合集👈

    观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

    👉实战案例👈

    光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

    👉100道Python练习题👈

    检查学习结果。

    👉面试刷题👈



    在这里插入图片描述

    资料领取

    这份完整版的Python全套学习资料已为大家备好,朋友们如果需要可以微信扫描下方二维码添加,输入"领取资料" 可免费领取全套资料【有什么需要协作的还可以随时联系我】朋友圈也会不定时的更新最前言python知识。
    在这里插入图片描述

    好文推荐

    了解python的前景: https://blog.csdn.net/weixin_49892805/article/details/127196159

    python有什么用: https://blog.csdn.net/weixin_49892805/article/details/127214402

  • 相关阅读:
    Java常用17个工具类方法,提升开发效率的“轮子”,避免重复造轮子
    ThreadLocal(1):ThreadLocal介绍
    vue2和vue3的区别
    【数据结构初阶】Leetcode二叉树基础练习&&完全二叉树判断
    Linux中查找最大文件的命令是什么?
    Linux:文件搜索
    ChatGPT与讯飞星火实测对比
    池化(Pooling)的种类与具体用法——基于Pytorch
    dsu on tree
    定时任务报警通知解决方案详解
  • 原文地址:https://blog.csdn.net/weixin_49892805/article/details/127776526