下面的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的初始化运行了哪些?的更多相关文章

  1. python virtualenv环境运行django

    python virtualenv环境运行django 安装前准备 检查pip版本与python版本是否一致 [root@localhost bin]# whereis pip pip: /usr/b ...

  2. python unittest case运行失败重试

    因为使用unittest进行管理case的运行.有时case因为偶然因素,会随机的失败.通过重试机制能够补充保持case的稳定性.查阅资料后发现,python的unittest自身无失败重试机制,可以 ...

  3. Python是编译运行的

    虽然Python被说成是一种解释型语言,但是实际上,Python源程序要先经过编译,然后才能运行. 与Java语言类似,Python源程序编译之后得到的是字节码,交由Python虚拟机来运行. 关于这 ...

  4. Windows系统中设置Python程序定时运行方法

    Windows系统中设置Python程序定时运行方法 一.环境 win7 + Python3.6 二.步骤 1,在Windows开始菜单中搜索“计划任务”,并且点击打开“计划任务”: 2.点击“创建基 ...

  5. 谈谈 Python 程序的运行原理

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,谈谈 Python 程序的运行原理 这篇文章准确说是『Python 源码剖析』的 ...

  6. 【Linux学习】python脚本直接运行与nohup运行结果不同

    之前遇到问题,在云主机上运行python脚本直接运行与nohup运行结果不同,甚至nohup根本运行不出来. 后来参考下别人的博客,终于知道问题了. nohup 使用的python版本问题. 而且no ...

  7. appium+python解决每次运行代码都提示安装Unlock以及AppiumSetting的问题

    appium+python解决每次运行代码都提示安装Unlock以及AppiumSetting的问题(部分安卓机型) 1.修改appium-android-driver\lib下的android-he ...

  8. 不能在Python Console中运行pytest

    在Python Console中运行pytest发现报错了 这是为什么?因为Python Console已经是进入python之后的环境,就像在python自带的IDLE中运行pytest pytes ...

  9. Python 字典初始化dict()和{}

    参考:https://doughellmann.com/blog/2012/11/12/the-performance-impact-of-using-dict-instead-of-in-cpyth ...

随机推荐

  1. 设置一个按钮为一个图片,不要border

    //设置一个按钮为一个图片,不要border ImageIcon searchIcon = ImageToolkit.loadImageIcon(/search.png"); ImageIc ...

  2. Linux SWAP 交换分区大小与内存的关系

    LinuxSWAP交换分区大小与内存的关系SWAP(交换分区)[Windows虚拟内存]我们机房中一台Linux服务器运行缓慢,系统服务出现间歇性停止响应,让我过去处理一下这一问题,登录到服务器之后, ...

  3. PHP数组缓存:三种方式JSON、序列化和var_export的比较

    使用PHP的站点系统,在面对大数据量的时候不得不引入缓存机制.有一种简单有效的办法是将PHP的对象缓存到文件里.下面我来对这3种缓存方法进行说明和比较. 第一种方法:JSONJSON缓存变量的方式主要 ...

  4. 华为手机使用objectAnimation异常

    在一个recyclerView上实现item的立体翻转动画,魅族.小米.华为平板都试过了没问题,但是在一个7.0的华为手机上,只要一翻转item就消失了,网上发现也有其他人遇到这种问题,大概是obje ...

  5. 用stringr包处理字符串

    <Machine Learning for Hackers>一书的合著者John Myles White近日接受了一个访谈.在访谈中他提到了自己在R中常用的几个扩展包,其中包括用ggplo ...

  6. JavaScript世界的一等公民—— 函数

    简介 在很多传统语言(C/C++/Java/C#等)中,函数都是作为一个二等公民存在,你只能用语言的关键字声明一个函数然后调用它,如果需要把函数作为参数传给另一个函数,或是赋值给一个本地变量,又或是作 ...

  7. [kafka] 002_kafka_相关术语详细解析

    参考: http://www.cnblogs.com/likehua/p/3999538.html http://kafka.apache.org/documentation.html#getting ...

  8. 树莓派3 U盘启动 配置 & 即 MSD启动 总结

    树莓派3添加了一个新特性:允许USB启动.现在我们既可以从SD卡启动,也可以从USB启动.USB设备可以是U盘,带USB适配器的SSD硬盘,甚至是移动硬盘. 本文介绍怎么从U盘启动树莓派3.   1. ...

  9. (笔记)Linux下的CGI和BOA使用期间遇到的问题汇总

    前段时间在做C/S模式下的视频监控,这段时间是B/S模式下的.期间遇到了不少问题,有些问题一卡就是几天,有些问题的解决办法在办法在网上也不是很好找,所以还有些问题虽然得到了临时解决,但是其原理现在我本 ...

  10. 使用Maven创建Java项目

    在本教程中,我们将向你展示如何使用 Maven 来创建一个 Java 项目,导入其到Eclipse IDE,并打包 Java 项目到一个 JAR 文件. 所需要的工具: Maven 3.3.3 Ecl ...