Python基础汇编

本文仅是个人学习摘录所用,摘录自菜鸟教程

1.基础语法

1.1编码

默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。也可以为源码文件指定不同的编码:

# -*- coding: cp-1252 -*-

1.2多行语句、多个变量赋值

可以使用反斜杠()来实现多行语句,在 [], {}, 或 () 中的多行语句,不需要使用反斜杠()

a = 1+\
    2+\
    3
a = b = c = 1
a, b, c = 1, 2, "cat"

1.3标准数据类型

Python3 的六个标准数据类型中:
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)

1.4传递引用

在变量保存可变数据类型的值时,例如列表或字典,python变量就使用引用,引用是一个值,指向内存存储的数据,对于不可变的数据类型的值,python变量就保存值本身。

1.5基本操作符

1、数学操作符

符号求值
2**38
22%86
22//82
22/82.75
3*515
+
-

优先级:

  • **(先求值)
  • *、/、//、%(再求值,从左到右)
  • +、-(最后求值,从左到右)

2、字符串连接和复制

  • ‘Alice’ + ‘Bob’——‘AliceBob’
  • ‘Alice’ * 5——‘AliceAliceAliceAliceAlice’

3、布尔值、比较操作符、布尔操作符

  • 布尔值:True、False
  • 比较操作符:== 等于 != 不等于 <小于 >大于 <=小于等于 >=大于等于。
    比较操作符根据提供的值,求值为True或False
  • 布尔操作符:and、or、not
  • 优先级:not——and——or
  • 0、0.0、’’(空字符串)在条件中,也会被认为是False,其他被认为是True
    4、赋值操作符
    =、+=、-=、*=、/=、%= 、**=、//=、:=
    +=:可完成字符串和列表的连接
    *=:可完成字符串和列表的复制
    := ( 海象运算符,可在表达式内部为变量赋值)
    5、位运算符
    按位运算符是把数字看作二进制来进行计算的
运算符描述
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
^按位异或运算符:当两对应的二进位相异时,结果为1
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。~x 类似于 -x-1
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
>>右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数
a = 60            # 60 = 0011 1100 
b = 13            # 13 = 0000 1101 
c = 0
 
c = a & b;        # 12 = 0000 1100
print ("1 - c 的值为:", c)
 1 - c 的值为: 12
c = a | b;        # 61 = 0011 1101 
print ("2 - c 的值为:", c)
 2 - c 的值为: 61
c = a ^ b;        # 49 = 0011 0001
print ("3 - c 的值为:", c)
 3 - c 的值为: 49
c = ~a;           # -61 = 1100 0011
print ("4 - c 的值为:", c)
 4 - c 的值为: -61
c = a << 2;       # 240 = 1111 0000
print ("5 - c 的值为:", c)
 5 - c 的值为: 240
c = a >> 2;       # 15 = 0000 1111
print ("6 - c 的值为:", c)
6 - c 的值为: 15

6、成员运算符
in : 如果在指定的序列中找到值返回 True,否则返回 False
not in : 如果在指定的序列中没有找到值返回 True,否则返回 False
6、身份运算符
is : 判断两个标识符是不是引用自一个对象,如果引用的是同一个对象则返回 True,否则返回 False
is not : 判断两个标识符是不是引用自不同对象,如果引用的不是同一个对象则返回结果 True,否则返回 False。

1.6基本函数/语句

1、type() 函数可以用来查询变量所指的对象类型
2、del语句删除一些对象引用,单个或多个对象

del var_a, var_b
del var1[,var2[,var3[....,varN]]]

3、数据类型转换传入其他数据类型,得到相应类型的值

函数属性
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 转换为一个列表
set(s)转换为可变集合
dict(d)创建一个字典。d 必须是一个 (key, value)元组序列。
frozenset(s)转换为不可变集合
chr(x)将一个整数转换为一个字符
ord(x)将一个字符转换为它的整数值
hex(x)将一个整数转换为一个十六进制字符串
oct(x)将一个整数转换为一个八进制字符串

4、len()接受一个字符串/列表/元组/字典,求字符串中字符/列表元素/元组元素/字典键值对的数目
5、elif语句:顺序很重,执行一次True,后面的elif语句不再执行
6、break、continue语句:break跳出循环,continue回到循环开始处,重新对循环条件求值
7、range():range(10, -1, -1)第一个参数是开始的值,第二个参数是上限,但不包含它,第三个是增加的值,可以是正数,也可以是负数,返回值是序列值(类似列表)
8、print():关键字end、sep
如果字典本身包含嵌套的列表或字典,导入pprint模块,使用pprint()和pformat()函数,会比print()输出结果更干净,pprint()显示在屏幕,pformat()用于保存为文本的字符串

 print('Hello', end='')
 print('World')
 >HelloWorld
 print('cats', 'dogs', 'mice')
 >cats dogs mice
 print('cats', 'dogs', 'mice', sep=',')
 >cats,dogs,mice

9、global语句:在函数中,使用“global+全局变量”,将会创建全局变量,而不是创建局部变量
10、try, except语句:若执行try出错ZeroDivisionError,执行except,否只执行try

try:
    print(spam[2])
except ZeroDivisionError:
    print('Error:Invalid argument.')

2.Set(集合)

可以使用大括号 { } 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
基本功能是进行成员关系测试和删除重复元素。

sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
print(sites)   # 输出集合,重复的元素被自动去掉
# 成员测试
if 'Runoob' in sites :
    print('Runoob 在集合中')
else :
    print('Runoob 不在集合中')
# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')
print(a)
{'d', 'b', 'c', 'r', 'a'}
print(b)
{'c', 'z', 'l', 'm', 'a'}
print(a - b)     # a 和 b 的差集
{'r', 'b', 'd'}
print(a | b)     # a 和 b 的并集
{'b', 'c', 'a', 'z', 'm', 'r', 'l', 'd'}
print(a & b)     # a 和 b 的交集
{'c', 'a'}
print(a ^ b)     # a 和 b 中不同时存在的元素
{'z', 'b', 'm', 'r', 'l', 'd'}

3.数字数据类型

  1. 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。
  2. Python支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示,复数的实部a和虚部b都是浮点型。

1. 数学函数

  1. 内置函数及math模块
函数返回值 ( 描述 )
abs(x)返回数字的绝对值,如abs(-10) 返回 10
ceil(x)返回数字的上入整数,如math.ceil(4.1) 返回 5
(x>y)-(x<y)如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
exp(x)返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
fabs(x)返回数字的绝对值,如math.fabs(-10) 返回10.0
floor(x)返回数字的下舍整数,如math.floor(4.9)返回 4
log(x)返回指数,如math.log(math.e)返回1.0,math.log(100,10)返回2.0
log10(x)返回以10为基数的x的对数,如math.log10(100)返回 2.0
max(x1, x2,…)返回给定参数的最大值,参数可以为序列。
min(x1, x2,…)返回给定参数的最小值,参数可以为序列。
modf(x)返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
pow(x, y)x**y 运算后的值。
round(x [,n])返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。四舍六入,应注意尾数为5的数值,保留值将保留到离上一位更近的一端
sqrt(x)返回数字x的平方根。math.sqrt()

round(2.675, 2) 的结果,不论我们从python2还是3来看,结果都应该是2.68的,结果它偏偏是2.67。在机器中浮点数不一定能精确表达(2.67499999…),因为换算成一串1和0后可能是无限位数的,机器已经做出了截断处理。那么在机器中保存的2.675这个数字就比实际数字要小那么一点点。这一点点就导致了它离2.67要更近一点点,所以保留两位小数时就近似到了2.67。
除非对精确度没什么要求,否则尽量避开用round()函数。近似计算我们还有其他的选择:

  • 使用math模块中的一些函数,比如math.ceiling(天花板除法)。
  • python自带整除,python2中是/,3中是//,还有div函数。 字符串格式化可以做截断使用,例如 “%.2f” % value(保留两位小数并变成字符串……如果还想用浮点数请披上float()的外衣)。
  • 当然,对浮点数精度要求如果很高的话,请用decimal模块。

2. 随机数函数

  1. random模块
函数描述
choice(seq)从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
randrange ([start,] stop [,step])从指定范围内,stop不包含在范围内,按指定基数step递增的集合中获取一个随机数,基数默认值为 1
random()随机生成下一个实数,它在[0,1)范围内。
seed([x])改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
shuffle(lst)将序列的所有元素随机排序
uniform(x, y)随机生成下一个实数,它在[x,y]范围内。

3. 三角函数

  1. random模块
函数描述
acos(x)返回x的反余弦弧度值。
asin(x)返回x的反正弦弧度值。
atan(x)返回x的反正切弧度值。
atan2(y, x)返回给定的 X 及 Y 坐标值的反正切值。
cos(x)返回x的弧度的余弦值。
hypot(x, y)返回欧几里德范数 sqrt(xx + yy)。
sin(x)返回的x弧度的正弦值。
tan(x)返回x弧度的正切值。
degrees(x)将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
radians(x)将角度转换为弧度

4. 数学常量
pi :数学常量 pi(圆周率,一般以π来表示)
e :数学常量 e,e即自然常数(自然常数)。

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、付费专栏及课程。

余额充值