四、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是数字,“汉”是文字,否则它是分不 ...
随机推荐
- java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with specified [javax.transaction.TransactionManager] required
错误信息: java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA trans ...
- wav文件与byte互转 C#
//wav转byte public void WavToByte() { Byte[] bs; FileStream fs = new FileStream(@"C:\1.wav" ...
- B. RGB plants
B. RGB plants time limit per test 2.0 s memory limit per test 64 MB input standard input output stan ...
- ArcoLinux安装完成后的的配置
ArcoLinux安装完成后的的配置 这可能是全网第一篇Arcolinux的教程 1. 更改源 修改/etc/pacman.d/mirrorlist 在最头上增加清华源 Server = https: ...
- Golang的进制转换实战案例
Golang的进制转换实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用进制概述 1>.进制概述 进制也就是进位制,是人们规定的一种进位方法.举个例子:二进制就 ...
- POJ 2305:Basic remains 进制转换
Basic remains Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5221 Accepted: 2203 Des ...
- .Net 经典案例
1.捕捉一只小可爱 using System; using System.Collections.Generic; using System.Linq; using System.Text; usin ...
- 文本编辑器vim/vi——模式切换及输入模式
vim一共有三种模式:命令模式.输入模式.末行模式 要从命令模式切换到输入模式:a,i,o a——append 属于在后面追加内容:i——insert 属于插入,在前面插入内容:o——other 属于 ...
- vzray服务端配置
打开securecrt登陆服务器 输入命令:bash <(curl -s -L https://git.io/vzray.sh)1 回车tcp 回车端口 回车默认 回车
- 实验吧-web-天下武功唯快不破(Python中byte和str的转换)
题目:看看响应头 打开网站,既然已经提示我们看响应头了,那我们就看看呗(习惯bp,也可直接F12查看) 可以看到,响应头部分有个FLAG,而且有提示:please post what you find ...