1. 程式人生 > >最近實踐編程,那麽我來說說python語法總結

最近實踐編程,那麽我來說說python語法總結

main 關鍵字 call 參數說明 print user baidu 沒有 logs

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()的區別如下:

  1. init()的作用是初始化某個類的一個實例。
  2. 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語法總結