1 运算符与数据类型
1.1 运算符和表达式
1.1.1 算数运算符
运算符 | 描述 | 示例 |
---|---|---|
+ | 加,两个数相加 | 3+5=8 |
- | 减,得到负数或是一个数减去另一个数 | 5-3=2 |
* | 乘,两个数相乘或是返回一个被重复若干次的字符串 | 2*3=6 |
/ | 除,x除以y | 4/2=2 |
% | 取模,返回除法的余数 | 5%3=2 |
** | 求幂,返回x的y次幂 | 2**3=8 |
// | 取整除,返回商的整数部分(向下取整) | 21//10=2 |
1.1.2 比较运算符
运算符 | 描述 | 示例 |
---|---|---|
== | 等于,比较对象是否相等 | (2==3)返回false |
!= | 不等于,比较两个对象是否不相等 | (2!=3)返回true |
> | 大于,返回x是否大于y | (2>3)返回false |
< | 大于,返回x是否小于y | (2<3)返回true |
>= | 大于等于,返回x是否大于等于y | (2>=3)返回false |
<= | 小于等于,返回x是否小于等于y | (2<=3)返回true |
1.1.3 赋值运算符
运算符 | 描述 | 示例 |
---|---|---|
= | 简单的赋值运算符 | c=a+b将a+b的运算结果赋值为c |
+= | 加法赋值运算符 | 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 |
1.1.4 位移运算符
a = 0011 1100
b = 0000 1101
运算符 | 描述 | 示例 |
---|---|---|
& | 按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | (a&b)输出结果12,二进制解释:00001100 |
| | 按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1 | (a|b)输出结果61,二进制解释:00111101 |
^ | 按位异或运算符:当两对应的二进位相异时,结果为1 | (a^b)输出结果49,二进制解释:00110001 |
~ | 按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 | (~a)输出结果-61,二进制解释:11000011,在一个有符号二进制数的补码形式 |
<< | 左移动运算符:运算数的各二进位全部左移若干位,由<<右边的数字指定了移动的位数,高位丢弃,低位补0 | a<<2输出结果240,二进制解释:11110000 |
>> | 右移动运算符:运算数的各二进位全部右移若干位,由>>左边的数字指定了移动的位数,地位丢弃,高位补0 | a>>2输出结果15,二进制解释:00001111 |
1.1.5 逻辑运算符
x = 10
y = 20
运算符 | 描述 | 示例 |
---|---|---|
and | x and y布尔"与",如果x为False,x and y返回False,否则它返回y的计算值 | (x and y)返回20 |
or | x or y布尔"或",如果x是非0,它返回x的值,否则它返回y的计算值 | (x or y)返回10 |
not | not x布尔"非",如果x为True,返回False如果x为False,它返回True | not(x and y)返回False |
1.1.6 身份运算符
运算符 | 描述 | 示例 |
---|---|---|
is | is是判断两个标识符是不是引用自一个对象 | x is y,类似id(x) == id(y),如果引用的是同一个对象则返回True,否则返回False |
is not | is not是判断两个标识符是不是引用自不同对象 | x is not y,类似id(a )!= id(b)。如果引用的不是同一个对象则返回结果True,否则返回False |
1.1.7 成员运算符
运算符 | 描述 | 示例 |
---|---|---|
in | 如果在指定的序列中找到值返回True,否则返回False | x在y序列中,如果x在y序列中返回True |
not in | 如果在指定的序列中没有找到值返回True,否则返回False | x不在y序列中,如果x不在y序列中返回True |
1.1.8 运算优先运算符
运算符 | 描述 |
---|---|
** | 指数(最高优先级) |
~ + - | 按位翻转,一元加号和减号(最后两个的方法名为+@和-@) |
* / % // | 乘,除,取模和取整除 |
+ - | 加法减法 |
>> << | 右移,左移运算符 |
& | 位’AND’ |
^ | | 位运算符 |
<= < > >= | 比较运算符 |
== != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is is not | 身份运算符 |
in not in | 成员运算符 |
not and or | 逻辑运算符 |
1.2 数据类型
1.2.1 字符串
a、使用单引号(’)
用单引号括起来表示字符串
str = 'this is string'
b、使用双引号(")
双引号中的字符串与单引号中的字符串用法完全相同
str = "this is string"
c、使用三引号(’’’)
利用三引号,表示多行的字符串,也可以在三引号中自由的使用单引号和双引号
str = '''this is string
this is "python string"
this is 'string' '''
1.2.2 布尔类型
True 真 False假
bool = False
bool = True
1.2.3 整数
包括正整形、0、负整数。
也包括二进制整形、八进制整形、十六进制整形。
int = 20
int = 0b011
int = 0o11
int = 0xFF
1.2.4 浮点数
有两种表现形式:
方式一:
float = 2.3
方式二(科学计数法):
float = 4.13e-3
1.2.5 复数
有两种表现形式:
方式一:
复数:实数 + 虚数 两部分构成的
plural = 5 + 6j
方式二:
complex(实数,虚数) 注意:这种表达方式虚数不能加j
plural = complex(14,2)
1.2.6 集合
集合是唯一、无序、不可改变的。
setvar = {} #数据类型显示是一个dict字典
setvar = set() #强制转换成一个空集合的数据类型
1.2.7 列表
列表是有序、可变、可直接修改的。
x = []
x = list()
1.2.8 元组
元祖是有序、不可改变、不可添加也不可删除的。
x = ()
x = tuple()
注意:创建一个对象的元组(逗号不能少):
x = (1,)
1.2.9 字典
字典是无序、长度不可变、可添加也可删除的。
x = {}
x = dict()
2 变量和转义字符
2.1 变量
变量是内存中命名的储存位置,其值可以动态变化。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。
为了区分Python语句中不同的变量,需要对每个变量进行命名,该名称即为标识符。
标识符命名规范:
- 标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。
- 标识符不能和 Python 中的保留字相同。
- Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符。
- 标识符区分大小写,Num和num是不同的。
- Python 语言中,以下划线开头的标识符有特殊含义,例如:
“_”单下划线代表不能直接访问的类属性。
“__”双下划线代表私有方法,表示类的私有成员。
以双下划线作为开头和结尾的标识符(如 __init__),是专用标识符。
2.2 转义字符
需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符。常用的如下表:
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\’ | 单引号 |
\" | 双引号 |
\n | 换行 |
\r | 回车 |
\f | 换页 |
3 函数
3.1 函数调用表达式
定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。
这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。
def functionName(parm):
"打印任何传入的字符串"
return parm
# 调用函数
functionName("我要调用用户自定义函数!")
3.2 Python内置函数
如abs() ,divmod() ,input() ,open() ,staticmethod(),all() ,enumerate() ,int() ,ord() ,str(),any() ,eval() ,isinstance() ,pow() ,sum()等系统自带的函数。
详情查看官方文档或者菜鸟教程等。
3.3 自定义函数
你可以定义一个由自己想要功能的函数,以下是简单的规则:
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def functionname( parameters ):
"函数_文档字符串"
function_suite
return [expression]
3.4 模块
Python模块是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块是Python中一个非常重要的概念,他是最高级别的组织单元,他能将程序代码和函数封装以便重用。在使用过程中,用户可以调用Python标准库中的模块,也能下载和使用第三方模块。
def print_func( par ):
print "Hello : ", par
return
模块的引入
模块定义好后,我们可以使用 import 语句来引入模块,语法如下:
import 模块名
比如要引用模块 math,就可以在文件最开始的地方用 import math 来引入。在调用 math 模块中的函数时,必须这样引用:
模块名.函数名
from…import 语句
如果模块下有多个函数时,使用Python的 from 语句让你从模块中导入一个指定的函数到当前命名空间中。例如,要导入模块 fib 的 fibonacci 函数,使用如下语句:
from fib import fibonacci
这个声明不会把整个 fib 模块导入到当前的命名空间中,它只会将 fib 里的 fibonacci 单个引入到执行这个声明的模块的全局符号表。
from…import * 语句
此语句提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
例如我们想一次性引入 math 模块中所有的东西,语句如下:
from math import *
4 语句
4.1 条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
Python 编程中 if 语句用于控制程序的执行,基本形式为:
if 判断条件:
执行语句……
else:
执行语句……
4.2 循环语句
1、while循环:
Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 判断条件(condition):
执行语句(statements)……
执行语句可以是单个语句或语句块。判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。
当判断条件假 false 时,循环结束。
2、for循环:
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。其基本形式为:
for iterating_var in sequence:
statements(s)
3、嵌套循环:
Python 语言允许在一个循环体里面嵌入另一个循环。
Python for 循环嵌套语法:
for iterating_var in sequence:
for iterating_var in sequence:
statements(s)
statements(s)
Python while 循环嵌套语法:
while expression:
while expression:
statement(s)
statement(s)
你可以在循环体内嵌入其他的循环体,如在while循环中可以嵌入for循环, 反之,你可以在for循环中嵌入while循环。
4.3 循环控制语句
1、break语句:
break语句用于提前终止当前循环。放弃循环后,直接执行循环块下一个语句。
break语句可以在while和for循环中使用。
如果使用嵌套循环,则break语句将停止执行最内层循环,并在块之后开始执行代码的下一行。
Python语言 break 语句语法:
break
2、continue语句:
continue语句将控制返回到当前循环的开头。当遇到continue语句时,循环将不执行当前迭代中剩余的语句,而直接下一次迭代开始。
continue语句可以在while和for循环中使用。
Python 语言 continue 语句语法格式如下:
continue
3、pass语句:pass是空语句,是为了保持程序结构的完整性。
当因为语法需要但不希望执行任何命令或代码时,则可以使用pass语句。
pass语句是一个空操作; 执行时没有任何反应。
pass语句对于代码最终会出现但现在不用写入,即存根的地方也很有用。
Python 语言 pass 语句语法格式如下:
pass
5 类和对象
类(class)抽象的概念,比如说人类、鸟类、水果、是一个总的称呼,没有具体到某个物体。
对象(object,指具体实例)。
类定义的语法:
class 类名:
执行语句
类变量
类方法
类最重要的两部分就是类变量和类方法,类成员之间的可以相互调用。
在实例方法中有一个特别的方法 :__init__ ,这个方法被称为构造方法 。 构造方法用于构造该类的对象, Python 通过调用构造方法返回该类的对象 。 python提供一个功能就是:若开发者没有定义构造函数,python会自动提供一个只包含self参数默认的构造方法。
在__init__构造函数里面的是实例变量,程序可以任何位置(类里面或者类外面)增加实例变量,删除则用del语句。
例如,可以定义一个Coordinate类,用于计算两个坐标点之间的距离,代码如下:
class Coordinate():
def __init__(self, x, y):
self.x = x
self.y = y
def distance(self, other):
x_diiff_sq = (self.x - other.x) ** 2
y_diiff_sq = (self.y - other.y) ** 2
return (x_diiff_sq + y_diiff_sq) ** 0.5
上面的 Coordinate类定义了 一个构造方法,该构造方法只是方法名比较特殊:__init__ ,该方法的第一个参数同样是 self,被绑定到构造方法初始化的对象 。和函数定义文档类似,类文档用字符串即可。该文档同样被放在类声明之后、类体之前。
下面是调用类的构造方法创建对象。
c = Coordinate(3, 4)
origin = Coordinate(0, 0)
print(c.distance(origin))