1、编译型:将源代码交给编译器,生成一个可执行文件,交给cpu运行(批发)效率高,跨平台性能弱(windows、linux、mac)
2、解释型:读取一行代码,翻译为机器语言,cpu运行。再读取下一行,循环往复。(零售)。
效率低,可跨平台
3、集成开发环境--PyCharm
4、运行python文件命令(ubuntu)
$ xxx {python python_file_name}
5、每行仅执行一个动作
严格缩进
6、 python2.x默认不支持中文,python3.x支持
python2.x解释器名称是:python
python3.x解释器名称是:pyhton3
例: $ xxx {python python_file_name}
$ xxx {python3 python_file_name}
Python2.6是python2.x与python3.x的过渡版本,完全兼容2.x,又支持部分3.0语法和函数。
Python2.7是2.x系列最后一个版本。
7、IDE(集成开发环境)
注释: 单行: #空格 ctrl + /
多行:””” program “””(一对三个引号)
8、算数运算符
+ - * /
//:除法取整
%:除法取余
**:幂(次方)
字符串也可以参与运算,乘法
9、变量类型
定义变量 变量名 = 变量值 #不需要指明数据类型。
str、bool、int、float
查看变量类型type(name)
10、 input()函数,接收用户键盘输入,接收类型为str
11、类型转换
int(x)
float(x)
12、%格式化操作符
%s : 字符串
%d : 整数 %06d : 6位整数,不足前面补0
%f : 浮点型 %.2f : 保留两位小数
%% : 输出%
13、一个tab或四个空格为一个缩进,tab与空格不要混用。建议空格。
14、if语句, 逻辑运算符(not在前,条件在后)
age = 190
if not age>18:
print("允许")
elif age>18 and age <150:
print("不允许")
else:
print("非活人")
#分支内部无代码时,可以用pass关键子占位,pass不会执行任何操作,保证程序正常执行
15、逻辑运算
and、or、not
16、循环
i = 0
while i<=5:
print(i)
i+=1
17、转义字符
\t 垂直方向对齐,制表符
\n 换行
\\ 反斜杠
\’ 单引号
\” 双引号
\r 回车
18、函数定义。Ctrl+Q查看函数释义
def 函数名():
"""注释"""
代码
19、模块
1>每一个py文件都是一个模块,使用import导入模块. import 模块名
调用 模块名.方法名() 模块名.变量名
2>被引入模块被执行时会被编译为字节码文件,.pyc文件,不必解释一行执行一行,运行效率大幅度提升
20、列表List(java中的数组) [ ]定义
name_list = [“zhangsan”,”lisi”,”wangwu”]
21、del关键子/函数,从内存中删除
del 变量
del()
22、循环遍历列表
for 变量 in 列表
例: name_list = ["a","c","b"]
for name in name_list :
print(name)
23、元组Tuple,( )定义。
与列表不同之处在于元组内元素不可修改。
索引也是[ ]
name_tuple = ("a",1,2.76)
print(name_tuple[0])
num_tuple = (1,) #定义一个元素时,末尾必须加都好否则就是整数类型不是元组类型
print(num_tuple[0])
可以使用for循环遍历
24、元组、列表互相转换
list(元组)
tuple(列表)
25、字典,键值对(类似Java的map) { }定义
xiaoming = {"name" : "xiaoming",
"age" : 18,
"sex" : True
}
# key存在修改,不存在新增
# 修改
xiaoming["age"] = 19
# 添加
xiaoming["love"] = "music"
# 删除
xiaoming.pop("love")
#获取
print(xiaoming["name"])
#获取
print(xiaoming.get("name"))
#合并字典,键重复则覆盖
xiaoming.update(xiaoming_h)
#循环遍历
for key in xiaoming:
print("%s %s" % (key,str(xiaoming[key])))
print(xiaoming.keys())
print(xiaoming.values())
集合set x = {1,2,3}
集合中的值不允许重复,无序不提供索引操作
26、字符串遍历
可以索引[ ],可以遍历
str = "python"
print(str[0])
for s in str :
print(s)
27、字符串常见操作
index(str) : 查找字符串位置,没有报错
find(str) : 查找字符串位置,没有返回-1
replace(oldStr,newStr) : 返回新的字符串,但是不会修改原字符串内容
startwith()、endwith() 以***开始/结尾
lstrip()、rstrip()、strip() 删除左、右、两边空白字符
split()、join() 分割、合并
str[startIndex : endIndex : 步长] 切片,包前不包后,步长为正右边切,步长为负左边切(逆序)。列表和元组支持切片,字典不支持切片。
28、内置函数
len()
del()
max()
min()
29、特殊数据类型运算符(字符串、列表、元组)
+ * in not in > >= == < <=
+ : 产生新的变量,extend()、append()改变原来的变量
30、完整的for循环
for 变量 in 集合
循环体
else:
没有通过break退出循环。循环正常结束后,执行else。
break退出循环,不执行else
31、TODO注释,标记未完成代码,完成后删掉TODO
# TODO
32、变量引用,保存的时地址
id(变量名)
33、函数的参数、返回值,传递的不是数据本身而是数据的引用(地址)
34、可变类型与不可变类型
不可变:数字类型、字符串、元组
可变类型:列表、字典、集合
35、可变类型不能作为字典的key值
字典会首先对key进行hash,以决定在内存中如何保存字典中的数据,方便后续:增、删、改、查。
hash(o)只能接收不可变类型作为参数。
36、全局变量与局部变量
函数外定义全局变量,函数内对同名变量赋值,python会将其当作局部变量,函数内部修改其值,不会影响全局变量的值。
如果希望函数内修改全局变量的值,要在函数内显示声明全局变量,使用global关键字
例: global num # 声明全局变量
num = 99 # 赋值
37、函数返回多个值
# 函数返回多个值---利用元组
def measure():
temp = 37
wetness = 70
return temp,wetness # 返回元组,可以省略( )
gl_temp,gl_wetness = measure()
print(gl_temp)
print(gl_wetness)
38、关于while、for何时执行else
while、for语句正常执行结束后(不执行break),执行else
(break和else只执行一个)
39、Python连接mongo进行操作
def get_mongo_connect():
""" 获取mongo连接 """
# mongodb://用户名:密码@IP:端口
client = pymongo.MongoClient('mongodb://yourUserName:yourPwd@yourIp:yourPort/')
# client = pymongo.MongoClient()
return client
def close_mongo_connect(mongo_client):
“”” 关闭mongo连接 ”””
mongo_client.close()
获取数据库:coll = mongo_client.dbName.collName
40、聚合查询:
results = coll .aggregate([
{'$group': {'_id': '$house_url','count': {'$sum': 1},'house_id': {'$first': '$_id'}}},
{ '$match': {'count': { '$gt': 1}}} ])
district_pipeline = [
{'$group': {'_id': {'h_district':'$h_district','h_street':'$h_street'},
'count': {'$sum': 1},
'avg': {'$avg': '$h_per_area_price'} } }, ]
41、Python进入conda虚拟环境
source activate tf
#注:如要退出这个环境,只需要执行source deactivate tf
42、随机数种子:设置之后可以保证每次产生的随机数一致
np.random.seed(116)
生成随机列表,搭配seed可以实现随机时一一对应
np.random.shuffle(x)
np.random.seed(116) # 使用相同的seed,保证输入特征和标签一一对应
np.random.shuffle(x_data)
np.random.seed(116)
np.random.shuffle(y_data)