1、将列表、字符串、元组、字典组合成一个新的字符串:join()函数
语法: ‘sep’.join(seq)
参数说明
sep:分隔符。可以为空
seq:要连接的元素序列、字符串、元组、字典
上面的语法即:以sep作为分隔符,将seq所有的元素合并成一个新的字符串
返回值:返回一个以分隔符sep连接各个元素后生成的字符串
2、拆分字符串:split()函数
split():通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
语法:str.split(str="",num=string.count(str))[n])
参数说明:
str: 表示为分隔符,默认为空格,但是不能为空(’’)。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
num:表示分割次数。如果存在参数num,则仅分隔成 num+1 个子字符串,并且每一个子字符串可以赋给新的变量
[n]: 表示选取第n个分片
注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略
如:
b=[“1”,“0”,“1”,“0”,“1”,“0”]
b="".join(b).split(“0”) #先将列表中的元素组成一个字符串,然后split()将b中的0去掉。返回[“1”,“1”,“1”]
3、对序列中的元素左同意操作:
如:
a=(1,0,3,0,5)
b=[str(i)for i in a]
print (b)
输出值:[‘1’, ‘0’, ‘3’, ‘0’, ‘5’]
4、对路径进行组合:os.path.join()函数:
语法: os.path.join(path1[,path2[,…]])
返回值:将多个路径组合后返回
import os
path=os.path.join('hello','goodboy','doiido')
返回值为
'hello\goodboy\doiido' #windows platform auto add \ between each string
'hello/goodboy/doiido' #linux platform auto add / between each string
5、pycharm中无法加载存在__init__.py的文件夹时,可以在pycharm中将此文件夹添加到源文件中,也可以在程序开始添加:
import sys
sys.path.append('C:/Users/dsj/Desktop/open-dobot-1.3.0/application/python/dobot'))
这样就不会出现找不到模块的情况了```
6、python string 类型 bytes类型 bytearray类型转换
1个字节=8位二进制位 1个字节=2位16进制位 1位进十六制位=4位二进制位。所以\xff为一个字节长度,\xf为占二进制的4个位
UTF-8编码方式中,英文字母用英文字母字节表示,一个汉字用三个十六进制字节表示
https://www.cnblogs.com/fieldtianye/p/8276552.html
https://www.cnblogs.com/gundan/p/8047315.html
https://blog.csdn.net/baidu_19473529/article/details/80042582
7、输出:print()与sys,stdout.write()
sys.stdout.write("hello"+'\n')
print("hello")
#两者在输出形式上是等价的,print()输出带回车,sys.stdout.write()输出没有回车。
8、读取数组中的名与内容:
list={'时间':3,"大小":5}
for file,data in list.items():
print(file,data)
时间 3
大小 5
9、Python中的__init__()和__call__()函数
转自:https://blog.csdn.net/yaokai_assultmaster/article/details/70256621
在Python的class中有一些函数往往具有特殊的意义。init()和__call__()就是class很有用的两类特殊的函数。
__init__()
在Python中,init()函数的意义等同于类的构造器(同理,del()等同于类的析构函数)。因此,init()方法的作用是创建一个类的实例。
__call__()
Python中的函数是一级对象。这意味着Python中的函数的引用可以作为输入传递到其他的函数/方法中,并在其中被执行。
而Python中类的实例(对象)可以被当做函数对待。也就是说,我们可以将它们作为输入传递到其他的函数/方法中并调用他们,正如我们调用一个正常的函数那样。而类中__call__()函数的意义正在于此。为了将一个类实例当做函数调用,我们需要在类中实现__call__()方法。也就是我们要在类中实现如下方法:def call(self, *args)。这个方法接受一定数量的变量作为输入。
假设x是X类的一个实例。那么调用x.call(1,2)等同于调用x(1,2)。这个实例本身在这里相当于一个函数。
总结
那么,init()和__call__()的区别如下:
-
init()的作用是初始化某个类的一个实例。
-
call()的作用是使实例能够像函数一样被调用,同时不影响实例本身的生命周期(call()不影响一个实例的构造和析构)。但是__call__()可以用来改变实例的内部成员的值。
def __init__(self, a, b, range): self.a = a self.b = b self.range = range def __call__(self, a, b): self.a = a self.b = b print('__call__ with ({}, {})'.format(self.a, self.b)) def __del__(self, a, b, range): del self.a del self.b del self.range >>> xInstance = X(1, 2, 3) >>> xInstance(1,2) __call__ with (1, 2)```
10、*self._args, **kwargs
**kwargs 表示接受字典类参数;
def foo(*args, **kwargs):
print 'args = ', args
print 'kwargs = ', kwargs
print '---------------------------------------'
if __name__ == '__main__':
foo(1,2,3,4)
foo(a=1,b=2,c=3)
foo(1,2,3,4, a=1,b=2,c=3)
foo('a', 1, None, a=1, b='2', c=3)
输出结果如下:
args = (1, 2, 3, 4)
kwargs = {}
---------------------------------------
args = ()
kwargs = {'a': 1, 'c': 3, 'b': 2}
---------------------------------------
args = (1, 2, 3, 4)
kwargs = {'a': 1, 'c': 3, 'b': 2}
---------------------------------------
args = ('a', 1, None)
kwargs = {'a': 1, 'c': 3, 'b': '2'}
---------------------------------------
可以看到,这两个是python中的可变参数。args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用args和kwargs时,必须*args参数列要在kwargs前,像foo(a=1, b=‘2’, c=3, a’, 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。