python的初始化运行了哪些?
下面的3个print一个是在模块下面,一个是函数里面,一个是类名下面(不在方法里面)
1、 运行这段代码可以发现第3行和11行可以打印出来。第7行没有打印出来。所以可以放心,函数或者方法里面就算有错误,不调用它是不可能报错的,这是运行报错排查的基本常识,怎么也不要瞎找错误把抛错怪罪到这一块代码里面去。
2、如果全局模块下写了太多东西,每次导入模块都会运行模块全局下的代码,很浪费运行,而且全局下面写太多东西容易出错。尤其是作为被导入的基础模块,更不应该这么写,一定要把模块命名空间下沉到类,使用类。
3、有人说喜欢写函数不喜欢写类,写类有很多self,看的头晕。拿函数和类做比较,完全是牛头不对马嘴,基本概念很模糊。拿面向过程和面向对象编程比还是可以的,拿函数和类的比就是风马牛不相及。
4、引用百度百科:类(Class)是面向对象程序设计(OOP,Object-Oriented Programming)实现信息封装的基础。类是一种用户定义类型,也称类类型。每个类包含数据说明和一组操作数据或传递消息的函数。类的实例称为对象。
如果非要比,拿python模块和类的对象比,那么还差不多,这两者相同点非常多。(问猪和狗有什么区别这还差不多。猪和嘴巴这个属性有什么区别,猪和吃东西这个动作有什么区别,那就是不成立的问题了)
5、写在类名下面的东西,就算不调用类,也是会运行的,只有函数(模块下面的)和方法(类下面的)里面的代码才不会运行。
一些过时的东西,就算不再调用了,如果直接写在类名下面,只要项目用了这个模块,还是会报错的。比如直接在类名下面写下面这句
conn
=
pymysql.connect(host
=
'127.0.0.1'
, port
=
3306
, user
=
'root'
, passwd
=
'
', db='
tkq1
', charset='
utf8')
如果有一天,你修改了数据库的密码,没修改这里,即使你从此再也不使用这个类了,运行项目仍然会报错。抑制这个报错,就算非要把connect这个属性作为类属性,可以使用享元模式或者单例模式,在方法中进行数据库连接,这样就不会造成没调用这个类,没用到数据库,项目还报这里错误;而且这段连接数据库的代码直接写在类名下还会造成浪费连接时间,导致程序启动慢(java里面的单例模式 饿汉和饱汉的影响这着差不多)。
python的初始化运行了哪些?的更多相关文章
- python virtualenv环境运行django
python virtualenv环境运行django 安装前准备 检查pip版本与python版本是否一致 [root@localhost bin]# whereis pip pip: /usr/b ...
- python unittest case运行失败重试
因为使用unittest进行管理case的运行.有时case因为偶然因素,会随机的失败.通过重试机制能够补充保持case的稳定性.查阅资料后发现,python的unittest自身无失败重试机制,可以 ...
- Python是编译运行的
虽然Python被说成是一种解释型语言,但是实际上,Python源程序要先经过编译,然后才能运行. 与Java语言类似,Python源程序编译之后得到的是字节码,交由Python虚拟机来运行. 关于这 ...
- Windows系统中设置Python程序定时运行方法
Windows系统中设置Python程序定时运行方法 一.环境 win7 + Python3.6 二.步骤 1,在Windows开始菜单中搜索“计划任务”,并且点击打开“计划任务”: 2.点击“创建基 ...
- 谈谈 Python 程序的运行原理
因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,谈谈 Python 程序的运行原理 这篇文章准确说是『Python 源码剖析』的 ...
- 【Linux学习】python脚本直接运行与nohup运行结果不同
之前遇到问题,在云主机上运行python脚本直接运行与nohup运行结果不同,甚至nohup根本运行不出来. 后来参考下别人的博客,终于知道问题了. nohup 使用的python版本问题. 而且no ...
- appium+python解决每次运行代码都提示安装Unlock以及AppiumSetting的问题
appium+python解决每次运行代码都提示安装Unlock以及AppiumSetting的问题(部分安卓机型) 1.修改appium-android-driver\lib下的android-he ...
- 不能在Python Console中运行pytest
在Python Console中运行pytest发现报错了 这是为什么?因为Python Console已经是进入python之后的环境,就像在python自带的IDLE中运行pytest pytes ...
- Python 字典初始化dict()和{}
参考:https://doughellmann.com/blog/2012/11/12/the-performance-impact-of-using-dict-instead-of-in-cpyth ...
随机推荐
- TCP和UDPsocket中SO_SNDBUF和SO_RCVBUF_转
1.Background Winsock kernel buffer To optimize performance at the application layer, Winsock copies ...
- linux下gzip的压缩/解压缩详解
linux下gzip的压缩详解 Linux压缩保留源文件的方法: gzip –c filename > filename.gz Linux解压缩保留源文件的方法: gunzip –c filen ...
- Linux(Centos7)yum安装最新redis
正如我们所知的那样,Redis是一个开源的.基于BSD许可证的,基于内存的.键值存储NoSQL数据库.Redis经常被视为一个数据结构服务器,因为Redis支持字符串strings.哈希hashes. ...
- JS实现IE下打印和打印预览
http://blog.csdn.net/rongyongfeikai2/article/details/8460598 ——————————————————————————————————————— ...
- 苹果Mac OS系统修改Hosts文件的方法
使用苹果Mac OS X系统的用户有很多,近期也有不少童鞋问我Mac怎么修改hosts,修改hosts的方式有很多,下面我就整理两种比较方便的方法吧,希望能够帮到大家. 在某些时候可能遇到了需要修改系 ...
- SAP+ 差旅报销集成方案的实现
跨国集团通常都会有一个财务共享中心SSC的集中处理业务部门,用于统计来自各个公司的差旅报销,而1).传统的OA审批 虽然审批流是优势存在着需要SAP数据二次录入,数据不同步等困难,2).如果终端用户都 ...
- 【C#】使用DWM实现无边框窗体阴影或全透窗体
1.无边框窗体阴影,win7(需要开启Aero效果)及以上系统 public class LdwmForm : Form { public LdwmForm() { Initialize(); } / ...
- Unity入门教程(上)
一.介绍 目的:通过尝试制作一款使用玩家角色把小球弹飞的简单小游戏,熟悉使用Unity进行游戏开发的基本流程. 软件环境:Unity 2017.3.0f3,Visual Studio 2013 二.创 ...
- mvn archetype:generate 创建Maven项目
mvn archetype:generate 创建Maven项目 mvn compile 编译源代码 mvn deploy 发布项目 mvn test-compile 编译测试源代码 mvn test ...
- InteliJ Idea pom.xml不自动提示的解决
file–>Settings–>Build,Execute…–>Build Tools–>Maven–>Repositories 会看到类似表格的画面,内容是你的mave ...