四、python杂项
一、pycharm单行和多行注释快捷键
多行注释就一个组合键:选中+Ctrl+/
多行向里面移动:选中+shift+TAB
多行向外面移动:选中+TAB
二、什么是脚本语言?
忽然想到这个问题,其实python学习中,看到有人叫脚本语言、有人说是编译语言。脚本语言需要的是解释器,进行脚本的解释执行,而编译语言需要的是编译器,程序写完,需要的是编译,生成字节码,链接动态库,运行结果,所以脚本语言更具实时性,但编译语言一次编译,多次执行,效率高,但依赖编译器,跨平台性差。脚本语言是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。每次运行,都是重复执行的。这是我理解的区别。
三、全局变量与局部变量?
3.1 如果要在函数内改变全局变量的值,就要用global 在函数内声明全局变量,
3.2 函数中的变量都在栈帧中,栈帧可以访问引用函数之外的变量,但是不能被函数之外的变量引用
3.3 局部变量比函数效率更高。
四、__str__()函数的作用:
写程序时,打印一个实例化对象时,打印的其实是一个对象的地址。而通过__str__()函数就可以帮助我们打印对象中具体的属性值,或者你想得到的东西。
例子:
class ss:
def __init__(self,age,name):
self.age = age
self.name = name
def __str__(self):
return str(self.age)+",,wozenmezhemeshuai,,"+self.name
if __name__=="__main__":
s = ss(21,'aitebao')
print(s)
21,,wozenmezhemeshuai,,aitebao
七、os和os.path模块:
os.system模块可以直接调用系统的命令
os.startfile:直接调用可执行文件 (可以理解为安装的软件,不是原有的)
os 模块:创建、删除目录、获取文件信息等
os.path 模块提供了目录相关(路径判断、路径切分、路径连接、文件夹遍历)的操作
八、http://www.python.org可以进行在线程序的编写。
九、可读性强,意味着让你可以在更短的时间学习和记忆,提高生产力。
十、比如a=3, a为变量,不需要像java一样声明类型,因为在a=3时,对象就有了类型,在堆中,定义了对象地址、类型、和值了。
十一、round(3.14)=3,四舍五入后产生的新的对象。
十二、强转换也会产生新的对象。
十三、删除列表元素和增加列表元素一样,都会涉及元素的拷贝。
十四、python中,字典的底层为散列表,散列表为一个稀疏数组,数组的每个单元叫做bucket,我们经过计算键的hash值,指定一定的偏移量,然后看对应的bucket是否有值,无值,加入之;有值,则在进行偏移,当散列表2/3都有值时,在进行扩容。
十五、内部函数作用:
1.隐藏数据 2.避免重复代码,只为所属外部函数服务,不面向所有,不被频繁调用 3.闭包
nonlocal 内部函数中,用来声明外层的局部变量,在内层需要修改外层变量时,会用到。
十六、locals(),字典返回所在函数局部变量
globals(),字典返回的所有全局变量
十七、对于面向对象和面向过程的理解?
面向过程:适合简单的,不需要协作即可完成的,需要找动词作为处理关系的。
面向对象:适合复杂的,需要协作的,需要找名词作为类名,确定类与类之间的关系的。
十八、几个需要知道的内置方式,
1.对象.__dict__表示对象的属性字典
2.print(dir(对象))表示对象的全部方法和属性
3.类方法不能调用实例方法和属性
4.__del__析构函数,del实际调用的是__del__
5.对象()实际调用的是__call__方法。
十九、trackback:打印异常的详细信息
with open("d/a.txt","a") as f
trackback.print.exc(file=f)
二十、文件操作中的file.close关闭的是全部,包括内存python文件程序资源,解释器缓存,os操作系统打开硬盘的硬件资源。
二十一、编码与解码不一致,大多造成乱码,python程序为UTF-8,windows默认编码为GBK,linux默认的编码是UTF-8
二十二、file.write():把字符串写到文件中,file.writelines(b)把字符串写到列表中。
二十三、os.listdir(path):只能打印一层文件或文件夹
os.walk():递归遍历所有文件和目录
二十四、个人理解导入模块实际是一种类似单例的模式,在解释器中只会被加载一次。如果要重新加载importlib.reload(模块名)
二十五、模块和包的发展史可以让我们知道,核心的哲学思想就是“量变引起质变”,“物以类聚”。同样的思路,在企业管理、人的管理中思想完全一致。
二十六、模块的发布:
本地发布:在当前包下,python setup.py sdist
下载: python setup.py install(安装到site-packages中)
在pypi官网发布:https://pypi.org发布
二十七、序列化和反序列化
序列化:将对象转化成“串行化”数据形式,存储在硬盘或者网络传输到其他地方。
反序列化:是指相反的操作,将读取的“串行化数据”转化成对象。
二十八、GUI图形用户界面编程就4步骤:
1.创建跟窗口
2.在根窗口添加各种可视化组件
3.布局管理器调整组件的大小和位置
4.事件处理,让组件活动起来,有相应的事件反应。
二十九、既然可以直接在根窗口添加组件,为什么要Frame,个人理解,因为复杂的可视化界面需要,如果可视化界面足够复杂,各种类型的组件都有,那么我们在添加了Frame后,就可以方便的进行区分。比如不同分类的单选、一部分相同控件不显示等等。可能还有自己没有意识到的许多方便之处。遵循经典写法即可。(了解)
三十、%g 浮点数字(根据值的大小采用%e或%f)
三十一、静态方法是定义在类对象中的,和类中的普通函数类似,和类对象无关的一个函数而已。
三十二、对于__call__方法
对象通过提供__call__(slef, [,*args [,**kwargs]])方法可以模拟函数的行为,如果一个对象x提供了该方法,就可以像函数一样使用它,也就是说x(arg1, arg2...) 等同于调用x.__call__(self, arg1, arg2) 。模拟函数的对象可以用于创建防函数(functor) 或代理(proxy).
class DistanceForm(object):
def __init__(self, origin):
self.origin = origin
print "origin :"+str(origin)
def __call__(self, x):
print "x :"+str(x)
p = DistanceForm(100)
p(2000)
总结:此方法在对象中调用,创建该方法后,对象进行初始化后,就一定最后会执行该方法,且自动执行在该方法中的所有方法,比如类装饰器。
三十三、super(MyTank, self).__init__(top,left);找到mytank的父类后,将子类对象self传递给父类作为对象。
三十四、关于并发编程,有三种方式:
1)多进程,每个进程只有一个线程
2)多线程,每个进程有多个线程
3)多进程,每个进程又有多个线程,但是这种模式很复杂,实际很少采用。
在python上有一个守护线程的概念,就是主线程死,守护线程也死。创建一个被多个线程共享的队列是最安全的方式,队列里面包换了锁。
三十五、genterator:生成器,一边计算,一边生成,快于推导式
iterator:迭代器,生成器也是迭代器的一种表现形式,方法next
iterable:具备迭代性,生成器和集合类都具备迭代性。
三十六、地址/robots.txt,robots是网站跟爬虫间的协议.
三十七、fidder抓包工具,抓取请求。
四、python杂项的更多相关文章
- 二十四. Python基础(24)--封装
二十四. Python基础(24)--封装 ● 知识结构 ● 类属性和__slots__属性 class Student(object): grade = 3 # 也可以写在__slots ...
- 十四. Python基础(14)--递归
十四. Python基础(14)--递归 1 ● 递归(recursion) 概念: recursive functions-functions that call themselves either ...
- 四. Python基础(4)--语法
四. Python基础(4)--语法 1 ● 比较几种实现循环的代码 i = 1 sum = 0 while i <= 10: # 循环10-1+1=10次 sum += i i ...
- python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法
python3.4学习笔记(二十四) Python pycharm window安装redis MySQL-python相关方法window安装redis,下载Redis的压缩包https://git ...
- Python学习笔记整理(四)Python中的字符串..
字符串是一个有序的字符集合,用于存储和表现基于文本的信息. 常见的字符串常量和表达式 T1=‘’ 空字符串 T2="diege's" 双引号 T3=""&quo ...
- Python 全栈开发四 python基础 函数
一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数 ...
- 初试PyOpenGL四 (Python+OpenGL)GPU粒子系统与基本碰撞
这篇相当于是对前三篇的总结,基本效果如下: 在初试PyOpenGL一 (Python+OpenGL)讲解Pyopengl环境搭建,网格,球体,第一与第三人称摄像机的实现.在初试PyOpenGL二 (P ...
- 四 python并发编程之协程
一 引子 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去 ...
- 四.python基础数据类型
一.什么是数据类型? 什么是数据类型? 我们人类可以很容易的分清数字与字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻,除非你明确的告诉它,1是数字,“汉”是文字,否则它是分不 ...
随机推荐
- 1.HDFS分布式文件系统
HDFS概述及设计目标 如果让我们自己设计一个分布式文件存储系统,怎么做? HDFS设计目标 非常巨大的分布式文件系统 运行在普通廉价的硬件上 易扩展,为用户提供性能不错的文件存储系统 HDFS架构 ...
- mysql concat与concat_ws区别
select concat('大','小') as size from 表 查询出结果为:大小 select concat('大',NULL) as size from 表 查询出结果为:null c ...
- 开源免费的安卓投屏工具-Scrcpy
最近需要使用安卓投屏在桌面上操作,一开始使用Vysor,免费版画质无法直视,发现一个开源的工具,Scrcpy,貌似效果不错,但没有GUI,命令行安装,整起(Mac) 1.安装 homebrew: 通过 ...
- swarm docker-compose.yml NFS 搭建LNMP
列表: 172.16.0.40 (swarm-master) 172.16.0.160 (swarm-worker) 172.16.0.170 (swarm-worker) 1 ...
- POJ1088:滑雪
滑雪 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 82112 Accepted: 30706 Description ...
- Sass 安装到使用
sass学习 Sass 可以通过以下三种方式使用:作为命令行工具:作为独立的 Ruby 模块 (Ruby module):或者作为 Rack-enabled 框架的插件(例如 Ruby on Rail ...
- 137-PHP static修饰的类属性
<?php class test{ //定义一个类 public static $num=0; //定义static修饰的类属性 public function __construct(){ / ...
- vim 好用的插件
1 切换文件 使用buffer 这里可以安装一个 minibufExplorer https://github.com/huanglongchao/minibufexpl.vim 2 在项 ...
- Bulma CSS - 响应式
Bulma CSS框架教程 Bulma CSS – 简介 Bulma CSS – 开始 Bulma CSS – CSS类 Bulma CSS – 模块化 Bulma CSS – 响应式 Bulma是一 ...
- Redis Sentinel 学习笔记
转载出处: http://blog.csdn.net/lihao21 概述 Redis Sentinel 是用来实现 Redis 高可用的一套解决方案.Redis Sentinel 由两个部分组成:由 ...