• 小白学 Python(4):变量基础操作


    人生苦短,我选Python

    引言

    前文传送门

    小白学 Python(1):开篇

    小白学 Python(2):基础数据类型(上)

    小白学 Python(3):基础数据类型(下)

    前面的文章中,我们介绍了基础数据类型中最常用的数字和字符串,不知道大家还记得什么是变量不?不记得变量也应该记得那被奶茶吧~都不记得自己去翻翻前面的文章吧。

    变量

    在 Python 中使用变量,有一个和 Java 最大的不同是无需先声明,直接在赋值的时候就完成了声明。

    如果我们直接使用一个没有赋值的变量,会直接报错。

    print(name)
    
    // 输出结果:
    Traceback (most recent call last):
      File "D:/Development/Projects/python-learning/base-variable/Demo.py", line 2, in <module>
        print(name)
    NameError: name 'name' is not defined

    错误信息是说我们的 name 变量未定义,如果我们先对 name 赋值,这个变量就被定义了。

    name = "小明"
    
    print(name)
    
    // 输出结果:
    
    小明

    如果我们对这个变量再次进行赋值,新的赋值将会覆盖之前的赋值。

    name = "小红"
    
    print(name)
    
    // 输出结果:
    
    小红

    当然,如果我们不再需要这个变量,也可以通过 Python 提供的 del 来删除这个变量。

    del name
    
    print(name)
    
    // 输出结果:
    Traceback (most recent call last):
      File "D:/Development/Projects/python-learning/base-variable/Demo.py", line 2, in <module>
        print(name)
    NameError: name 'name' is not defined

    每个变量在我们的程序当中都会占有一定的内存空间,那么内存空间不够大的时候再新建变量岂不是要内存溢出?理论上来讲是会出现这种情况,但是 Python 提供了自动辣鸡回收机制,我们不用的辣鸡变量, Python 是会帮我们自己动回收掉的。

    但是,在极端情况下,我们所有需要使用的变量超出当前的内存空间怎么办?emmmmmmm

    这个就需要用钱来解决了,加点内存它不香么。

    变量类型转换

    在某些情况下,我们的变量需要参加运算,如果变量类型不同会怎么样呢?

    如果我们要使用一个字符串加上一个整形会怎么样呢?

    print('123' + 123)
    
    // 输出结果:
    Traceback (most recent call last):
      File "D:/Development/Projects/python-learning/base-variable/Demo.py", line 17, in <module>
        print('123' + 123)
    TypeError: can only concatenate str (not "int") to str

    这句报错含义是告诉我们字符串只能连接一个字符串,并不能连接一个整形。

    这里我们先写的是字符串,系统默认是做字符串连接操作,但是系统执行到后面发现并不是一个字符串,系统直接就原地炸了:说好的字符串呢?

    这时如果我们想要正常运行怎么办呢?

    如果仅仅只是要程序不报错,有两种解决方案:

    • 将字符串强成整形,结果会是一个整形
    • 将整形转成字符串,执行字符串拼接操作

    当然,这里涉及到了类型强制转换。

    • float() 函数,将其他类型数据转为浮点数

    • str() 函数,将其他类型数据转为字符串

    • int() 函数,将其他类型数据转为整型

    那么上面的报错我们就有了以下解决方案:

    print('123' + str(123))
    
    // 输出结果:
    123123
    
    print(int('123') + 123)
    
    // 输出结果:
    246

    那么新的问题来了,如果是一个整形和一个浮点数想加最终会得到什么类型呢?

    这里涉及到了一个新的知识点,叫做类型提升

    print(123.5 + 123)
    
    // 输出结果:
    246.5

    那么如果一个浮点型强转成整形又会怎么样呢?

    print(int(123.7))
    
    // 输出结果:
    123

    从示例中,可以看出强制类型降级时,会直接抹去末尾小数,这里并不会做四舍五入哦~

    如果想使用四舍五入的方式,有一种比较简易的方式,加 0.5 ,如下示例:

    print(int(123.7 + 0.5))
    
    // 输出结果:
    124

    这么写有点不是那么优雅,我们还可以借助函数 round() 来实现。

    print(int(round(123.4)))
    
    // 输出结果:
    123
    
    print(int(round(123.5)))
    
    // 输出结果:
    124

    示例代码

    本系列的所有代码小编都会放在代码管理仓库 Github 和 Gitee 上,方便大家取用。

    示例代码-Github

    示例代码-Gitee

    转载声明:本博客由极客挖掘机创作,采用 CC BY 3.0 CN 许可协议。可自由转载、引用,但需署名作者且注明文章出处。
  • 相关阅读:
    Android开发之基本控件和详解四种布局方式
    Android开发之Activity的创建跳转及传值
    设计模式(十三):从“FQ”中来认识代理模式(Proxy Pattern)
    设计模式(十二):通过ATM取款机来认识“状态模式”(State Pattern)
    设计模式(十一):从文Finder中认识"组合模式"(Composite Pattern)
    设计模式(十):从电影院中认识"迭代器模式"(Iterator Pattern)
    设计模式(八): 从“小弟”中来类比"外观模式"(Facade Pattern)
    设计模式(六):控制台中的“命令模式”(Command Pattern)
    设计模式(三):“花瓶+鲜花”中的装饰者模式(Decorator Pattern)
    设计模式(一):“穿越火线”中的“策略模式”(Strategy Pattern)
  • 原文地址:https://www.cnblogs.com/alliswell2king/p/11753857.html
Copyright © 2020-2023  润新知