列表前面加星号作用是将列表中所有元素解开成独立的参数
a=[1,2,3]
print(*a)
输出:
1 2 3
pip install
pip install git+https://github.com/Robpol86/terminaltables.git
clone and install
git clone https://github.com/Robpol86/terminaltables.git
cd terminaltables
python setup.py install
读取文件的三个方法:read()、readline()、readlines()。均可接受一个变量用以限制每次读取的数据量,但通常不使用。
如果文件非常大,尤其是大于内存时,无法使用read()方法。
示例:
兼职模特联系方式.txt
文本的内容如下:
吴迪 177 70 13888888
王思 170 50 13988888
白雪 167 48 13324434
黄蓉 166 46 13828382
read()直接读取字节到字符串中,包括了换行符
>>> file = open('兼职模特联系方式.txt', 'r')
>>> a = file.read()
>>> a
'吴迪 177 70 13888888\n王思 170 50 13988888\n白雪 167 48 13324434\n黄蓉 166 46 13828382'
readline方法
特点
:readline()方法每次读取一行
;返回的是一个字符串对象,保持当前行的内存
缺点
:比readlines慢得多
readline() 读取整行,包括行结束符,并作为字符串返回
>>> file = open('兼职模特联系方式.txt', 'r')
>>> a = file.readline()
>>> a
输出
'吴迪 177 70 13888888\n'
- readlines方法
readlines()读取所有行然后把它们作为一个字符串列表返回。
>>> file = open('兼职模特联系方式.txt', 'r')
>>> a = file.readlines()
>>> a
['吴迪 177 70 13888888\n', '王思 170 50 13988888\n', '白雪 167 48 13324434\n', '黄蓉 166 46 13828382']
[m:n] #切片操作,取a[m]~a[n-1]之间的内容,m\n可以为负,m>n时返回空
[m::n] #从a[m]开始,每跳|n|个取一个,当n为负时逆序取数。 当n为正的时候,m为空则默认m=0,n为负时,m为空则默认为-1
In [1]: import numpy as np
In [2]: a = np.random.rand(10)
In [3]: a
Out[3]:
array([0.56206001, 0.93252115, 0.24078108, 0.36059548, 0.1946579 ,
0.35166964, 0.77443621, 0.97699886, 0.30177723, 0.10688389])
In [4]: a[3:2] # m>n返回空
Out[4]: array([], dtype=float64)
In [5]: a[::-1] # 从a[-1]开始逆序取数,间隔为1,即逆序所有
Out[5]:
array([0.10688389, 0.30177723, 0.97699886, 0.77443621, 0.35166964,
0.1946579 , 0.36059548, 0.24078108, 0.93252115, 0.56206001])
In [6]: a[3::-1] # 从a[3]开始逆序取数,间隔为1
Out[6]: array([0.36059548, 0.24078108, 0.93252115, 0.56206001])
In [7]: a[8::-2] # 从a[8]开始逆序取数,间隔为2
Out[7]: array([0.30177723, 0.77443621, 0.1946579 , 0.24078108, 0.56206001])
In [8]: a[8::-3] # 从a[8]开始逆序取数,间隔为3
Out[8]: array([0.30177723, 0.35166964, 0.24078108])
In [9]: a[3::1] # 从a[3]开始正序取数,间隔为1
Out[9]:
array([0.36059548, 0.1946579 , 0.35166964, 0.77443621, 0.97699886,
0.30177723, 0.10688389])
In [10]: a[3::2] # 从a[3]开始正序取数,间隔为2
Out[10]: array([0.36059548, 0.35166964, 0.97699886, 0.10688389])
In [11]: a[3::3] # 从a[3]开始正序取数,间隔为3
Out[11]: array([0.36059548, 0.77443621, 0.10688389])
In [12]: a[::2]
Out[12]: array([0.56206001, 0.24078108, 0.1946579 , 0.77443621, 0.30177723])
In [13]: a[::-2]
Out[13]: array([0.10688389, 0.97699886, 0.35166964, 0.36059548, 0.93252115])
仅开头带双下划线__的命名
用于对象的数据封装,以此命名的属性或者方法为类的私有属性或者私有方法
。
class Foo(object):
def __init__(self):
self.__name = 'private name'
def getname(self):
return self.__name
def __spam(self):
print 'private method'
def bar(self):
self.__spam()
如果在外部直接访问私有属性或者方法:
>>> f = Foo()
>>> f.__name
Traceback (most recent call last):
File "" , line 1, in <module>
f.__name
AttributeError: 'Foo' object has no attribute '__name'
>>> f.__spam()
Traceback (most recent call last):
File "" , line 1, in <module>
f.__spam()
AttributeError: 'Foo' object has no attribute '__spam'
是不可行的,这就起到了隐藏数据的作用
,但是这种实现机制并不是很严格,机制是通过自动"变形"实现的,类中所有以双下划线开头的名称__name都会自动变为"_类名__name"的新名称
:
>>> f._Foo__name
'private name'
>>> f._Foo__spam()
private method
这样就可以访问了。
这种机制可以阻止继承类重新定义或者更改方法的实现,比如,定义一个Foo的派生类:
class Goo(Foo):
def __spam(self):
print 'private method of Goo'
重写了__spam方法,运行:
>>> g = Goo()
>>> g.bar()
private method
调用bar()方法的时候依然执行的是Foo类的__spam()方法,因为在bar()方法的实现中,self.__spam()已自动变形为self._Foo__spam(),Goo继承的bar()方法也是如此。
以单下划线_开头的命名
一般用于模块中的"私有"
定义的命名。
from module import * 语句用于加载模块中的所有名称,要控制导入的名称,一种方法是定义列表__all__,只有在__all__中的名称才能通过*导入,
另一种方法就是以单下划线开头命名定义了,这种定义不会被*导入。
当然,在类中也可以用单下划线开头来命名属性或者方法,这只是表示类的定义者希望这些属性或者方法是"私有的",但实际上并不会起任何作用
。
连接:https://blog.csdn.net/zk0272/article/details/83105574
os模块:os模块在python中包含普遍的操作系统功能,下面列出了一些在os模块中比较有用的部分
。
os.path常用方法:
python对文件夹的操作汇总,方便查阅使用
https://www.cnblogs.com/lixiaoting/archive/2004/01/13/11131289.html
https://blog.csdn.net/HeyShHeyou/article/details/82665453