Python教程第2章 | 基本数据类型和变量

简介: Python基本类型和变量本章包括:基本数据类型、字符串编码问题、基本类型转换、Python中的变量


image.gif 编辑

注意的是 Python 程序是大小写敏感的,如果写错了大小写,程序会报错。单行注释用:#

一、print() 函数

如果你是初学者,可能对函数不太了解,没关系,你先了解它的组成部分和作用就可以了,后面函数会详细说明。

print() 函数由两部分构成 :

  1. 指令:print
  2. 指令的执行对象,在 print 后面的括号里的内容

image.gif 编辑

print() 函数的作用是让计算机把你给它的指令结果,显示在屏幕的终端上。这里的指令就是你在 print() 函数里的内容。

比如在上一章节中,我们的第一个 Python 程序,打印 print('Hello Python')

image.gif 编辑

它的执行流程如下:

  1. 向解释器发出指令,打印 'Hello Python'
  2. 解析器把代码解释为计算器能读懂的机器语言
  3. 计算机执行完后就打印结果

image.gif 编辑

可能这里有人会问,为什么要加单引号,直接 print(Hello Python) 不行吗?

如果你写代码过程中,有这样的疑问,直接写一下代码,自己验证一下是最好的。

image.gif 编辑

显然,去掉单引号后,运行结果标红了(报错),证明这是不可以的。

主要是因为这不符合 Python 的语法规则,去掉单引号后, Python 解释器根本没法看懂你写的是什么。

所以就报 SyntaxError: invalid syntax 的错误,意思是:语法错误。说明你的语句不合规则。

二、Python 基本数据类型

1、字符串

字符串是python中最常用的数据类型,字符串的识别也非常的简单,就是用「引号」括起来的。

在Python中,引号用于定义字符串,包括单引号(’ ‘)、双引号(" ")和三引号(’‘’ ‘’)。这些引号的选择和使用取决于不同的需求和上下文:

单引号(' '):单引号用于定义单行字符串。当你需要定义一个简单的、不包含任何特殊字符(如双引号或单引号)的字符串时,你可以使用单引号。例如:

name = 'John Doe'

image.gif

双引号(" "):双引号也用于定义字符串,但它们允许字符串包含特殊字符,如单引号和双引号。这意味着你不需要在字符串中使用转义字符。

例如:

sentence = "He said, \"Hello, world!\""

image.gif

三引号(‘’’ '):三引号用于定义多行字符串,也称为多行字符串字面量。它们允许字符串跨越多行,而不需要在每行末尾添加连行符。此外,三引号字符串可以包含特殊字符,包括单引号和双引号,而无需转义。例如:

quote = '''
To be, or not to be, that is the question:
Whether 'tis nobler in the mind to suffer
The slings and arrows of outrageous fortune,
Or to take arms against a sea of troubles
And by opposing end them.
'''

image.gif


Python提供这些不同类型的引号是为了方便和灵活性。选择哪种引号取决于你的具体需求,例如是否需要跨越多行、是否包含特殊字符等。

2、整数

整数包括正整数、负整数和零,是没有小数点的数字。

Python 可以处理任意大小的整数,例如:1100-80800,等等。

image.gif 编辑

运行结果:

image.gif 编辑

当然,要注意了,如果数字你用引号括起来了,那就属于字符串,而不属于整数。比如 '100' , 这 100 是字符串,不是整数。

在现实世界中,整数我们通常会做计算,因此代码世界也是一样,整数可以直接加减乘除。

比如:

image.gif 编辑

程序运行结果:

image.gif 编辑

这里提示下大家,看看上面的例子,有没有发现什么?

看下 int4 打印出来的结果,是 0.5 , 是一个小数。

而我们上面对整数的定义是什么?

是没有小数点的数字。

因此 int4 肯定不是整数。

这里我们可以使用 type() 函数来查看下类型。

image.gif 编辑

结果如下:

image.gif 编辑

可以看到 int4 是 float 类型,而 int1 ,int2,int3 都是 int 整数类型。

那么 float 是什么类型呢?

float 是浮点数类型,是我们下面会说到的。

在说浮点数之前,各位可以看下 Python 的算术运算符有哪些,有个印象。

image.gif 编辑

3、浮点数

浮点数的英文名是 float ,是指带小数的数字。

浮点数跟整数有很多类似的地方,但是浮点数是最折磨人的,也是最难让人捉摸透的。

就好比世界级的大佬 Herb Sutter 说的:「世上的人可以分为3类:一种是知道自己不懂浮点运算的;一种是以为自己懂浮点运算的;最后一种是极少的专家级人物,他们想知道自己是否有可能,最终完全理解浮点运算。」

为什么这么说呢?

看下面的例子 ,像整数一样,只是基本的浮点数加法运算。

image.gif 编辑

可是运算结果,对于初学者来说,可能会接受不了。

image.gif 编辑

对于第一个还好,0.55+0.41 等于 0.96 ,运算结果完全一致。可是后面两个,你会发现怎么出现了那么多个零。

这是因为计算机对浮点数的表达本身是不精确的。保存在计算机中的是二进制数,二进制对有些数字不能准确表达,只能非常接近这个数。

所以我们在对浮点数做运算和比较大小的时候要小心。

4、布尔值

布尔值和布尔代数的表示完全一致,一个布尔值只有 TrueFalse 两种值,要么是 True,要么是 False,在 Python 中,可以直接用 True、False 表示布尔值(请注意大小写),也可以通过布尔运算计算出来。

布尔值可以用 andornot 运算。

and 运算是与运算,只有所有都为 True,and 运算结果才是 True。

or 运算是或运算,只要其中有一个为 True,or 运算结果就是 True。

not 运算是非运算,它是一个单目运算符,把 True 变成 False,False 变成 True。

5、空值

基本上每种编程语言都有自己的特殊值——空值,在 Python 中,用 None 来表示

三、 字符串的编码问题

我们都知道计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母 A 的编码是 65,小写字母 z 的编码是 122。

如果要表示中文,显然一个字节是不够的,至少需要两个字节,而且还不能和 ASCII 编码冲突,所以,中国制定了 GB2312 编码,用来把中文编进去。

类似的,日文和韩文等其他语言也有这个问题。为了统一所有文字的编码,Unicode 应运而生。Unicode 把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode 通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填为 0 就可以。

因为 Python 的诞生比 Unicode 标准发布的时间还要早,所以最早的Python 只支持 ASCII 编码,普通的字符串 'ABC' 在 Python 内部都是 ASCII 编码的。

Python 在后来添加了对 Unicode 的支持,以 Unicode 表示的字符串用u'...'表示。

不过在最新的 Python 3 版本中,字符串是以 Unicode 编码的,也就是说,Python 的字符串支持多语言。就像上面的例子一样,我的代码中没有加u'...',也能正常显示。

不过由于 Python 源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为 UTF-8 编码。当Python 解释器读取源代码时,为了让它按 UTF-8 编码读取,我们通常在文件开头写上这两行:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

image.gif

第一行注释是为了告诉 Linux/OS X 系统,这是一个 Python 可执行程序,Windows 系统会忽略这个注释;

第二行注释是为了告诉 Python 解释器,按照 UTF-8 编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

申明了 UTF-8 编码并不意味着你的 .py 文件就是 UTF-8 编码的,必须并且要确保文本编辑器正在使用 UTF-8 without BOM 编码

四、基本数据类型转换

Python 中基本数据类型转换的方法有下面几个。

方法 说明
int(x [,base ]) 将x转换为一个整数
float(x ) 将x转换到一个浮点数
complex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效 Python 表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为 Unicode 字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串

注:在 Python 3 里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。

这里我们可以尝试一下这些函数方法。

比如 int() 函数,将符合规则的字符串类型转化为整数 。

image.gif 编辑

输出结果:

image.gif 编辑

注意这里是符合规则的字符串类型,如果是文字形式等字符串是不可以被 int() 函数强制转换的。

还有小数形式的字符串也是不能用 int() 函数转换的。

image.gif 编辑

这样转换会报错。

image.gif 编辑

但这并不是意味着浮点数不能转化为整数,而是小数形式的字符串不能强转为字符串。

浮点数还是可以通过 int() 函数转换的。

比如:

image.gif 编辑

输出结果:

image.gif 编辑

但是你会发现,结果是 88 ,后面小数点的 0.88 被去掉了。

这是因为 int() 函数是将数据转为整数。如果是浮点数转为整数,那么 int() 函数就会做取整处理,只取整数部分。所以输出的结果为 88 。

其余的方法不一一列举了,多用,多试,这些方法都会慢慢熟悉的。

五、Python 中的变量

1、变量的创建和赋值

在 Python 程序中,变量是用一个变量名表示,可以是任意数据类型,变量名必须是大小写英文、数字和下划线(_)的组合,且不能用数字开头,比如:

a=88

这里的 a 就是一个变量,代表一个整数,注意一点是 Python 是不用声明数据类型的。在 Python 中 = 是赋值语句,跟其他的编程语言也是一样的,因为 Python 定义变量时不需要声明数据类型,因此可以把任意的数据类型赋值给变量,且同一个变量可以反复赋值,而且可以是不同的数据类型。

image.gif 编辑

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如 Java 是静态语言。

2、变量的指向问题

我们来看下这段代码,发现最后打印出来的变量 b 是 Hello Python

image.gif 编辑

这主要是变量 a 一开始是指向了字符串 Hello Pythonb=a 创建了变量 b ,变量 b 也指向了a 指向的字符串 Hello Python,最后 a=123,把 变量 a 重新指向了 123,所以最后输出变量 b 是 Hello Python

image.gif 编辑

3、多个变量赋值

Python 允许同时为多个变量赋值。例如:

a = b = c = 1

以上实例,创建一个整型对象,值为 1,三个变量被分配到相同的内存空间上。

当然也可以为多个对象指定多个变量。例如:

a, b, c = 1, 2, "liangdianshui"

以上实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "liangdianshui" 分配给变量 c。

下一章:Python教程第3章 | 集合(List列表、Tuple元组、Dict字典、Set)

相关文章
|
1天前
|
存储 Linux iOS开发
Python入门:2.注释与变量的全面解析
在学习Python编程的过程中,注释和变量是必须掌握的两个基础概念。注释帮助我们理解代码的意图,而变量则是用于存储和操作数据的核心工具。熟练掌握这两者,不仅能提高代码的可读性和维护性,还能为后续学习复杂编程概念打下坚实的基础。
Python入门:2.注释与变量的全面解析
|
8天前
|
存储 Python 容器
python之变量的使用
Python 中变量是对象的引用,赋值即为指向内存中对象。创建对象时,解释器分配内存,引用计数管理内存回收。Python 是动态类型语言,变量类型在运行时确定。对象分为可变与不可变,前者可修改内部状态,后者则不行。命名空间管理变量作用域,确保不同区域的变量独立。
|
11天前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
22天前
|
IDE 测试技术 项目管理
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
PyCharm是由JetBrains开发的Python集成开发环境(IDE),专为Python开发者设计,支持Web开发、调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制等功能。它有专业版、教育版和社区版三个版本,其中社区版免费且适合个人和小型团队使用,包含基本的Python开发功能。安装PyCharm前需先安装Python解释器,并配置环境变量。通过简单的步骤即可在PyCharm中创建并运行Python项目,如输出“Hello World”。
197 13
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
|
1月前
|
人工智能 Unix Java
[oeasy]python059变量命名有什么规则_惯用法_蛇形命名法_name_convention_snake
本文探讨了Python中变量命名的几种常见方式,包括汉语拼音变量名、蛇形命名法(snake_case)和驼峰命名法(CamelCase)。回顾上次内容,我们主要讨论了使用下划线替代空格以提高代码可读性。实际编程中,当变量名由多个单词组成时,合理的命名惯例变得尤为重要。
89 9
|
2月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
87 8
|
2月前
|
Python
Seaborn 教程-模板(Context)
Seaborn 教程-模板(Context)
57 4
|
2月前
Seaborn 教程-主题(Theme)
Seaborn 教程-主题(Theme)
155 7
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
52 14

热门文章

最新文章

推荐镜像

更多