发表于: 2018-01-14 22:26:47
1 540
一.今日完成
整理完小课堂知识点
1.背景介绍
Puthon是一门高级的,解释型的,典型的,动态的,开源的,多范式的,多用途的编程语言,相比于其他编程语言,Python的语法表述起来更为简洁,在数据科学和网络编程方面具有颇高的人气. Python提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”.用Python开发,许多功能不必从零编写,直接使用现成的即可. 除了内置的库外,Python还有大量的第三方库,直接使用.
当前有两个不同的Python版本:Pyhton2和Python3.
Python 2.7被确定为最后一个Python 2.x版本,它除了支持Python 2.x语法外,还支持部分Python 3.1语法.Python3.0版本,常被称为Python 3000,或简称Py3k.为了不带入过多的累赘,Python 3.0在设计的时候没有考虑向下兼容.
Python之禅:
2.知识剖析
2.1 注释 #Comment statement
2.2 标识符
标识符可以字母(A~Z或a~z)或下划线(_)开头,并且包含任何数量的字母,数字,下划线,空格不能出现在标识符中.
2.3 保留字(33个)
2.4 变量
初始化变量 variable= expression
初始化一个变量时,解释器会自动完成声明过程,毋需像Java一样为了保存内存空间而显式声明.
标准数据类型
6种基本的数据类型:
(1)数字型Number:分为整数和浮点数,整数又分为正负,其中整数大小是没有上限的.
(2)字符串String:可以是字母,数字和特殊字符的序列,用单引号或双引号作定界符.字符串中第一个字符的下标是0.
操作:切片运算符([ ])和([:]),连接运算符(+)和重复运算符(*)以及多种内置命令或方法
切片运算符([ ])和([:])用来从字符串中提取子字符串
sample_string[start : end<: step] #step is optional
(3)列表List:有序的,可被索引的序列,可以包含相同类型或者不同类型的元素.声明一个列表需要用逗号(,)分隔每个元素,并用方括号包裹所有的元素.([:]),(+)和(*)也可以用于列表.
Python入门
2.1 注释 #Comment statement
2.2 标识符
标识符可以字母(A~Z或a~z)或下划线(_)开头,并且包含任何数量的字母,数字,下划线,空格不能出现在标识符中.
2.3 保留字(33个)
2.4 变量
初始化变量 variable= expression
初始化一个变量时,解释器会自动完成声明过程,毋需像Java一样为了保存内存空间而显式声明.
标准数据类型
6种基本的数据类型:
(1)数字型Number:分为整数和浮点数,整数又分为正负,其中整数大小是没有上限的.
(2)字符串String:可以是字母,数字和特殊字符的序列,用单引号或双引号作定界符.字符串中第一个字符的下标是0.
操作:切片运算符([ ])和([:]),连接运算符(+)和重复运算符(*)以及多种内置命令或方法
切片运算符([ ])和([:])用来从字符串中提取子字符串
sample_string[start : end<: step] #step is optional
(3)列表List:有序的,可被索引的序列,可以包含相同类型或者不同类型的元素.声明一个列表需要用逗号(,)分隔每个元素,并用方括号包裹所有的元素.([:]),(+)和(*)也可以用于列表.
(4)元组Tuple:存储序列元素,用圆括号()定界.是只读类型列表,一旦存储元素就不能被修改.
(5)字典Dictionary:无序的键值对集合,可以遍历1)键;2)值;3)字典中元素(键值对). (6)布尔型:True/False (7)集合Sets:无序不重复元素的序列,支持并(|),交(&),差(-)和对称差积(^)运算.
运算符
运算符用来修改对象值的结构
算数运算符
比较运算符
赋值运算符
逻辑运算符
位运算符
隶属运算符
恒等运算符
python中绝大多数运算符是从左至右的结合性,**运算符是从右至左的.()拥有最高优先级.
控制语句
(1)for循环:基于迭代器,用于遍历任何顺序的序列,即字符串,列表,元组,字典的键和其他可迭代的对象.
for x in y:
Block 1
else: #Optional
Block 2 #excuted only when the loop exits normally
控制语句
(2)while循环:指定条件语句,重复执行.
while condition:
Block
else: #Optional
statement
在while循环和for循环中,break语句推出循环,转而执行紧接在循环后面的语句,continue语句会直接跳过循环中的剩余部分转而立即去执行循环只能改的起始部分. 执行for循环中的break语句,else部分会被跳过.
控制语句
(3)if elif else语句:if语句被认为是决策语句,条件出现在if子句中;如果条件为True,则if子句下面的代码块会被执行,否则不执行.利用elif语句来检测多个表达式是否为True, 并执行条件为True的elif语句下的代码块
if expression1 :
statement1
elif expression2 :
statement2
elif expression3 :
statement3
else expression4 :
statement4
if语句中elif语句可以出现多次,而else语句最多出现一次.
迭代---while语句
语法:
while expression:
statement(s)
else: #Optional
statement #executes only when while condition becomes F
从键盘获取输入
(1)input()函数:一般有一个提示字符串作为可选的参数,会解析用户的输入.
>>>name = input("What is your Name ?")
>>>print("Hello"+ name + "!")
What is your Name? 'John' #Output
Hello John!
从键盘获取输入
(1)raw_input()函数:从用户处获取输入,但不会解析输入,直接返回用户的输入,不做任何修改.可以把原始的额输入改为程序中需要的任意数据类型
>>>age = int(raw_input("What is your Name ?"))
What is your age? 46
>>>type(age)
<type 'int'>
函数
自定义函数语法
def functionname(parameters):
"function_docstring"
statement(s)
return [expression]
函数参数
调用函数时,可使用下列四种类型的参数:
必选参数
关键字参数
默认参数
变长参数
编写Python脚本
使用Pthony最常用的方法是在一个文件中编写代码,然后使用解释器以脚本方式运行这个文件.通常以'.py'的文件名保存.
#! /usr/bin/python
# Comment section.
"""
Docstring section
"""
# import section
import os
import sys
# from import section
from math import sin
def main():
" docstring for main function "
# the code for solving the problem goes here.
#This section is the standard way to invoke the main function. It makes the code reusable.
if _name_=='_main_':
main()
3.常见问题
Pythons数据库编程流程如何?
4.解决方案
数据库和Python
访问 数据库包括直接通过数据库接口访问和使用ORM 访问两种方式.在 Python 中数据库是通过适配器的方式进行访问的.适配器是一个Python 模块,使用 它可以与关系数据库的客户端库(通常是使用C 语言编写的)接口相连.Python 中的MySQL 适配器:MySQLdb
Python 的DB-API---模块属性
DB-API 是阐明一系列所需对象和数据库访问机制的标准,它可以为不同的数据库适配 器和底层数据库系统提供一致性的访问.
(1)模块属性,DB-API必须提供下文列出的功能和属性
1)数据属性
apilevel---指定需要适配器兼容的DB-API 版本
threadsafety----本模块的线程安全级别,0~3级别增加.
2)参数风格,DB-API 支持以不同的方式指明如何将参数与SQL 语句进行整合,并最终传递给服务器中执行.该参数是一个字符串,用于指定构建查询行或命令时使用的字符串替代形式
Python 的DB-API---Connection 对象
应用与数据库之间进行通信需要建立数据库连接.它是最基本的机制,只有通过数据库
连接才能把命令传递到服务器,并得到返回的结果.当一个连接(或一个连接池)建立后,可以创建一个游标,向数据库发送请求,然后从数据库中接收回应.
Connection 对象定义的方法:
close ()--- 关闭数据库连接
commit()--- 提交当前事务
rollback()--- 取消当前事务
cursor()--- 使用该连接创建(并返回)一个游标或类游标的对象
errorhandler (cxn, cur, errcls, errval )--- 作为给定连接的游标的处理程序
Python 的DB-API---Cursor 对象
当建立连接后,就可以和数据库进行通信了.当游标创建好后,就可以执行查询或命令(或多个查询和命令),并从结果集中取回一行
或多行结果.
游标对象最重要的属性是execute*()和fetch*()方法,所有针对数据库的服务请求都是通过它们执行的.arraysize 数据属性在为fetchmany()设置默认大小时非常有用.
fetchone()--- 获取查询结果的下一行
fetchmany([size=cursor. arraysize])--- 获取查询结果的下面size 行
fetchall()--- 获取查询结果的所有(剩余)行
Python 的DB-API---类型对象和构造函数
DB-API 的另一个需求是创建构造函数,从而构建可以简单地转换成适当数据库对象的特殊对象.
5.编码实战
查询数据库,持久化数据到.JSON文件
# -*- coding: utf-8 -*-
import MySQLdb
import json
try:
#connect()函数通过Connection 对象访问数据库,关键字实参
conn = MySQLdb.connect(host='39.108.61.3', port=3306, user='root', passwd='20110814$Gl', db='fortask', charset='utf8')
#使用cursor()方法获取操作游标
_data=conn.cursor()
#使用execute方法执行SQL语句
_data.execute( "SELECT date_format(from_unixtime(create_at/1000),'%Y-%m-%d') as date, count(id) as count FROM student GROUP BY date_format(from_unixtime(create_at/1000),'%Y-%m-%d');" )
#获取查询结果的所有(剩余)行,将结果集存入_data_results"""
_data_results=_data.fetchall()
print _data_results
_data_lines=[]
for result in _data_results:
print result[0], result[1]
_dataline={}
_dataline["date"]=result[0]
_dataline["count"]=result[1]
_data_lines.append(_dataline)
except MySQLdb.Error, e:
conn.rollback()
print "Error %d: %s" % (e.args[0], e.args[1])
finally:
# 关闭游标连接
_data.close()
# 关闭数据库连接
conn.close()
filename='registrationStatistics.json'
with open(filename, 'w') as u_obj:
json.dump(_data_lines, u_obj)
6.扩展思考
Python缺点
第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢.而C程序是运行前直接编译成CPU能执行的机器码,所以非常快.
第二个缺点就是代码不能加密.如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去.要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去.
这个缺点仅限于你要编写的软件需要卖给别人挣钱的时候.好消息是目前的互联网时代,靠卖软件授权的商业模式越来越少了,靠网站和移动应用卖服务的模式越来越多了.
二.明日计划
1.把后台资料管理模块里里增删改接口写完.用postman测试通过.
2.要微信商户平台登记信息,测试本地test
三.遇到问题
暂无.
四.收获
以上.
评论