另一方面,也是因为时间原因,没有事先系统了解 python 的具体内容,所以开发过程中基本都是拿 java 的东西往 python 里面套。

比如:

某个功能用 java 的 ArrayList 可以解决,那 python 中有没有类似的东西呢?

java 中定义整形用 int i = 0, 那 python 呢?

也正是因为如此,遇到了很多问题。下面就总结一遍。

列一下问题大纲

觉得没用的就不用往下看了,大概会涉及到 python 语法及 API,redis 模块,requests 模块,flask 框架

python 局部变量作用域问题

python 常量定义

python 通过占位符进行字符串替换

python redis 包,get 方法返回值是 byte

requests 库超时时间设置问题

flask 项目用 debug 模式运行会打印两遍启动日志。

flask 项目局域网内无法通过 ip 访问

具体问题

1. python 函数中变量在 try-catch 块的作用域问题

先来看 python 中,在 try 里面定义的变量,在 except 仍然可以访问

try:

i = 1

# 模拟异常

j = 1 / 0

except:

print(i) # 打印结果为 1

而 java 中,直接就编译不通过

public static void main(String[] args) {

try{

int i = 0;

j = 1/0;

}catch (Exception e) {

System.out.println(i); # 编译报错

}

}

2. python 常量定义

python 中没有明确定义常量的方式,也就是你认为是他就是,不过仍然推荐用大写方式命名,当然,这种定义方式仍然可以随时修改‘常量’的值

RETRY_TIMES = 3.14

而 java 中使用 final 关键字修饰

final int RETRY_TIMES = 0

3. redis hash 数据类型无法给 field 设置过期时间

这个问题跟 python 没有关系。

第一次使用 redis hash 数据结构。

首先 redis hash 数据类型 是通过一下方式存储数据的。

set key fieldname fieldvalue

并且无法通过给 fieldname 设置过期时间,只能给 key 设置过期时间。

4. python 字符串替换

java 中进行字符串替换是通过如下方式:

String s = "hello world";

s.replace("world", "dog");

python 中除了这种方式,还有一种:

str = "hello, {}".format("world")

python redis 模块,get 方法返回值是 byte

value = my_redis.get("key")

print(value) # b"1234"

5. requests 库设置超时时间

首先 requests 库是通过如下方式设置超时时间

# 超时时间是通过元祖的方式传入的

requests.post(url, data, timeout=(connect_timeout, read_timeout))

# 会自动转为

如果传入 timeout=1.0, 会自动转为下面的形式

requests.post(url, data, timeout=(1.0, 1.0))

6. flask 项目局域网内无法通过 ip 访问

解决方式: 传入参数 host="0.0.0.0"

app.run(host="0.0.0.0", port=5001, debug=True, threaded=True)

7. flask项目用 debug 模式启动会打印两遍日志

首先来看启动入口代码

if __name__ == "__main__":

# 初始化 redis

# 省略部分代码

app.run(host="0.0.0.0", port=5001, debug=True, threaded=True)

然后以 debug 模式启动项目, 控制台输出以下日志(删减了部分)

pydev debugger: process 72880 is connecting

Connected to pydev debugger (build 193.6494.30)

2020-03-13 19:27:06 INFO (config.py:60) MainThread - port = 5001

2020-03-13 19:27:06 INFO (config.py:64) MainThread - redis_host = localhost

2020-03-13 19:27:06 INFO (config.py:65) MainThread - redis_port = 6379

2020-03-13 19:27:06 INFO (config.py:66) MainThread - redis_db = 15

2020-03-13 19:27:06 INFO (config.py:67) MainThread - redis_password =

* Serving Flask app "anti-fraud" (lazy loading)

* Environment: production

WARNING: This is a development server. Do not use it in a production deployment.

Use a production WSGI server instead.

* Debug mode: on

* Running on http://127.0.0.1:5001/ (Press CTRL+C to quit)

* Restarting with stat

pydev debugger: process 72882 is connecting

2020-03-13 19:27:07 INFO (config.py:60) MainThread - port = 5001

2020-03-13 19:27:07 INFO (config.py:64) MainThread - redis_host = localhost

2020-03-13 19:27:07 INFO (config.py:65) MainThread - redis_port = 6379

2020-03-13 19:27:07 INFO (config.py:66) MainThread - redis_db = 15

2020-03-13 19:27:07 INFO (config.py:67) MainThread - redis_password =

可以看到 redis 启动日志打印了两遍, 解决方式如下:

# 多加了 use_reloader=False 参数

app.run(host="0.0.0.0", port=5001, debug=True, use_reloader=False, threaded=True)

总结

以上就是对 python 开发过程遇到的问题,没有难度,纯粹是简单记录一下。

python flask项目过程_Python 开发过程遇到的问题相关推荐

  1. 【基于Python+Flask项目部署系列--03】开发测试环境配置-基于Ubuntu16.04

    一.开发测试环境介绍 前提已经部署完[基于Python+Flask项目部署系列--02]Ubuntu16.04服务器安装.建议部署2套环境:开发测试环境+生产环境. 这篇文章主要讲解测试环境如何配置p ...

  2. Python Flask项目部署

    Python Flask项目部署 说明:本次安装为Centos7最小化环境下的安装 一.Python3.6安装 1.安装包下载 下载Python3.6(Python-3.6.7.tgz)的安装包. 2 ...

  3. python flask restful入门_Python Flask高级编程之RESTFul API前后端分离精讲

    第1章 随便聊聊 聊聊Flask与Django,聊聊代码的创造性1-1 Flask VS Django 1-2 课程更新维护说明 第2章 起步与红图 本章我们初始化项目,探讨与研究Flask的默认层级 ...

  4. python flask框架剖析_python flask框架实现传数据到js的方法分析

    本文实例讲述了python flask框架实现传数据到js的方法.分享给大家供大家参考,具体如下: 首先要清楚后台和前端交互所采用的数据格式. 一般选JSON,因为和js完美贴合. 后台返回的数据进行 ...

  5. python flask框架优点_python之全栈(Flask框架)

    虚拟环境 虚拟环境顾名思义就是虚拟的,在这里面装任何软件都不会影响到其他的程序,类似与一个抽屉. 使用虚拟环境的好处是:让电脑中安装很多种解释器,并且互不影响 virtualenv的使用 安装virt ...

  6. python flask 项目实践

    架构:python+ flask +marshmallow+itsdangerous+pymysql 数据库:mysql 实现功能:登录.验证码.鉴权.用户.上传.下载.错误统一处理 api格式: r ...

  7. python实战项目网站_python实战项目,搜索自己网站的关键词,使用代理并且模拟点击...

    前面,我们介绍了 python实战项目,获取指定网站关键词百度排名,为seo提供参考资料,那为了满足自己的虚荣心,而且听说点击可以提升网站关键词的排名.不过模拟点击,欺骗搜索引擎肯定知道咱们的 IP ...

  8. python解决实际问题的过程_Python开发过程问题集锦(Continuous updating)

    def _normalize_shape(ndarray, shape, cast_to_int=True):"""Private function which does ...

  9. python flask项目结构_Flask项目结构

    定义 先让大家明确一些术语,方便后面的讨论.仓库/版本库 - 应用程序所在的基础文件夹.习惯上指笨笨控制系统.在文章中提到时,指的是项目的根目录. 包 - 指应用代码的一个Python包. 模块 - ...

最新文章

  1. io.js 3.0发布:重写Buffer,支持PPC
  2. 寻找免费的阿里云云盾隐秘购买入口,申请并下载ssl证书(https证书)的详细步骤
  3. Apache Spark:更改架构之前必须解决的5个陷阱
  4. 手机按键中控运行思路的个人理解
  5. 使用paintEvent()对窗口进行OpenGL2D绘图
  6. JVM初学之类的加载过程
  7. pdf批量添加图章_1分钟学会制作电子公章,三步搞定,轻松在PDF文件中添加公章图片...
  8. EEGLAB初步学习(1)
  9. Java类型转换简单运用
  10. 预约小程序开发:小程序开发的费用都包含了哪些?
  11. 鸿蒙系统反应慢,系统优化非常的关键 鸿蒙2.0和iOS14的反应速度测试
  12. 5个步骤实现流程管理
  13. 15_岭回归-Ridge、岭回归API、线性回归和岭回归的对别;逻辑回归、sigmoid函数、逻辑回归公式、损失函数、逻辑回归API、逻辑回归案例、逻辑回归的优缺点、逻辑回归 VS 线性回归等
  14. LINUX论坛快速搭建(小白版)
  15. 【Windows 11】终端美化配置(优化)
  16. java之Mybatis(实训笔记)
  17. 疫情下失业开发即时通讯软件(仿微信)-优化服务器端吞吐量
  18. 复旦大学计算机科学与技术,复旦大学计算机科学技术学院
  19. 最新版gg服务器框架安装器,GG服务框架安装器最新版本
  20. 程序无法安装时, 提示无法访问网络位置0 的解决办法

热门文章

  1. 2019-02-28-算法-进化(盛最多水的容器)
  2. 2018-2019 ACM-ICPC, Asia Shenyang Regional Contest E. The Kouga Ninja Scrolls 切比雪夫距离 +线段树
  3. P2617 Dynamic Rankings 整体二分
  4. HDU - 6756 Finding a MEX-分块思想
  5. [NOIP2016]愤怒的小鸟(状压DP)
  6. 卡特兰数(简单说说)
  7. cf1556B B. Take Your Places!
  8. P2151 [SDOI2009]HH去散步
  9. [AtCoder Regular Contest 125] A-F全题解
  10. CF1444C Team-Building(可持久化并查集)(二分图)