Python变量及数据类型用法原理汇总


Posted in Python onAugust 06, 2020

变量(Variable)可以看成一个小箱子,专门用来“盛装”程序中的数据。每个变量都拥有独一无二的名字,通过变量的名字就能找到变量中的数据。

从底层看,程序中的数据最终都要放到内存中,变量其实就是这块内存的名字。

1. Python变量的赋值

在编程语言中,将数据放入变量的过程叫做赋值(Assignment)。每个变量在使用前都必须赋值,变量赋值以后,该变量才会被创建。

Python 使用等号=作为赋值运算符,具体格式为:

name = value
# name 表示变量名,value 表示值,也就是要存储的数据。

变量的值不是一成不变的,它可以随时被修改,只要重新赋值即可。

2. Python变量的命名

  • 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头,但不能以数字打头。
  • 变量名是严格区分大小写的。
  • 变量名不能包含空格、@、% 以及 $ 等特殊字符。
  • 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。
  • Python 语言中,以下划线开头的标识符有特殊含义。
    • 以单下划线开头的标识符(如 _width),表示不能直接访问的类属性,其无法通过 from...import* 的方式导入;
    • 以双下划线开头的标识符(如__add)表示类的私有成员;
    • 以双下划线作为开头和结尾的标识符(如 init),是专用标识符。
  • 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
  • 慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。
  • Python 允许使用汉字作为标识符,但我们应尽量避免使用汉字作为标识符,这会避免遇到很多奇葩的错误。

查看 Python 中的保留关键字

>>> import keyword
>>> print(keyword.kwlist)

'False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'

3. Python变量的类型(弱类型语言)

在强类型的编程语言中,定义变量时要指明变量的类型,而且赋值的数据也必须是相同类型的,如C语言、C++、Java 是强类型语言的代表。

和强类型语言相对应的是弱类型语言,Python、JavaScript、PHP 等脚本语言都是弱类型的。

弱类型语言有两个特点:

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

注意,弱类型并不等于没有类型!弱类型是说在书写代码时不用刻意关注类型,但是在编程语言的内部仍然是有类型的。

Python中数据类型可以分为数字型和非数字型。

  • 数字型
    • 整型 (int)
    • 浮点型 (float)
    • 布尔型 (bool)
    • 复数型 (complex)
  • 非数字型
    • 字符串 (String)
    • 列表 (list)
    • 元组 (tuple)
    • 集合 (set)
    • 字典 (dict)

我们可以使用内置函数type()来检测某个变量或者表达式的类型,例如:

>>> num = 10
>>> type(num)
<class 'int'>
>>> num = 15.8
>>> type(num)
<class 'float'>
>>> num = 20 + 15j
>>> type(num)
<class 'complex'>
>>> type(3*15.6)
<class 'float'>

4. Python变量数据类型的转换

虽然 Python 是弱类型编程语言,不需要像 Java 或 C 语言那样还要在使用变量前声明变量的类型,但在一些特定场景中,仍然需要用到类型转换。

比如说,我们想通过使用 print() 函数输出信息“您的身高:”以及浮点类型 height 的值,如果在交互式解释器中执行如下代码:

height = 70.0
print("您的身高"+height)
# Traceback (most recent call last):
# File "<pyshell#1>", line 1, in <module>
# print("您的身高"+height)
# TypeError: must be str, not float

你会发现这是错误的,解释器提示我们字符串和浮点类型变量不能直接相连,需要提前将浮点类型变量 height 转换为字符串才可以。

Python 已经为我们提供了多种可实现数据类型转换的函数.

函 数 作 用
int(x) 将 x 转换成整数类型
float(x) 将 x 转换成浮点数类型
complex(real,[,imag]) 创建一个复数
str(x) 将 x 转换为字符串
repr(x) 将 x 转换为表达式字符串
eval(str) 计算在字符串中的有效 Python 表达式,并返回一个对象
chr(x) 将整数 x 转换为一个字符
ord(x) 将一个字符 x 转换为它对应的整数值
hex(x) 将一个整数 x 转换为一个十六进制字符串
oct(x) 将一个整数 x 转换为一个八进制的字符串

需要注意的是,在使用类型转换函数时,提供给它的数据必须是有意义的。例如,int() 函数无法将一个非数字字符串转换成整数。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用apidoc管理RESTful风格Flask项目接口文档方法
Feb 07 Python
python中matplotlib的颜色及线条控制的示例
Mar 16 Python
python  创建一个保留重复值的列表的补码
Oct 15 Python
python hook监听事件详解
Oct 25 Python
python提取log文件内容并画出图表
Jul 08 Python
Python pandas.DataFrame 找出有空值的行
Sep 09 Python
Python pip安装第三方库实现过程解析
Jul 09 Python
django使用graphql的实例
Sep 02 Python
Django-celery-beat动态添加周期性任务实现过程解析
Nov 26 Python
Python爬虫爬取ts碎片视频+验证码登录功能
Feb 22 Python
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
May 12 Python
Python爬虫网络请求之代理服务器和动态Cookies
Apr 12 Python
基于logstash实现日志文件同步elasticsearch
Aug 06 #Python
如何解决pycharm调试报错的问题
Aug 06 #Python
Python用来做Web开发的优势有哪些
Aug 05 #Python
Python结合Window计划任务监测邮件的示例代码
Aug 05 #Python
python爬虫使用requests发送post请求示例详解
Aug 05 #Python
8种常用的Python工具
Aug 05 #Python
浅析Python 序列化与反序列化
Aug 05 #Python
You might like
Laravel 5.1 on SAE环境开发教程【附项目demo源码】
2016/10/09 PHP
PHP编程 SSO详细介绍及简单实例
2017/01/13 PHP
CL vs ForZe BO5 第一场 2.13
2021/03/10 DOTA
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
JavaScript动态调整TextArea高度的代码
2010/12/28 Javascript
jQuery EasyUI API 中文文档 DateTimeBox日期时间框
2011/10/16 Javascript
javascript中encodeURI和decodeURI方法使用介绍
2013/05/06 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
javascript实现全角转半角的方法
2016/01/23 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
2016/05/15 Javascript
浅析vue数据绑定
2017/01/17 Javascript
用react-redux实现react组件之间数据共享的方法
2018/06/08 Javascript
解决vue中修改了数据但视图无法更新的情况
2018/08/27 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
Vue项目中使用jquery的简单方法
2019/05/16 jQuery
浅谈目前可以使用ES10的5个新特性
2019/06/25 Javascript
详解JavaScript 浮点数运算的精度问题
2019/07/23 Javascript
Echarts实现单条折线可拖拽效果
2019/12/19 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
javascript中layim之查找好友查找群组
2021/02/06 Javascript
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
Python中title()方法的使用简介
2015/05/20 Python
Python 多线程搜索txt文件的内容,并写入搜到的内容(Lock)方法
2019/08/23 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
Python打印特殊符号及对应编码解析
2020/05/07 Python
H5新属性audio音频和video视频的控制详解(推荐)
2016/12/09 HTML / CSS
Clarria化妆品官方网站:购买天然和有机化妆品系列
2018/04/08 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
园长自我鉴定
2013/10/06 职场文书
运动会开幕式主持词
2014/03/28 职场文书
个人先进材料范文
2014/12/30 职场文书
师德培训心得体会2016
2016/01/09 职场文书
铁拳制作人赞《铁拳7》老头环Mod:制作精良 但别弄了
2022/04/03 其他游戏