python3.0入门
简介
python是一门动态解释型 语言。
特点
python是C语言开发的,但不再有C语言的指针等复杂数据类型 python具有很强的面向对象 特性,简化了面向对象的实现(消除了保护类型、接口、抽象类等) Python代码块使用空格或制表符 缩进的方式分隔代码 Python仅有31个保留字,而且没有分号、begin、end等标记。 Python是强类型语言 ,变量创建后会对应一种数据类型,出现在统一表达式中的不同类型的变量需要做类型转换(java c语言也是 scala是弱类型的 ) python3.7最新的版本
基础数据类型
Numbers(数字)—不可变
int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。 bool (布尔), 如 True,false—但是实际还是1或0表示 float (浮点数), 如 1.23、3E-2 complex (复数), 如 1 + 2j、 1.1 + 2.2j
String(字符串)—不可变
单引号和双引号一样 三引号可以指定多行字符串
word = '字符串'
sentence = "这是一个句子。"
paragraph = """这是一个段落,
可以由多行组成"""
转义符 '\ ’ 索引方式:从左往右以 0 开始,从右往左以 -1 开始 字符串不能改变 字符串的截取的语法格式如下:变量[头下标:尾下标:步长]
str='Runoob'
print(str) # 输出字符串
print(str[0:-1]) # 输出第一个到倒数第二个的所有字符
print(str[0]) # 输出字符串第一个字符
print(str[2:5]) # 输出从第三个开始到第五个的字符
print(str[2:]) # 输出从第三个开始的后的所有字符
print(str * 2) # 输出字符串两次
print(str + '你好') # 连接字符串
print('------------------------------')
print('hello\nrunoob') # 使用反斜杠(\)+n转义特殊字符
print(r'hello\nrunoob') # 在字符串前面添加一个 r,表示原始字符串,不会发生转义
List(列表)—有序的、可变的
定义:最频繁使用的数据类型 List写在方括号 之间,元素用逗号隔开。 —[1, ‘abs’, 3, 20.2, 5, ‘ss’] 和字符串一样,list可以被索引和切片。 List可以使用+操作符进行拼接。 List中的元素是可以改变的。
Tuple(元组)—不可变
元组(tuple)与列表类似 ,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。 元组元素取值方式和字符串一样 构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
string、list和tuple都属于sequence(序列) 。
Set(集合)—无序的
定义:集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素 或是成员。 基本功能:进行成员关系测试和去重。 创建方式:可以使用大括号 { } 或者 set() 函数创建集合 (注意:创建一个空集合只能用set(),{ }是用来创建一个空字典)
a = set('aced')
b = set('acf')
print(a) ---输出 { 'a', 'c', 'e', 'd'}
print(a - b) # a 和 b 的差集---{'e', 'd'}
print(a | b) # a 和 b 的并集---{'a', 'c', 'e', 'd', 'f'}
print(a & b) # a 和 b 的交集---{'a', 'c'}
print(a ^ b) # a 和 b 中不同时存在的元素---{'f', 'e', 'd'}
Dictionary(字典)—无序的,可变的
定义:字典是python中非常有用的内置数据类型 特点1:无序的,取值不通过下标,通过键来取值 特点2:字典是一个无序的key:value对集合,并且key唯一,key必须使用不可变类型(Number、String、Tuple)
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (tinydict) # 输出完整的字典
print (tinydict.keys()) # 输出所有键
print (tinydict.values()) # 输出所有值
{'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
dict_keys(['name', 'code', 'site'])
dict_values(['runoob', 1, 'www.runoob.com'])
运算符
算术运算符
运算符 描述 举例 + 加 22+10=32 - 减 22-10=12 * 乘 22*10=220 / 除 22/10=2.2 // 除并向下取整 22//10=2 % 取余 22%10=2 ** 幂 2**5=32
比较运算符
运算符 描述 举例 == 等于 返回True或者False != 不等于 注意bool也是数值类型 1或者0 > 大于 < 小于 >= 大于等于 <= 小于等于
赋值运算符
运算符 描述 举例 = 赋值 — += 加等 — -= 减等 — *= 乘等 — /= 除等 — %= 取余等 — **= 幂赋值 — //= 取整除赋值 —
位运算符
运算符 描述 举例 & 按位与,对应位都为1除,结果为1 数值先转换成二进制再计算 按位或,对应位只要其中一个为1,结果为1 — ^ 异或,对应位不同时,结果为1 — ~ 取反,0变1,1变0,注意和反码的区别,反码的头部位定了的 — << 左移动 m<<n乘m*2的n次方 >> 右移动 m>>n除m/2的n次方
逻辑运算符
运算符 逻辑表达式 描述 举例 and x and y 布尔"与",全为true才返回true or x or y 布尔"或",其中一个为true返回true not not x 布尔"非",返回相反的
成员运算符
运算符 描述 举例 in 如果在指定序列,返回true not in 如果不在指定序列,返回true
身份云算法
运算符 描述 举例 is is 是判断两个标识符是不是引用自一个对象 is not is not 是判断两个标识符是不是引用自不同对象
运算符优先级
运算符 描述 ** 指数 (最高优先级) ~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@) * / % // 乘,除,取模和取整除 + - 加法减法 >> << 右移,左移运算符 & 位 ‘AND’ ^I 位运算符 <= < > >= 比较运算符 <> == != 等于运算符 = %= /= //= -= += *= **= 赋值运算符 is is not 身份运算符 in not in 成员运算符 and or not 逻辑运算符
条件控制
每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。 使用缩进 来划分语句块,相同缩进数的语句在一起组成一个语句块。 在Python中没有switch – case语句。
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
循环语句
while循环
同样需要注意冒号和缩进。另外,在Python中没有do…while循环
while 判断条件:
语句
# while...else语句为false执行else的语句块
# 如果语句只有一句 可以写在同一行
while 判断条件:
语句
else:
语句
for语句
for 实例中可以使用 break 语句,break 语句用于跳出当前循环体
for <variable> in <sequence>:
<statements>
else:
<statements>
range()函数
可以生成数列 rang(5) rang(4,9) rang(0,10,3)—0,3,6,9
迭代器
迭代是Python最强大的功能之一,是访问集合元素的一种方式 迭代器是一个可以记住遍历的位置 的对象 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退 有两个基本的方法:iter() 和 next() 字符串,列表或元组对象都可用于创建迭代器
函数
注意点
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。 函数内容以冒号起始,并且缩进。 return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def 函数名(参数列表):
函数体
可更改(mutable)与不可更改(immutable)对象
strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象