Python教程

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

本文主要是介绍python的基础,数据类型,运算,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

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

目录
  • 一:python基础
    • 1.1 编程语言python的分类
    • 1.2 python的应用领域
    • 1.3 python版本2.0 和3.0 的区别
      • 1. print 函数代替了print语句
      • 2. python3.x 版本默认使用utf-8编码
      • 3. 除法运算符/
      • 4 异常处理
      • 5 八进制字面量表示
      • 6 不等于运算符
      • 7 数据类型
    • 1.4 python程序的执行过程
  • 二: python的规范
    • 2.1 python的注释
    • 2.2 python中使用缩进来表示代码块
    • 2.3 python中的语句换行
  • 三:python中的变量和赋值
    • 3.1 python 中变量的构成和内存模型
    • 3.2 python的变量类型
      • 3.2.1 数值型
      • 3.2.2 非数值型
      • 3.2.3 复杂类型
    • 3.3 标识符(变量名)的命名规则
    • 3.4 类型转换
  • 四 运算符
    • 4.1 算术运算符
    • 4.2 赋值运算符
    • 4.3 复合赋值运算符
    • 4.4 比较运算符
    • 4.5 逻辑运算符
    • 4.6 成员运算符
    • 4.7 位运算符
      • (1) 按位右移,按位左移
      • (2) 按位与;按位或
      • (3) 按位异或
      • (4) 按位取反
    • 4.8 符号运算的优先级

一: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的基础,数据类型,运算的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!