ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python的基础,数据类型,运算

2022-01-12 22:03:53  阅读:156  来源: 互联网

标签:运算 python 数据类型 取反 运算符 按位 print True


python的基础,数据类型,运算

目录

一:python基础

1.1 编程语言python的分类

python 是一种面向对象的解释型编程语言。对于python来说,一切皆对象。

所以,在python中,定义变量时,无需声明数据类型。对于解释型语言,在执行时是逐行执行,读取一条,翻译一条,执行一条。


1.2 python的应用领域

  • web开发
  • 操作系统管理,服务器运维自动化脚本
  • 科学计算
  • 桌面软件开发
  • 服务器软件(网络软件)
  • 游戏

1.3 python版本2.0 和3.0 的区别

1. print 函数代替了print语句

在python2.x版本中使用的是print语句。而在python3.x版本中,print函数代替了print语句

# 在python 2.x版本中,使用print语句
>>>print(3,4)
(3,4)

# 在python3.x版本中,使用的print函数
>>>print(3,4)
3 4

2. python3.x 版本默认使用utf-8编码

在python2.x版本中,使用的是ASCII编码。而在python3.x版本中,则默认使用的utf-8编码


3. 除法运算符/

python 2中,除法规则时整数相除的结果是一个整数,把小数部分完全忽略。浮点数除法,会保留小数点的部分,得到一个浮点数的结果。

# python2中的除法
>>>1/2
0
>>>1.0/2.0
0.5

python3 中,除法不再这么做。对于整数之间的相除,结果也会是浮点数

# python3中的除法
>>> 1/2
0.5

4 异常处理

1)Python2中捕获异常的语法为except exc, var,Python3中捕获异常的语法为except exc as var,使用语法except (exc1, exc2) as var可以同时捕获多种类别的异常。 Python 2.6已经支持这两种语法。

2)在Python2时代,所有类型的对象都是可以被直接抛出的,在Python3时代,只有继承自BaseException的对象才可以被抛出。

3)Python2中触发异常可以用raise IOError, "file error"或raise IOError("file error")两种方式,Python3中触发异常只能用raise IOError("file error”)。

4)异常StandardError 被Python3废弃,统一使用Exception

5)在Python2时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情,在Python3中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。


5 八进制字面量表示

Python3中八进制数必须写成0o777,原来的形式0777不能用了;二进制必须写成0b111。

新增了一个bin()函数用于将一个整数转换成二进制字串。 Python 2.6已经支持这两种语法。

在Python3中,表示八进制字面量的方式只有一种,就是0o1000。

# python2
>>> 0o1000 
512 
>>> 01000 
512 

# python3
>>> 0o1000 
512 
>>> 01000 
  File "<stdin>", line 1 
    01000 
        ^ 
SyntaxError: invalid token 

6 不等于运算符

Python2中不等于有两种写法 != 和 <>

Python3中去掉了<>, 只有!=一种写法

# python2
>>> 1!=2
True
>>> 1<>2
True

# python3中不支持<>
>>> 1!=2
True
>>>1<>2
   File "<stdin>", line 1
   1<>2
     ^
SyntaxError: invalid syntax

7 数据类型

python2 中有long类型。没有bytes类型

python3 中没哟long类型,只有int类型。新增了bytes类型。


1.4 python程序的执行过程

(1)python会将源代码m.py 编译成字节码m.pyc

(2)把编译好的字节码转发到python虚拟机PVM中执行(一条一条的执行字节码的指令)



二: python的规范

2.1 python的注释

# python中使用#号进行单行注释,也可以跟在代码后面,对同行的后续内容进行注释
'''
python中可以使用三单引号,或者三双引号
对多行内容进行注释
'''

image-20220112164142522


2.2 python中使用缩进来表示代码块

python中使用缩进和冒号:来区分代码块之间的层次。

在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。

通常情况下,4个空格长度为一个缩进量。

image-20220112164755049


2.3 python中的语句换行

(1) 在该行末尾加上续行符 " \"(即,空格+\)

test='a' \
'b' \
    'c'
print(test)
#输出结果为abc

(2) 加上括号,() {} []中不需要特别加换行符

我们可以根据Python会将圆括号、中括号和花括号中的行隐式连接起来的这个特点,将过长的语句换显示,并在语句外侧添加一对圆括号

test2=('a'
'b')
print(test2)
#输出结果为ab

(3) 使用三引号进行跨行输入

test3='''
ab
cd
ef
'''
print(test3)

#输出结果为
ab
cd
ef


三:python中的变量和赋值

3.1 python 中变量的构成和内存模型

变量的构成:

  • 变量名: 方便查找
  • 变量值: 实际要存储的内容
  • 变量类型: 限制能存储的内容

内存模型:

  • 堆内存: 实际存储区域
  • 栈内存: 存储区域(有限的信息,主要目的是方便查找)

3.2 python的变量类型

在python中,变量的类型实际是由变量的值定义的。


3.2.1 数值型

python中数值类型的有:

  • 整型(int)
    • 整数类型(int)简称整型,用于表示整数
  • 浮点型(float)
    • 用于表示实数
    • 浮点型的字面值可以用十进制或者科学计数法表示
  • 复数(complex)
    • 用于表示数学中的复数,如5+3j
    • 复数有实数部分和虚数部分构成,表示为read+imagj或real+imagJ
    • 复数的实数real和虚数imag都是浮点型
  • 布尔值(bool)
    • 是一种特殊的整型
    • 布尔值数据只有两个取值:True和False,分别对应整型的1和0
a=1
print(type(a))

b=1.5
print(type(b))

c=1+2j
print(type(c))

d=True
print(type(d))

#输出结果依次为
<class 'int'>        # 整型
<class 'float'>      # 浮点型
<class 'complex'>    # 复数
<class 'bool'>       # 布尔值型

3.2.2 非数值型

python中非数值型的有:

  • 字符串型:str
a="abc"
print(type(a))

#输出结果为:
<class 'str'>    # 字符串型

3.2.3 复杂类型

  • 列表: list
  • 元祖: turple
  • 字典: dict
arr=[1,2,3,"abc"]
print(type(arr))

tpl=(1,"abc",1.56)
print(type(tpl))

dic={"name":"zhangsan","age":18}
print(type(dic))


# 输出结果为
<class 'list'>    # 列表
<class 'tuple'>   # 元祖
<class 'dict'>    # 字典

3.3 标识符(变量名)的命名规则

  • 标识符由字母,下划线,数字组成,且数字不能为开头
  • 标识符区分大小写
  • 标识符不能使用关键字
# 查看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.4 类型转换

转换前提: 类型间要可以相互转换,转换的内容能被接收.

(1)使用int, 将浮点型转换为整型,截取整数部分,小数部分被直接舍弃,没有四舍五入

result=int(1.9)
print(type(result))
print(result)

#输出结果:
<class 'int'>   #类型为整型
1      #结果,只截取了整数部分



(2) 使用str函数,将类型转换为 字符串类型

a=str(1.4)
print(type(a))
print(a)

#输出结果为:
<class 'str'>
1.4

(3) 使用float 函数,将类型转换为浮点

a=float("1.4")
print(type(a))
print(a)

#输出结果为:
<class 'float'>
1.4

注:如果想将字符串“1.4” 转换为整型,无法直接转换。需要先转换为浮点型,再转换为整型


(4) 常用的数据类型转换

函数 说明
int(x [,base ]) 将x转换为一个整数
long(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 ) 将一个整数转换为一个八进制字符串



四 运算符

4.1 算术运算符

运算符 相关说明
+ 加:两个数相加
- 减:负数,或者一个数减去另一个数
* 乘:两个数相乘或返回一个被重复若干次的字符串
/ 除: a 除以b
% 取余: 返回除法的余数
** 幂:返回a的b次幂
// 取整除:返回商的整数部分
a=5
b=2

print(a+b)   #加法运算 
print(a-b)   #减法运算 
print(a*b)   #乘法运算 
print(a/b)   #除法运算 
print(a%b)   #取余运算,a除以b,去余数 
print(a**b)  #幂运算,a的b次方
print(a//b)  #取整除,a除以b,取商的整数部分

#输出结果为:
7
3
10
2.5
1
25
2

4.2 赋值运算符

赋值运算符只有一个,即= , 它的作用是将等号右边的值赋给左边。

#多个变量赋同一个值
x=y=z=1
print(x,y,z)
#输出结果为:
1 1 1

#将多个值赋给多个变量
a,b=3,4
print(a,b)
#其输出结果为:
3 4


4.3 复合赋值运算符

运算符 相关说明 实例
+= 加法赋值运算符 c+=a等效于c=c+a
-= 减法赋值运算符 c-=a 等效于 c=c-a
*= 乘法赋值运算符 c*=a 等效于 c=c*a
/= 除法赋值运算符 c/=a 等效于 c=c/a
%= 取模赋值运算符 c%=a 等效于c=c%a
**= 幂赋值运算符 c**=a等效于 c=c**a
//= 整除赋值运算符 c//=a 等效于c=c//a
a=5
b=2
c=6
a+=b    # 等效于a=a+b
print(a)
c**=b   # 等效于c=c**b
print(c)

#输出结果为
7
36

4.4 比较运算符

运算符 相关说明
== 检查两个操作的数的值是否想等
!= 检查两个操作数的值是否不相等
> 检查左边操作数的值是否大于右边操作数的值
< 检查左边操作数的值是否小于右边操作数的值
>= 检查左边操作数的值是否大于或者等于右边操作数的值
<= 检查左边操作数的值是否小于或者等于右边操作数的值
a=5
b=6

print(a==b)    # False
print(a!=b)    # True
print(a<b)     # True
print(a<=b)    # True
print(a>b)     # False
print(a>=b)    # False

4.5 逻辑运算符

运算符 逻辑表达式 描述
and x and y 与。 表达式 x,y都为True,则结果为才为True
or x or y 或。 表达式x, y 都为False,则结果才为False
not not x 非。 若表达式x为True,则结果为False
a=5
b=2

result1=a<=b   # 次表达式,结果为False
result2=a!=b   # 此表达式,结果为True

#输出表达式result1和 result2 的逻辑与结果
print(result1 and result2)

#输出表达式 result1和result2 的逻辑或结果
print(result1 or result2)

#输出表达式 result1 的逻辑非结果
print(not result1)

#输出结果为:
False
True
True

4.6 成员运算符

运算符 描述 示例
in 如果在指定的序列中找到值,则返回True,否则返回False x在y序列中。x in y 返回True
not in 如果在指定的序列中未找到值,则返回True,否则返回False x 不在 y序列中。 x not in y 返回True
arr=[1,2,3]

print(1 in arr)  # 1 是否在 arr中
print(5 in arr)  # 5 是否在 arr中
 
print(1 not in arr)  # 1 是否不在arr中
print(5 not in arr)  # 5 是否不在arr中

#输出结果为:
True
False
False
True


4.7 位运算符

位运算,是建立在二进制的基础上

符号 描述 运算规则
& 两个位都为1时,结果才为1
| 两个位都为0时,结果才为0
^ 异或 两个位相同为0,相异为1
~ 取反 0变1,1变0(注意,符号也要取反)
<< 左移 各二进位全部左移若干位,高位丢弃,低位补0
>> 右移 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移)

(1) 按位右移,按位左移

a=7
print(a>>1)  # 按位右移1位。
print(a<<1)  # 按位左移1位。

#输出结果:
3
14

'''
7的二进制写法为:0111
7右移一位,得到:0011 (移出位的丢弃,左边移出的空位补零),即为3
7左移一位,得到:1110 (高位丢弃,低位补零),即为 14
'''

(2) 按位与;按位或

按位与是指参与运算的两个数个对应的二进位进行“与”的操作。只有对应的两个二进位都是1时,结果位就为1,否则结果位为0

按位或是指参与运算的两个数个对应的二进位进行“或”的操作。只有对应的两个二进位不同时,结果位为1,否则为0

a=9
b=5

print(a&b)
print(a|b)
#输出结果为
1
13

'''
1001   (9)
0101   (5)
按位”与“获得
0001   (1)
按位“或”获得
1101   (13)
'''

(3) 按位异或

按位异或是指参与运算的两个数对饮二进制位进行比较,如一个位为1,另一个位为0,则结果位为1,否则结果为0

a=9
b=5

print(a^b)

#输出结果为:
12

'''
1001  (9)
0101  (5)
按位异或
1100  (12)
'''

(4) 按位取反

按位取反,就是将二进位的每一位进行取反(符号也要取反)

0取反为1,1取反为0

补码是属于计算机三种机械数的一种,机械数有原码、反码、补码。

  如果是正数,那么原码 = 反码 = 补码,正数的符号位为0(如 0 1001,这里的0就是符号位,负数类似);

  如果是负数,那么反码就是把原码的每一位取反,也就是0变成1,1变成0;补码就是在反码的基础上,末位+1,负数的符号位为1。

​ 负数的补码按原反补规则,即先变为反码,再把反码末位+1,获得补码

a=9
print(~9)

#输出结果为
-10

'''
1001   (9)
反码:0 1001   (第一个0为正数符号位)
补码: 0 1001
按位取反: 1 0110 (第一个1位负数符号位,此时变为负数)

对1 0110 进行补码,按照负数原反补码规则,先反码,再将反码末位+1,获得补码
先反码:1 1001
再反码末位+1获得补码: 1 1010
转为为十进制数: -10
'''
#总结:
~x=-(x+1)

4.8 符号运算的优先级

运算符说明 Python运算符 优先级 结合性
小括号 ( ) 19
索引运算符 x[i] 或 x[i1: i2 [:i3]] 18
属性访问 x.attribute 17
乘方 ** 16
按位取反 ~ 15
符号运算符 +(正号)、-(负号) 14
乘除 *、/、//、% 13
加减 +、- 12
位移 >>、<< 11
按位与 & 10
按位异或 ^ 9
按位或 | 8
比较运算符 ==、!=、>、>=、<、<= 7
is 运算符 is、is not 6
in 运算符 in、not in 5
逻辑非 not 4
逻辑与 and 3
逻辑或 or 2
逗号运算符 exp1, exp2 1

标签:运算,python,数据类型,取反,运算符,按位,print,True
来源: https://www.cnblogs.com/zhijiyiyu/p/15795521.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有