最近實踐編程,那麽我來說說python語法總結
語法: ‘sep‘.join(seq)
參數說明
sep:分隔符。可以為空
seq:要連接的元素序列、字符串、元組、字典
上面的語法即:以sep作為分隔符,將seq所有的元素合並成一個新的字符串
返回值:返回一個以分隔符sep連接各個元素後生成的字符串
2、拆分字符串:split()函數
split():通過指定分隔符對字符串進行切片,並返回分割後的字符串列表(list)
語法:str.split(str="",num=string.count(str))[n])
參數說明:
str: 表示為分隔符,默認為空格,但是不能為空(‘‘)。若字符串中沒有分隔符,則把整個字符串作為列表的一個元素
[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()可以用來改變實例的內部成員的值。
class X(object): 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
```*self._args 表示接受元組類參數;
**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”。
最近實踐編程,那麽我來說說python語法總結