python中的相关帮助命令

假设s是一个字符串,

那么dir(s)可以列出字符串对象的所有属性(方法也是函数属性),其中有下划线的部分与类重 载有关,用来表示python实现细节,没有下划线的属性是对象可以调用的方法。查询具体的函数用法可以使用help(s.replace)的方式

文档字符串:module.class.method._doc__可以查看模块的文档注释,自己敲代码的时候也可以如此编写可查看的注释文档。当然也可以使用help方法。

字符串相关:

1,python中字符串可以进行逆向索引,相乘表示重复

2,可作用于多种类型的通用型操作都是以内置函数或表达式的形式出现的【例如,len(x),x【0】】;但是类型特定的操作是以方法调用的形式出现的。如s.upper()

3,python中字符串可以用单引号或者双引号包括,也允许在三个引号中包括多行字符串常量,采用这种方式的时候,所有行合并在一起,并在每一行的末尾加上换行符。

三个引号还可以用来构成python的文档字符串。

4,空白行在模块中被忽略,然而在交互模式下是结束标志。

4,字符串的模式匹配大多在re库中,可以进行正则匹配,查找等。

5,r用来路径中取消转义。

6,将列表转换为字符串的方法:''.join(l)

 python比较

“==”测试值的相等性,

is 测试对象的一致性

python中真和假的比较

python中将0是做为假,并且也把任意的空数据结构视为假,任何非空数据结构视为真

python中的集合类型(set)

和元祖一样,集合是唯一的、不可变的对象的一个无序集合,集合从外观上看起来就像是无值的字典,集合的项是无序的,唯一的,不可变的,因此,它们的行为和字典的键很像。

,字典可以视作键值的列表进行迭代
,表达式可以用括号括起来(),如果想建立单元素的元祖使用(,)
,文件最好的读取方法是使用迭代器,这种方式容易编写,并且对内存使用很好,而且较快。
,文件读取的内容是字符串,而不是对象。
,交互方式的回显能够显示给胡正确的字节内容,然而print语句则会解释内嵌行终止符来给予用户满意的结果。(一个使用repr实现,一个使用str实现)
,eval能把字符串当作可执行代码进行处理
,pickle模块能够直接在文件中存储几乎任何python对象的高级工具,不要求把字符串转换来转换去。
shelve则可以实现键值:对象的存储。
,赋值生成的是引用,而不是拷贝,此时考虑使用分片
10,map()能将对应函数作用于参数
11,不要指望在远处修改对象的函数会返回结果
list.sort();list().append()返回的对象都是None

python中实现循环迭代:

在python中实现循环迭代的方法从优到劣依次是:

列表解析>for(c实现)>while(python字节码实现)

可迭代对象:一代实现迭代协议,具有__next__方法的都可以认为是可迭代的,并且通过捕捉stopIteration异常来确定何时离开。

文件本身就是自己的迭代器,而列表以及其他的内置对象,则需要启用iter来启动迭代。迭代对象可通过next()来读取下一个值。

列表解析和for循环不同之处在于,前者产生一个新的列表对象。

sorted返回一个新的排序后的列表,而sort则是进行原地排序。

1,range返回一系列连续增加(当然也可以减少的数)

x='adjsdojfoeoi'
for i in range(0,len(x),2):
print(x[i],end=' ') print()
等价于
for c in x[::2]:
print(c,end=' ')

2,zip用于实现并行遍历

keys=['key1','key2','key3']
values=['val1','val2','val3']
l=list(zip(keys,values))
print(l) dic=dict(zip(keys,values))
print(dic)
等价于:
dic={}
for (k,v) in zip(keys,values):
dic[k]=v
print(dic)

3,enumerate产生偏移和元素

s=[0,1,2,3]
s='sdfkweoo'
for (offset,item) in enumerate(s):
print('offset:'+str(offset)+',item:'+str(item))

4,map把一个函数调用应用到传入的可迭代对象的每一项:list(map(str.upper,open('script.py')))

在python3.0中,zip,map,filter,reduce,字典的keys,values等返回可迭代的对象,而不是内存中的一个结果列表(在for循环中可以直接使用),如果需要这么一个列表,需要使用list(range(。。。))来产生一个真正的列表对象。

range对象可以支持多个迭代器,每一个迭代器能够记住自己的位置,而其他的zip,file类型,map,filter不支持多个活跃的迭代器。

 python中变量的作用域问题

和其他语言的作用域类似

LEGB原则:首先是本地,之后是函数内(如果有的话),之后全局,最后的python的内置变量。

全局变量:

(1)位于模块内部的顶层的文件名

(2)global:全局变量如果是在函数内部被赋值的话,必须通过声明。

(3)nonlocal:只能应用于一个嵌套的函数的作用域中的一个名称,而不是def之外的全局模块作用域。

函数参数

函数可以返回多个值,如果封装为元组,那么圆括号是可选的。、

*/**在函数定义的头部意味着收集任意数量的参数,**允许将关键字参数转换为字典。然而作为函数调用时,代表解包任意数量的参数。

关键字参数:出现在参数*args之后,所有这些参数都必须在调用中使用关键字语法来传递。

yield

生成器函数;生成器yields一个值,而不是返回一个值,yield语句挂起该函数并向调用者发送回一个值,但是,保留足够的状态以使得函数能够从它离开的地方继续。

生成器表达式,就像一般的列表解析一样,但是它们是括在圆括号而不是方括号里面的。

python模块儿相关话题

1,和导入相关的语句有:

import、import...from...、reload

2,_x在变量名前面加下划线,可以防止客户端使用from * 语句导入模块儿名时,将其中的变量名复制出去。有时候程序员对于不想用作其他用途的方法也添加一个下划线来减少命名冲突的可能性。

也可以在模块顶层将变量名的字符串变量赋给变量__all__

两种管理恰好相反,__all__是指出要复制的变量名,_x是指出不被复制的变量名。python模块会先寻找模块中的__all__列表,如果没有定义的话,from * 就会复制开头没有下划线的那些变量。

__name__每个模块都有一个__name__属性,如果文件是以顶层程序文件启动时,__name__就会设置为字符串“__name__“,如果仅是文件被导入,__name__就会改为客户端所了解的模块名。

这一点在测试的时候很有用。

 python的类:

python中的类中__()__的属性和运算符重载有关,因为python的运算符重载是提供特殊命名的方法来拦截运算,python语言提每种运算和特殊命名的方法之间,定义了固定的映射方法。

例如+对应__add__;打印对应__str__;几乎每个实际的类都会重载的方法是:__init__

对于python中的方法:

客户端调用的instance.method(args...)会被系统自动转换为如下的等价形式:class.method(instance,args...)

和类自省相关的方法:

instance.__class__提供了一个从实例到创建它的类的链接

反过来__name__,以及__bases__提供了超类的访问

内置的object.__dict__提供了一个字典能够呈现类的所有属性

@abstractmethod用于声明一个抽象方法(元类声明)。带有抽象方法的类是不能够继承的。

__dict__属性详细解释

模块的命名空间实际上是通过字典的形式实现的,并且可以通过内置属性__dict__显示这一点,属性点号运算实际上就是字典的索引运算,属性继承实际上就是搜索链接的字典而已。

>>> class super:
def hello(self):
self.data='spam' >>> class sub(super):
def hola(self):
self.data2='eggs'
x.__class__
<class '__main__.sub'>
>>> x.__base__
Traceback (most recent call last):
File "<pyshell#17>", line 1, in <module>
x.__base__
AttributeError: 'sub' object has no attribute '__base__'
>>> sub.__bases__
(<class '__main__.super'>,)
>>> super.__class__
<class 'type'>
>>> y=sub()
>>> x.hello()
>>> x.__dict__
{'data': 'spam'}
>>> x.__dict__['data']
'spam'
>>> x.hola()
>>> x.__dict__
{'data': 'spam', 'data2': 'eggs'}
>>> sub.__dict__.keys()
dict_keys(['__module__', 'hola', '__doc__'])
可见,每一个实例都有独立的命名空间字典,一开始是空的,随着调用和复制而进行增添。
属性其实是python的字典键,所有其实有两种方法可以进读取,通过点号运算和键的索引运算。
dir(className)将显示所有类的方法和系统属性
dir(object)将显示所有实例的方法,属性和系统属性
object__dict__.keys()显示对象的属性(无方法、以及系统属性)
其他属性:
__name__用来显示当前运行的类的名称,如果是顶层文件调用,那么显示main
__bases__用来显示超类的名称
__doc__是注释功能,可视化的文档字符串

python相关遗漏知识点补充的更多相关文章

  1. 【学习笔记】--- 老男孩学Python,day8 知识点补充 join,列表不能循环删除,深浅copy

    1. 补充基础数据类型的相关知识点 1. str. join() 把列表变成字符串 2. 列表不能再循环的时候删除. 因为索引会跟着改变 3. 字典也不能直接循环删除. 把要删除的内容记录在列表中. ...

  2. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  3. Day8 Python基础之遗漏知识点(六)

    1. 遗漏知识点 深.浅拷贝:   http://www.cnblogs.com/yuanchenqi/articles/5782764.html a=b: 浅拷贝: 深拷贝 集合(set) 集合的定 ...

  4. python day4 元组/字典/集合类知识点补充

    目录 python day4 元组/字典/集合类知识点补充 1. 元组tuple知识点补充 2. 字典dict的知识点补充 3. 基本数据类型set 4. 三元运算,又叫三目运算 5. 深复制浅复制 ...

  5. python 知识点补充

    python 知识点补充 简明 python 教程 r 或 R 来指定一个 原始(Raw) 字符串 Python 是强(Strongly)面向对象的,因为所有的一切都是对象, 包括数字.字符串与 函数 ...

  6. python遇到的知识点

    python遇到的知识点,记录一下.方便学习. 文件相关操作 查了资料,关于open()的mode参数: 'r':读 'w':写 'a':追加 'r+' == r+w(可读可写,文件若不存在就报错(I ...

  7. Python数据分析--Pandas知识点(三)

    本文主要是总结学习pandas过程中用到的函数和方法, 在此记录, 防止遗忘. Python数据分析--Pandas知识点(一) Python数据分析--Pandas知识点(二) 下面将是在知识点一, ...

  8. set集合,深浅拷⻉以及部分知识点补充

    set集合,深浅拷⻉以及部分知识点补充内容:1. 基础数据类型补充2. set集合3. 深浅拷⻉主要内容: ⼀. 基础数据类型补充⾸先关于int和str在之前的学习中已经讲了80%以上了. 所以剩下的 ...

  9. 计算机开放电子书汇总(包括二十多本python相关的图书教程)

    计算机开放电子书汇总(包括二十多本python相关的图书教程) https://github.com/it-ebooks/it-ebooks-archive 这个汇总包含了各种计算机相关的开放图书和文 ...

随机推荐

  1. a++和++a的区别

    a++是先执行表达式后再自增,执行表达式时使用的是a的原值.++a是先自增再执行表达示,执行表达式时使用的是自增后的a.例:int a=0printf("%d",a++); //输 ...

  2. 360度3D 旋转插件

    Circlr插件是一款基于jQuery的可以对图片进行360度全方位旋转展示的插件.Circlr通过按一定角度规律拍摄的产品图片,制作出可以使用鼠标拖动.鼠标滚轮和移动触摸来进行图片逐帧旋转的效果.比 ...

  3. Nginx + Tomcat动静分离 (转)

    什么是动静分离 为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源比如图片,js,css等文件,我们可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时 ...

  4. 096、运行第一个Service (Swarm03)

    参考https://www.cnblogs.com/CloudMan6/p/7874609.html   上一节我们部署好了 Swarm 集群,下面部署一个运行httpd镜像的service进行演示 ...

  5. css中新增的属性calc()可以计算使用

    什么是calc: calc是英文单词calculate(计算)的缩写,是css3的一个新增的功能,用来指定元素的长度.可以使用calc()给元素的border.margin.pading.font-s ...

  6. cx_Oracle 操作oracle数据库

    cx_Oracle 操作oracle数据库 class MyOracle(): def __init__(self, host_name="ip", port=1521, sid= ...

  7. java 统计字符串中连续重复的字符,并得出新字符串

    题目: 比如输入为aaabbc,输出a3b2c1 完整解答: public class Other { static String func(String str) { StringBuffer re ...

  8. Linux--目录管理与文件管理--02

    ******Linux目录结构与目录管理******* 一.Linux目录结构: 1.目录创建规则:FHS文件系统层次化标准 指定了Linux操作系统的哪些目录是一定要具备的 2.目录的结构 树形结构 ...

  9. CentOS 基础命令

    命令格式: 命令字  选项   参数1 参数2 ..... CentOS 7 主目录介绍 [xbb@localhost ~]$ ls -l /total 16lrwxrwxrwx. 1 root ro ...

  10. python2 'ascii'编码问题

    UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 223: ordinal not in range(128) ...