一、Python简介
1、python是一门相当高级的解释型编程语言,相对于其它流行语言实现同一功能python编写的代码量最低
2、代码量低只能说明语言本身做了很多的封装,因为对于最终要执行的程序都要转换成计算机可以执行的指令封装的多可能相对于运行速度稍慢
3、python可能做很多事情,除了操作系统或开发手机应用,其它的都可以用python,很多互联网公司都在使用python
4、python的库很丰富不管是内置库还是第三方库,社区也很活跃
5、python的缺点:运行速度稍慢,代码不能被加密等其它小缺点
二、Python交互模式
1、安装好python(记得将python添加到环境变量),命令行下执行python命令即可
2、交互模式下写一句代码python执行一句并会反馈到屏幕上,除非是代码块,是一整块执行,代码块以:开始显示...为已进入代码块
3、在Linux环境下 python文件添加 #!/usr/bin/env python3 可以直接运行python文件
4、print()可以输出 python可以接受多个参数,以”,“分隔输出打印的时间逗号会被换成空格 input()可以监听输入,参数为输入提示语
三、Python基础
1)、python 以 # 为注释
2)、数据类型包括:
整数(写法和数学一样,出可以用16进制表示 以0x开头)
浮点数(数学小数,科学计数法 1.21e2 表示1.21x(10的2次方),1.2e-3表示0.0012)
字符串 用双引号或单引号括起来 转义字符\ 和其它语言一样,如果字符串里面需要转义的太多可以在前面加个r,例如r'32dsfs',以3个单引号或3个双引号表示多行字符串
布尔型 True False python区别大小写 布尔型可以 and 和 or 多条件组合 非 not
空值 None 空值是python里一个特殊的值
数组 []表示 支持正负下标取数据,正从左往右 负从右往左 添加 append 插入 insert 消费pop
元组()表示 元组一旦初始化不能修改 元组和 数组可以嵌套 除了修改类的方法不支持其它和数组一样
字典 {} json 键值对象 字典对key 建立了索引,查找特别快 get()可以指定未获取到的默认值, pop 删除 查找和删除快但占用内存大
Set {} 只有值 没有key 不出现重复的值 add 加 remove 删 类型一样的set可以作交并集 & 交 | 并
3)变量 变量名必须是大小写英文、数字和_
的组合,且不能用数字开头 python为动态语言不需要显示指定变量类型 python文件 建议加上 # -*- coding: utf-8 -*- 指定文件编码 python赋值的是具体的值
4)常量 名字要大写 python 没有机制保护常量不变 不像java 有final 整数相除/ 为浮点数(不管有没有整除) // 为地板除(整数相除取最近整数为整数,浮点相除取最近浮点整数还是为浮点数 % 取余数)
5)字符串有很多方法 ord()
函数获取字符的整数表示,chr()
函数把编码转换为对应的字符 编码批unicode的10进制表示
bytes
类型的数据用带b
前缀的单引号或双引号表示 encode('utf-8') 可以指定编码方式bytes类型 相反decode('utf-8')可以将bytes转换成字符串 len()有多少个字符或有多少个字节 文件开头 通常以 开始
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
格式化 通常以 % 分隔 如 print( '%d-%02d' % (5, 2)) 5-02
占位符 | 替换内容 |
---|---|
%d | 整数 |
%f | 浮点数 |
%s | 字符串 |
%x | 十六进制整数 |
format() 1:代表第二个参数
'Hello, {0}, 做我女朋友吧 {1:.1f}%'.format('小美', 17.125)
6)条件判断 if elif else python 以 : 缩进定义代码块 类型转换 int() str() bool()
7)循环 for x in [1,2,3,4,5] range(1,5) 返回一个生成器 while 循环 break 跳出 continue跳出当次
四、函数
定义一个函数要使用def语句,依次写出函数名,括号,括号中的参数和冒号:然后,在缩进块中编写函数体,函数的返回值用return语句返回。
空函数
def blank():
pass
返回多个值 相当于返回了个元组 math.sqrt(5) 平方根
def nulti(x, y):
return x, y
参数类型
位置参数 按固定出现位置 def method(x,y,z)
默认参数 def method(x,y=1)
可变参数 def method(*args)
关键字参数 def method(**kw) kw 为字典
命名关键字 和关键字参数**kw
不同,命名关键字参数需要一个特殊分隔符*
,*
后面的参数被视为命名关键字参数如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*
了 def method(x,y ,*,name,age)或者
def method(x,*args,name,age)
组合顺序 位置参数、默认参数、可变参数、命名关键字参数和关键字参数
递归函数 解决递归调用栈溢出的方法是通过尾递归优化 尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。
五、高级特性
切片
L = ['a', 'b', 'c', 'd', 'e']
#L[0:3]和L[:3]都表示['a', 'b', 'c']
#L[1:3] ['b','c']
# [1:2:3] 1表示起 2表示止 3 表每多少个 1 2 可为负
#[:]表示复制
迭代
>>> from collections import Iterable
>>> isinstance('abc', Iterable) # str是否可迭代
True
>>> isinstance([1,2,3], Iterable) # list是否可迭代
True
>>> isinstance(123, Iterable) # 整数是否可迭代
False
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
... print(key)
...
a
c
b
>>> for i, value in enumerate(['A', 'B', 'C']):
... print(i, value)