从C到Py:Python的数据类型与运算符

在本篇博客中我们将较为详细地介绍Python中有关数据类型与运算符的问题,实际上经过C语言的学习,这些基础知识往往都是约定俗成,只需要注意Python中特有的几点便可。

目录

保留字与标识符

变量与常量

数值类型

字符串类型

有关符号

索引和切片

字符串操作

布尔类型

数据类型之间的转换

eval函数

运算符

算术运算符

赋值运算符

比较运算符

逻辑运算符

位运算符


保留字与标识符

1、保留字的定义,基本可以等效于C语言中的关键字,他们是在Python语言中默认具有特殊意义的单词,不能直接作为我们定义的变量等的名称。

Python中的保留字有:'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'
共计35个,我们无需特别记忆,只要养成一些命名时的习惯即可。

值得注意的是,FalseTrue 是保留字,而首字母小写的false true则不是的,进一步讲,保留字对于大小写是严格区分的

以下提供一段查询保留字的程序(原理尚待学习):

import keyword
print(keyword.kwlist)
print(len(keyword.kwlist))

2、对于标识符,实际上可以理解为“名字”,列如我们定义变量时的变量名。

Python中的标识符命名需要遵守如下规则:

①标识符可以是字符(包括英文、中文)、下划线“_”、数字,但第一个字符不能是数字

②不能使用保留字作标识符。

③标识符严格区分大小写(这里的意思是有大小写差别的标识符不是等同的,不指代同一变量)。

④一般情况下避免使用以下划线开头的标识符。

⑤标识符可以是中文,但不建议(这并不规范,也可能不与其他工具、语言等兼容)

变量与常量

1、变量是我们定义的可变量,常量则是不可变的,变量的概念与C语言中的并无区别。定义变量的格式:name = value

特别与C语言不同地,在Python中定义一个变量,就是以上面的格式而无需规定类型,可以直接写 a=1,b='abc'。Python能动态修改变量的数据类型,通过赋不同类型的值就可以直接修改。

 Python允许多个变量指向相同的值,而这些变量的“地址”实际也是相同的(地址即数据在内存中国储存的位置),我们可以通过 id() 函数查看对象的地址。

a=100
b=100
print(id(a))  # 140727111734808
print(id(b))  # 140727111734808

变量的命名需要遵守如下规则:

①变量名须是有效的标识符。

②谨慎使用小写的i和大写的O,容易混淆。

③最好采用有意义的单词作变量名,有助于代码的可读性。

2、常量,定义之后不能再修改。我们规定常量全部使用大写字母和下划线命名,列如 MY_AGE=18,即定义了一个常量,我们不能重新赋值MY_AGE=19(程序会报出警告,但并不会报错,实际还是可以修改的

数值类型

若具有C语言的基础,这方面的定义十分好理解。

1、整数类型。包括正整数、负整数和0,表示方法有十进制、二进制(引导符为0b或0B)、八进制(引导符为0o或0O)和十六进制(引导符为0x或0X

2、浮点数类型。带有小数点的数值。两个浮点数运算的时候,可能在结果后面产生一些不确定的尾数(这是由于Python使用IEEE 754标准来表示浮点数。有关浮点数在内存中的存储问题,可见我的博客C语言:数据在内存中的存储简介-CSDN博客

值得一提的是,Python中对于复数的表示与数学中的复数形式一致,实部用.real ,虚部用.imag。虚数单位用j来表示,定义复数 x=123+456j ,此时x.real为123 x.imag为456。

补充:可以使用type()函数来获取变量的数据类型。

round()函数可以规定浮点数运算的小数位数,如round(0.1+0.2,1)就是保留一位小数。

字符串类型

字符串类型是连续的字符序列,可以包含能识别的所有字符。

有关符号

界定符:单引号' ' 、双引号'' ''、三引号''' ''' 用这几种符号括起来的内容都将成为字符串。

转义字符:此处概念与C语言的相同,只做简单说明。

\n:换行符。不过print函数默认是会换一行的。

\t:水平制表符,横向跳到下一个制表位。一个\t制表符是8个字符,如 hello\t 会在后面补3个空格。

\":双引号,防止与界定符相冲突

\':单引号,同上

\\:一个反斜杠

原字符:使转义字符失效的字符,r或R。使用原字符,即在字符串引号前面加上r或R,此时字符串中的转义字符会被视作字符而输出。

索引和切片

字符串又被称为有序的字符序列,对其中某个字符的检索称为索引

类似于在C语言中数组通过下标来索引元素,字符串中的每个字符也有对应的下标,有两种排序,分别是正向递增序号:0、1、2、... 反向递减序号:...、-2、-1。所以对于一个含有n个字符的字符串,第一个元素序号为0,最后一个为n-1,或者最后一个序号为-1,第一个为-n。通过序号来索引的符号与C语言相同,用 [ ]

如果是对某个子串或者说区间的检索,称为切片。对应的语法结构是: 字符串/字符串变量[N:M]

由此索引出下标为N到M的序列,且不包括M

N的位置可以不填,默认从0开始,M的位置若不填,默认切到结尾

字符串操作

连接操作:x+y  将字符串x和y直接连接起来;

复制:x*nn*x  将字符串x复制n次;

判断:x in s  若x为s的子串,结果为True,否则结果为False。

在之后的学习中还会提到有关字符串的其他概念与操作。

布尔类型

布尔类型是用来表示“真”值和“假”值的数据类型,布尔类型的值有TrueFalse两个,而True表示整数1,False表示整数0(形象一点说,转变为int类型后值为1或0)。

我们可以使用bool()函数测试对象的bool值。常见的bool值为False的对象有:数值0、浮点数0.0等、虚数0和空的序列。

数据类型之间的转换

如标题,转化数据的类型,又分为隐式转换和显示转换。

隐式转换如定义x=True ,这时计算x+10,那么x将自动转换为整数类型,结果为11。

显示转换则涉及函数:

int(x) float(x) str(x) chr(x) 分别是将x转换为整数、浮点数、字符串、字符

ord(x) 将一个字符x转换成对应的整数值

hex(x) 将一个整数x转换为一个十六进制字符串

oct(x) 将一个整数x转换为一个八进制字符串

bin(x) 将一个整数x转换为一个二进制字符串

eval函数

eval函数时Python中的一个内置函数,作用为去掉字符串最外侧的引号,并按Python语句方式执行去掉引号后的字符串。它常与input()函数一起使用。

语法结构:变量 = eval(字符串)

更简单地理解,这个函数就是将一个字符串转化为语句。以下为实例:

num='1+2'
print(num, type(num))  # 1+2 <class'str'>
x=eval(num)
print(x, type(x))  # 3 <class'float'>

age=eval(input('请输入:'))  # 相当于int(age)
print(age, type(age))

运算符

算术运算符

+、-、*、/ 加减乘除,与C语言的除法不同,Python的除法会自动保留小数,比如10/2结果是5.0。

// 整除,相当于C语言的除法,10/3结果为3。

% 取余数。

** 幂运算,列如2**3结果为8。

优先级:幂运算>乘除取模>加减

赋值运算符

=、+=、-=、*=、/=、%=、**=、//= 其概念与C语言中的相同

Python支持链式赋值、系列解包赋值。可以通过“,”分隔同时多个赋值,如 a,b=1,2

乃至可以通过 a,b=b,a 直接实现交换两个变量的值。

比较运算符

>  <   ==  !=  >=  <= 

逻辑运算符

and 逻辑与 从左到右 全为True结果为True

or 逻辑或 从左到右 有True为True(这两个都是连接两个语句,判断bool类型)

not 逻辑非 从右到左 True为False,False为True

位运算符

这些运算符与C语言中的完全相同,都是通过二进制序列来处理

按位与 & 都是1结果为1

按位或 | 有1结果为1

按位异或 ^ 相同为0,相异为1

按位取反 ~ 0变为1,1变为0

左移位 << 二进制左移,左边(高位端)丢弃,右边补0

右移位 >> 二进制右移,低位丢弃,左边如果最高位为0(正数),补0;是1(负数),补1

  • 25
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值