Python数据类型汇编

本文详细介绍了Python的各类数据类型,包括基本概念如表达式、语句、程序和函数,标识符的关键字和规则,以及基本数据类型如数字、布尔值和空值。深入探讨了字符串的使用,如转义字符、长字符串、格式化字符串(包含str.format()和f-string)以及字符串操作。此外,还涵盖了序列类型,如列表、元组、字典和集合的特性、操作方法和应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.基本概念

1.1表达式

(1)表达式(类似数学公式),是由数字、运算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合
(2)表达式特点
①表达式⼀般仅仅用于计算⼀些结果,不会对程序产⽣实质性的影响
②如果在交互模式中输⼊⼀个表达式,解释器会自动将表达式的结果输出

1.2语句

(1)⼀个语法上自成体系的单位,它由⼀个词或句法上有关连的⼀组词构成
(2)语句的执行⼀般会对程序产生⼀定的影响,在交互模式中不⼀定会输出语句的执行结果
(3)代码块:执行的话,都会执行,不执行的话,一个也不会执行

1.3程序(program)

程序就是由⼀条⼀条的表达式和⼀条⼀条的语句构成的

1.4函数(function)

(1)函数就是⼀种语句,函数专门用来完成特定的功能
(2)函数形如:xxx()
(3)函数的分类:
①内置函数 : 或者内建函数,就是由语法规定存在的函数,这些函数,包含在编译器的运行库中,程序员不必单独书写代码实现它,只需要调用即可。
②自定义函数 : 由程序员自主创建的函数 。
(4)函数的2个要素
①参数()
②返回值

2.标识符

2.1 关键字(保留字)

python⼀些具有特殊功能的标识符,这就是所谓的关键字,是python已经使用了的,所以不允许开发者自己定义和关键字相同名字的标识符

  • 33个保留字在这里插入图片描述

2.2 标识符

(1)开发人员在程序中自定义的⼀些符号和名称。标识符是自己定义的,如变量名、函数名等

(2)组成:由26个英文字母大小写,数字 0-9 ,符号 _ $

(3)标识符的规则:
①标识符中可以包含字母、数字、—,但不能使用数字开头
②不能使用关键字和保留字作为标识符

(4)命名方式
①驼峰命名法
小驼峰式命名法: 第⼀个单词以小写字母开始;第⼆个单词的首字母大写,例如:myName、aDog
大驼峰式命名法: 每⼀个单字的首字母都采用写字母,例如:FirstName、LastName
②下划线命名法
就是用下划线“—”来连接所有的单词,如get-url buuffer-size

3. 基本数据类型

数据类型指的就是变量的值的类型,也就是可以为变量赋哪些值

3.1 数字类型(整数/小数/复数)

  • 整数(int) :
    所有整数 例如 : a = 1 b = 100 c =999_233_345(科学计数法)
    存在溢出

  • 浮点数(float) :
    所有⼩数 例如 a = 1.2 b=6.66

    0.2/0.1先转换为二进制,算完再转为十进制,所以存在如下误差(不确定尾数)
    在这里插入图片描述

#数字比较
print(0.1+0.2==0.3)
#False
#使用round函数去掉不确定尾数(round(x,d)函数:四舍五入,奇进偶不进)
print(round(0.1+0.2,1)==0.3)
#True
  • 复数(complex(实部,虚部))
    ①复数类型表示数学中的复数。复数中有一个基本单位元素j,它被定义为j=\sqrt{-1},叫“虚数单位”。含有虚数单位的数被称为复数。
    ②python语言中,复数可以看作是二元有序实数对(a,b),表示a+bj,a为实部,b为虚部,虚部用后缀“J”或者“j”来表示。(注意:b为1时,1不能省略,即1j表示复数,而j则表示python程序中的一个变量。
    ③复数中的实部和虚部都是浮点类型,对于复数z可以用z.real和z.imag分别获得它的实数部分和虚数部分。
print((1.23e2+1.57j).real,(1.23e2+1.57j).imag,1.23e2+1.57j.imag)
#123.0 1.57 124.57

3.2 布尔值(bool)和空值

  • 布尔值(特殊整型int): 只有2个值⼀个是True(1) ⼀个是False(0)
  • 用作布尔表达式(如用作 if 语句中的条件)时,下面的值都将被解释器视为假(共10种): 0 0.0 0j False " " () [] {} set() None
    其中None是python关键字,代表空,一般用于初始话操作
  • 布尔值 True 和 False 属于类型 bool ,而 bool 与 list 、 str 和 tuple 一样,可用来转换其他的值。
print(1+True)
print(1+False)

3.3 自动类型转换

精度从低到高 bool < int < float < compex
自动类型转换,默认从低精度向高精度进行转化(从低到高)

  • bool+int =int
  • bool+float=float

4 变量

4.1变量的概念?

(1)变量是计算机内存中的⼀块区域,存储规定范围内的值,值可以改变,通俗的说变量就是给数据起个名字。
(2)变量命名规则:
①变量名由字母、数字、下划线组成,要符合标识符的命名规范
②数字不能开头
③不能使用关键字
注意 : 是两个对象相等和两个对象是同⼀个对象是两个概念

不同于其他一些语言, 使用Python变量前必须给它赋值,因为Python变量没有默认值。

4.2变量的运算

变量的运算就是正常的四则运算 ,需要注意的是在运算过程中含有浮点数,那么它返回的就是⼀个浮点数类型(除法运算时结果都是浮点型)

5 字符串(不可变序列)

5.1 什么是字符串

字符串是由数字、字母、下划线组成的⼀串字符,也是一种序列
①Python中用 ⼀对双引号或者⼀对单引号包裹的内容就是字符串
②单引号或者双引号不能混合使⽤

注:Python没有专门用于表示字符的类型,因此一个字符就是只包含一个元素的字符串。

5.11类str

print(str("Hello,\nworld!"))
#Hello,
#world!

5.12函数repr

print(repr("Hello,\nworld!"))
#'Hello,\nworld!'

5.2 转义字符

转义字符是⼀种特殊的字符常量。转义字符以反斜线"\"开头,后跟⼀个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符
① \t 表示制表符
② \n 表示换行符(New line)
③ \ 表示反斜杠

#输出c:\news
#法一
dos='c:\\news'
print(dos)
#法二
dos=r'c:\news'
print(dos)

④ \表示后面跟着的这个字符就是本身字符的意思,不做其他使用
\ ’ 表示 ’
\ ‘’ 表示 ‘’
⑤\r是回车符(Carriage return)
在这里插入图片描述

5.3 长字符串

(1)长字符串又叫做文档字符串,我们使用三重引号来表示⼀个长字符串’’’ ‘’’/’’’’’’ ‘’’’’’
(2)三重引号可以换行,并且会保留字符串中的格式

print('''This is a very long string. It continues here.
And it's not over yet. "Hello, world!"
Still here.''')

注:
常规字符串也可横跨多行。只要在行尾加上反斜杠,反斜杠和换行符将被转义,即被忽略。
例如,如果编写如下代码(各型式效果相同):

#法一
print("Hello, world!")
#法二
print("Hello, \ world!")
#法三
print ('Hello,\
 world')

5.4原始字符串

原始字符串(r+字符串)不以特殊方式处理反斜杠,因此在有些情况下很有用。

print(r'C:\nowhere')
#C:\nowhere
print(r'C:\Program Files\fnord\foo\bar\baz\frozz\bozz')
#C:\Program Files\fnord\foo\bar\baz\frozz\bozz

5.5 格式化字符串

5.5.1格式化字符串 (拼串)

s='good'
print('s='+s)

5.5.2格式化字符串(参数传递)

s='good'
print('s=',s)

5.5.3格式化字符串(占位符)

%s 字符串占位
%f 浮点数占位(%.3f 将值的格式设置为包含3位小数的浮点数)
%d 整数占位

name = "Monty Python"
print("Hello, %s." % name)
#'Hello, Monty Python.'
name = "Monty Python"
age = 100
#利用元组(name, age)将待插入的多个变量包在一起
print("Hello, %s. You are %d years old" % (name, age))
#'Hello, Monty Python. You are 100 years old'

5.5.4格式化字符串 (str.format())

5.5.4.1format()方法的基本使用

<模板字符串>.format(<逗号分隔的参数>)

  • <模板字符串>:一个由字符串和槽组成的字符串,用来控制字符串和变量的显示效果
name = "Eric"
age = 100
#使用str.format(),字符串中待替换的域使用{}表示
print("Hello, {}. You are {}.".format(name, age))
# 'Hello, Eric. You are 100.'
name = "Eric"
age = 100
#通过索引的方式指定format()中哪一个变量和值应该填入哪一个{}
print("Hello, {1}. You are {0}.".format(age, name))
# 'Hello, Eric. You are 100.'
name = "Eric"
age = 100
#通过指定名称的方式表明format()中哪一个变量和值应该填入哪一个{}
print("Hello, {name}. You are {age}.".format(age=age, name=name))
#'Hello, Eric. You are 100.'

待格式化的信息都来自一个字典时:

person = {
   'name': 'Eric', 'age': 100}
"Hello, {name}. You are print({age}.".format(name=person['name'],age=person['age']))
#'Hello, Eric. You are 100.'
person = {
   'name': 'Eric', 'age': 100}
#上面的程序还能利用字典拆包**进一步简化
print("Hello, {name}. You are {age}.".format(**person))
#'Hello, Eric. You are 100.'
#在模板字符串中直接输出大括号
print('{1}曰:{
   {学而时习之,不亦{0}}}。'.format('说乎','孔子'))
#孔子曰:{学而时习之,不亦说乎}。
5.5.4.2format()方法的格式控制

format()方法的槽除了包括参数序号,还可以包括格式控制信息,语法格式如下:

{<参数序号>:<格式控制标记>}

  • 格式控制标记用来控制参数显示时的格式,格式内容如下:
: <填充> <对齐> <宽度> <,> <精度> <类型>
引导符号 用于填充的单个字符 <左对齐 >右对齐 ^居中对齐 槽的设定输出宽度 数字的千位分割符 ①浮点数小数部分的精度②字符串的最大输出长度 ①整数类型b,c,d,o,x,X②浮点数类型e,E,f,%
5.5.4.2.1显示格式规范
  • <填充>:可以修改默认填充字符,填充字符只能有一个
  • < 对齐>:指定左对齐、右对齐和居中,可分别使用 < 、 > 和 ^
  • < 宽度>:指当前槽的设定输出字符宽度,如果该槽参数实际值比宽度设定值大,则使用参数实际长度;如果该值的实际位数小于指定宽度,则按照对齐指定方式在宽度内对齐,默认以空格字符补充
s='Self-discipline is freedom'
#宽度
print('trust yourself,{:30}'.format(s))
#对齐
print('trust yourself,{:^30}'.format(s))
#填充
print('trust yourself,{:*^30}'.format(s))
'''
trust yourself,Self-discipline is freedom
trust yourself,  Self-discipline is freedom
trust yourself,**Self-discipline is freedom**
'''

格式控制标记可以用变量来表示,即用槽来指定所对应的控制标记及数量

#注意用变量来表示格式控制标记时,:前需加0
print('trust yourself,{0:{1}{2}{3}}'.format(s,'*','^',30))
#trust yourself,**Self-discipline is freedom**
5.5.4.2.2数值本身规范
  • <,>:数字类型的千位分隔符。
  • <.精度>:由小数点(.)开头。对于浮点数,精度表示小数点输出的有效位数。对于字符串,精度表示输出的最大长度。此时小数点可以理解为对数值的有效截断;如果小数点保留长度超过应输出长度,以应输出长度为准。
  • <类型>:表示输出整数和浮点数类型的格式规则。
    (1)整数类型,输出格式包括如下6种
    ①b:输出整数的二进制方式;
    ②c:输出整数对应的Unicode字符;
    ③d:输出整数的十进制方式;
    ④o:输出整数的八进制方式;
    ⑤x:输出整数的小写十六进制方式;
    ⑥X:输出整数的大写十六进制方式。
    (2)浮点数类型,输出格式包括如下4种
    ①e:输出浮点数对应的小写字母e的指数形式;
    ②E:输出浮点数对应的大写字母E的指数形式;
    ③f:输出浮点数的标准浮点形式;
    ④%:输出浮点数的百分比形式。
s=12345.67890
print('trust yourself,{:*^30,}'.format(s))
print('trust yourself,{:*^30,.2f}'.format(s))
'''
trust yourself,*********12,345.6789**********
trust yourself,**********12,345.68***********
'''

5.5.5格式化字符串(f-string)~~~f+’{变量}’

适用范围:有变量指向

name = "Eric"
age = 100
print(f"Hello, {name}. You are {age}.")
# 'Hello, Eric. You are 100.'

5.6字符串操作符

操作符 描述
x+y 连接两个字符串x与y
x*n或n*x 复制n次字符串x
x in s 如果x是s的子串,返回True,否则返回False
s='trust yourself'+'Self-discipline is freedom'
print(s[0:14]*2)
print('trust' in s)
'''
输出如下结果:
trust yourselftrust yourself
True
'''

5.7字符串处理函数

python提供了如下对字符串处理的内置函数:

函数 描述
len(x) 返回字符串x的长度 ,也返回其它组合数据类型的元素个数
chr(x) 返回Unicode编码x对应的单字符
ord(x) 返回单字符x表示的Unicode编码
bin(x) 返回整数x对应的二进制数的小写形式字符串
oct(x) 返回整数x对应的八进制数的小写形式字符串
hex(x) 返回整数x对应的十六进制数的小写形式字符串
print(chr(0x025b),chr(0x2708),chr(0x00A5),chr(0x266B))
#ɛ ✈ ¥ ♫

5.8字符串处理方法

  • “方法”是程序设计中的一个专有名词,属于面向对象程序设计领域。在python解释器内部,所有数据类型都采用面向对象方式实现,因此大部分数据类型都有一些处理方法。
  • 方法也是一个函数,只是调用方式不同。函数采用func(x)方式调用,而方法则采用<a>.func(x)形式调用即A.B()形式。

(1)center(字符串居中)

方法 center 通过在两边添加填充字符(默认为空格)字符串居中。

#str.center(width,fillchar)
print("The Middle by Jimmy Eat World".center(39))
#' The Middle by Jimmy Eat World '

print("The Middle by Jimmy Eat World".center(39, "*"))
#'*****The Middle by Jimmy Eat World*****'

附: ljust 、 rjust 和 zfill 。

(2)find(子串索引)

方法 find 在字符串中查找子串。如果找到,就返回子串的第一个字符的索引,否则返回 -1 。

print('With a moo-moo here, and a moo-moo there'.find('moo'))
#7

title = "Monty Python's Flying Circus"
print(title.find('Python
PeachPy 是一个用于编写高性能汇编内核的 Python 框架,可在汇编中编写模块。 它自动化了一些细节,并允许使用 Python 生成重复的汇编代码序列。PeachPy 旨在简化编写优化的汇编内核,同时保留传统的汇编所有优化机会。一些特性:用于 Windows,Unix 和 Golang 程序集的通用汇编语法.PeachPy 可以直接生成 ELF,MS COFF 和 Mach-O 对象文件以及 Golang 工具链的汇编列表自动适应不同的调用约定和 ABIs用于不同平台的功能可以从汇编相同的源生成支持 Microsoft x64 ABI, System V x86-64 ABI (Linux 和 OS X), Linux x32 ABI, Native Client x86-64 SFI ABI, Golang AMD64 ABI, Golang AMD64p32 ABI自动分配寄存器PeachPy 是灵活的,而且允许在同一代码中混合自动分配寄存器和硬编码寄存器汇编编程中常规任务的自动化:函数 prolog 和 epilog 由 PeachPy 生成数据常量的重复数据删除 (e.g. Constant.float32x4(1.0))分析在函数中使用的 ISA 扩展支持 x86-64 指令,最高可达 AVX-512 和 SHA包含 3dnow! , XOP, FMA3, FMA4, TBM 和 BMI2.不包括 x87 FPU 和大多数系统指令使用自动生成的测试 auto-generated tests 进行严格测试,以生成与 binutils 相同的操作码自动生成元数据文件具有模块依赖性的Makefile (-MMD 和-MF 选项)C 头文件生成的函数JSON 格式的函数元数据基于 Python 的元编程和代码生成多个指令流的复用(有助于软件流水线)兼容 Python 2 和 Python 3,CPython 和 PyPy在线 DEMO: PeachPy.IO 标签:PeachPy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值