真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

python類特殊函數(shù),python中常見的函數(shù)

詳解Python中的__new__、__init__、__call__三個特殊方法

__new__: 對象的創(chuàng)建,是一個靜態(tài)方法,第一個參數(shù)是cls。(想想也是,不可能是self,對象還沒創(chuàng)建,哪來的self)

我們提供的服務有:網(wǎng)站制作、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、綿陽ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的綿陽網(wǎng)站制作公司

__init__ : 對象的初始化, 是一個實例方法,第一個參數(shù)是self。

__call__ : 對象可call,注意不是類,是對象。

先有創(chuàng)建,才有初始化。即先__new__,而后__init__。

上面說的不好理解,看例子。

1.對于__new__

可以看到,輸出來是一個Bar對象。

__new__方法在類定義中不是必須寫的,如果沒定義,默認會調(diào)用object.__new__去創(chuàng)建一個對象。如果定義了,就是override,可以custom創(chuàng)建對象的行為。

聰明的讀者可能想到,既然__new__可以custom對象的創(chuàng)建,那我在這里做一下手腳,每次創(chuàng)建對象都返回同一個,那不就是單例模式了嗎?沒錯,就是這樣。可以觀摩《飄逸的python - 單例模式亂彈》

定義單例模式時,因為自定義的__new__重載了父類的__new__,所以要自己顯式調(diào)用父類的__new__,即object.__new__(cls, *args, **kwargs),或者用super()。,不然就不是extend原來的實例了,而是替換原來的實例。

2.對于__init__

使用Python寫過面向對象的代碼的同學,可能對 __init__ 方法已經(jīng)非常熟悉了,__init__ 方法通常用在初始化一個類實例的時候。例如:

這樣便是__init__最普通的用法了。但__init__其實不是實例化一個類的時候第一個被調(diào)用 的方法。當使用 Persion(name, age) 這樣的表達式來實例化一個類時,最先被調(diào)用的方法 其實是 __new__ 方法。

3.對于__call__

對象通過提供__call__(slef, [,*args [,**kwargs]])方法可以模擬函數(shù)的行為,如果一個對象x提供了該方法,就可以像函數(shù)一樣使用它,也就是說x(arg1, arg2...) 等同于調(diào)用x.__call__(self, arg1, arg2) 。模擬函數(shù)的對象可以用于創(chuàng)建防函數(shù)(functor) 或代理(proxy).

總結,在Python中,類的行為就是這樣,__new__、__init__、__call__等方法不是必須寫的,會默認調(diào)用,如果自己定義了,就是override,可以custom。既然override了,通常也會顯式調(diào)用進行補償以達到extend的目的。

這也是為什么會出現(xiàn)"明明定義def _init__(self, *args, **kwargs),對象怎么不進行初始化"這種看起來詭異的行為。(注,這里_init__少寫了個下劃線,因為__init__不是必須寫的,所以這里不會報錯,而是當做一個新的方法_init__)

享學課堂淺談Python序列內(nèi)建函數(shù)都有哪些

1、Python類型操作符和內(nèi)建函數(shù)總結

表4.5列出了所有操作符和內(nèi)建函數(shù),其中操作符順序是按優(yōu)先級從高到低排列的。同一種灰度的操作符擁有同樣的優(yōu)先級。注意在operator模塊中有這些(和絕大多數(shù)Python)操作符相應的同功能的函數(shù)可供使用。

表4.5 標準類型操作符和內(nèi)建函數(shù)

操作符/函數(shù)

描 述

結 果a

字符串表示

``

對象的字符串表示

str

內(nèi)建函數(shù)

cmp(obj1, obj2)

比較兩個對象

int

repr(obj)

對象的字符串表示

str

str(obj)

對象的字符串表示

str

type(obj)

檢測對象的類型

type

值比較

小于

bool

大于

bool

=

小于或等于

bool

=

大于或等于

bool

==

等于

bool

!=

不等于

bool

不等于

bool

對象比較

is

bool

is not

不是

bool

布爾操作符

not

邏輯反

bool

and

邏輯與

bool

or

邏輯或

bool

2、Python數(shù)值類型操作符和內(nèi)建函數(shù)

一、工廠函數(shù)

數(shù)值工廠函數(shù)總結類(工廠函數(shù)) 操作

bool(obj) b 返回obj對象的布爾值,也就是 obj.__nonzero__()方法的返回值。

int(obj, base=10)   返回一個字符串或數(shù)值對象的整數(shù)表 示, 類似string.atoi();

從Python 1.6起, 引入了可選的進制參數(shù)。

long(obj, base=10) 返回一個字符或數(shù)據(jù)對象的長整數(shù)表 示,類似string.atol(),

從Python1.6起, 引入了可選的進制參數(shù) float(obj) ,

返回一個字符串或數(shù)據(jù)對象的浮點數(shù) 表示,類似string.atof()。

complex(str) or返回一個字符串的復數(shù)表示,或 者根據(jù)給定的實數(shù),

complex(real, imag=0.0) ?。耙粋€可選 的虛數(shù)部分)生成一個復數(shù)對象。

二、內(nèi)建函數(shù)

1、分類

Python 有五個運算內(nèi)建函數(shù)用于數(shù)值運算:

abs(num), coerce(num1,num2), divmod(num1,num2), pow(num1,num2,mod=1)和 round(flt,ndig=0)

其中abs()返回給定參數(shù)的絕對值。如果參數(shù)是一個復數(shù), 那么就返回math.sqrt(num.real2 + num.imag2).

coerce()是一個數(shù)據(jù)類型轉換函數(shù),不過它的行為更像一個運算符.數(shù)coerce()為程序員提供了不依賴Python 解釋器,而是自定義兩個數(shù)值類型轉換的方法。對一種新創(chuàng)建的數(shù)值類型來說, 這個特性非常有用.函數(shù)coerce()僅返回一個包含類型轉換完畢的兩個數(shù)值元素的元組.

divmod()內(nèi)建函數(shù)把除法和取余運算結合起來, 返回一個包含商和余數(shù)的元組.對整數(shù)來說,它的返回值就是地板除和取余操作的結果.對浮點數(shù)來說,返回的商部分是math.floor(num1/num2),對復數(shù)來說,商部分是ath.floor((num1/num2).real).

pow()它和雙星號 (**)運算符都可以進行指數(shù)運算.不過二者的區(qū)別并不僅僅在于一個是運算符,一個是內(nèi)建函數(shù).在Python 1.5 之前,并沒有 ** 運算符,內(nèi)建函數(shù)pow()還接受第三個可選的參數(shù),一個余數(shù)參數(shù).如果有這個參數(shù)的, pow() 先進行指數(shù)運算,然后將運算結果和第三個參數(shù)進行取余運算.這個特性主要用于密碼運算,并且比 pow(x,y) % z 性能更好, 這是因為這個函數(shù)的實現(xiàn)類似于C 函數(shù)pow(x,y,z).

round()用于對浮點數(shù)進行四舍五入運算。它有一個可選的小數(shù)位數(shù)參數(shù).如果不提供小數(shù)位參數(shù), 它返回與第一個參數(shù)最接近的整數(shù)(但仍然是浮點類型).第二個參數(shù)告訴round 函數(shù)將結果精確到小數(shù)點后指定位數(shù).

2、函數(shù)int()/round()/math.floor()它們之間的不同之處:

函數(shù) int()直接截去小數(shù)部分.(返回值為整數(shù))

函數(shù) floor() 得到最接近原數(shù)但小于原數(shù)的整數(shù).(返回值為浮點數(shù))

函數(shù) round() 得到最接近原數(shù)的整數(shù).(返回值為浮點數(shù))

3、進制轉換函數(shù):

返回字符串表示的8 進制和16 進制整數(shù),它們分別是內(nèi)建函數(shù):

oct()和 hex(). oct(255)='0377'/hex(255)='0xff'

函數(shù)chr()接受一個單字節(jié)整數(shù)值(0到255),返回一個字符串(ASCII),其值為對應的字符.chr(97)='a'

函數(shù)ord()則相反,它接受一個字符(ASCII 或 Unicode),返回其對應的整數(shù)值.ord('A')=65

3、Python字符串函數(shù)

(一)標準類型操作符和標準內(nèi)建函數(shù)

1)、標準類型操作符

,,=,=,==,!=,對象值得比較

注:做比較時字符串是按ASCII值的大小來比較的

is 對象身份比較

and,or,not 布爾類型

2)標準內(nèi)建函數(shù)

type(obj)

cmp(obj1,obj2)

str(obj)和repr(obj) 或反引號運算符(``) 可以方便的以字符串的方式獲取對象的

內(nèi)容、類型、數(shù)值屬性等信息。str()函數(shù)得到的字符串可讀性好, 而repr()函數(shù)得到的字符

串通常可以用來重新獲得該對象, 通常情況下 obj == eval(repr(obj)) 這個等式是成立的

isinstance(obj,type) 判斷對象的類型

(二)序列操作

1、序列操作

字符串屬于序列對象,可以使用所有序列的操作和函數(shù)

切片 [] [:] [::]

簡單總結:

*索引(S[i])獲取特定偏移的元素。

——第一個元素偏移為0

——(S[0])獲取第一個元素。

——負偏移索引意味著從最后或右邊反向進行計數(shù)

——(S[-2])獲取倒數(shù)第二個元素(就像S[len(s)-2]一樣

*分片[S[i:j]提取對應的部分作為一個序列

——右邊界不包含在內(nèi)

——分片的邊界默認為0和序列的長度,如果沒有給出的話S[:]

——(S[1:3])獲取了從偏移為1,直到但不包括偏移為3的元素

——(S[1:])獲取從偏移為1到末尾之間的元素

——(S[:3])獲取從偏移為0直到但不包括偏移為3的元素

——(S[:-1])獲取從偏移為0直到但不包括最后一個元素之間的元素

——(S[:])獲取從偏移為0到末尾之間的元素,這有效地實現(xiàn)了頂層S拷貝

拷貝了一個相同值,但是是不同內(nèi)存區(qū)域的對象。對象字符串這樣不可變的對象不是很有用,但是對于可以實地修改的對象來說很有用。

比如列表。

擴展分片:第三個限制值 【步進】

完整形式:X[I:J:K]:這標識索引X對象的元素,從偏移為I直到J-1,每隔K元素索引一次。第三個限制值,K,默認為1

實例

Python Code

1

2

3

4

5

S='abcdefghijk'

S[1:10]

'bcdefghij'

S[1:10:2]

'bdfhj

也可以使用負數(shù)作為步進。

分片表達式

Python Code

1

2

"hello"[::-1]

'olleh'

通過負數(shù)步進,兩個邊界的意義實際上進行了反轉。

3、成員操作符 in ,not in

返回布爾值True 或False

可以使用string模塊來判斷輸入字符的合法性,可見成品中的idcheck.py

4、字符串連接

+ 連接字符串 ‘name’+' '+'jin'

字符串格式化 '%s %s' % ('name','jin')

join()方法 ' '.join(('name','jin')) ' '.join(['name','jin'])

5、刪除清空字符串

del aString

aString=''

(三)、序列函數(shù)

序列類型函數(shù)

len(str) 返回字串的長度

enumerate(iter):接受一個可迭代對象作為參數(shù),返回一個enumerate

max(str)/min(str):max()和min()函數(shù)對其他的序列類型可能更有用,但對于string類型它們能很好地運行,返回最大或者最小的字符(按照ASCII 碼值排列),

zip([it0, it1,... itN]) 返回一個列表,其第一個元素是it0,it1,...這些元素的第一個元素組成的一個元組,第二個...,類推.

reversed(seq)c 接受一個序列作為參數(shù),返回一個以逆序訪問的迭代器(PEP 322)

sorted(iter,func=None,key=None,reverse=False) 接受一個可迭代對象作為參數(shù),返回一個有序的列表;可選參數(shù)func,key 和reverse 的含義跟list.sort()內(nèi)建函數(shù)的參數(shù)含義一樣.

注意:

sorted等需要在原處修改的函數(shù)無法用在字符串對象,但可以產(chǎn)生新的對象

sum處理的對象是數(shù)字,不能用在字符串

sorted(s)

['a', 'e', 'e', 'g', 'g', 'g', 'o']

(四)只適合于字符串類型的函數(shù)

1)raw_input()函數(shù)

內(nèi)建的raw_input()函數(shù)使用給定字符串提示用戶輸入并將這個輸入返回,下面是一個使

用raw_input()的例子:

user_input = raw_input("Enter your name: ")

prin user_input

2)str() and unicode()

str()和unicode()函數(shù)都是工廠函數(shù),就是說產(chǎn)生所對應的類型的對象.它們接受一個任

意類型的對象,然后創(chuàng)建該對象的可打印的或者Unicode 的字符串表示. 它們和basestring 都

可以作為參數(shù)傳給isinstance()函數(shù)來判斷一個對象的類型

3)chr(), unichr(), and ord()

chr()函數(shù)用一個范圍在range(256)內(nèi)的(就是0 到255)整數(shù)做參數(shù),返回一個對應的字符.unichr()跟它一樣,只不過返回的是Unicode 字符

ord()函數(shù)是chr()函數(shù)(對于8 位的ASCII 字符串)或unichr()函數(shù)(對于Unicode 對象)

的配對函數(shù),它以一個字符(長度為1 的字符串)作為參數(shù),返回對應的ASCII 數(shù)值,或者Unicode

數(shù)值,如果所給的Unicode 字符超出了你的Python 定義范圍,則會引發(fā)一個TypeError 的異常

(五)、只適用于字符串的操作符

1、格式化操作符 %

字符串格式化符號

格式化字符 轉換方式

%c 轉換成字符(ASCII 碼值,或者長度為一的字符串)

%ra 優(yōu)先用repr()函數(shù)進行字符串轉換

%s 優(yōu)先用str()函數(shù)進行字符串轉換

%d / %i 轉成有符號十進制數(shù)

%ub 轉成無符號十進制數(shù)

%ob 轉成無符號八進制數(shù)

%xb/%Xb (Unsigned)轉成無符號十六進制數(shù)(x/X 代表轉換后的十六進制字符的大

小寫)

%e/%E 轉成科學計數(shù)法(e/E 控制輸出e/E)

%f/%F 轉成浮點數(shù)(小數(shù)部分自然截斷)

%g/%G %e 和%f/%E 和%F 的簡寫

%% 輸出%

格式化操作符輔助指令

符號 作用

* 定義寬度或者小數(shù)點精度

- 用做左對齊

+ 在正數(shù)前面顯示加號( + )

sp 在正數(shù)前面顯示空格

# 在八進制數(shù)前面顯示零('0'),在十六進制前面顯示'0x'或者'0X'(取決于

用的是'x'還是'X')

0 顯示的數(shù)字前面填充‘0’而不是默認的空格

% '%%'輸出一個單一的'%'

(var) 映射變量(字典參數(shù))

m.n m 是顯示的最小總寬度,n 是小數(shù)點后的位數(shù)(如果可用的話)

2、字符串模板: 更簡單的替代品

由于新式的字符串Template 對象的引進使得string 模塊又重新活了過來,Template 對象

有兩個方法,substitute()和safe_substitute().前者更為嚴謹,在key 缺少的情況下它會報一

個KeyError 的異常出來,而后者在缺少key 時,直接原封不動的把字符串顯示出

3、原始字符串操作符( r/R )

字符串抑制轉義r'帶特殊符號的字串'

myfile=open(r'C:\new\text.data','w')

4、Unicode 字符串操作符( u/U )

u'abc' U+0061 U+0062 U+0063

u'\u1234' U+1234

u'abc\u1234\n' U+0061 U+0062 U+0063 U+1234 U+0012

(六)字符串對象的方法:

1、刪減

T2.lstrip() 移除字符串前面字符(默認空格),返回字符串

T2.rstrip() 移除字符串后面字符(默認空格),返回字符串

T2.strip() 移除字符串前后面空格,返回字符串 默認空格,可以其他字符 S.strip('"')

2、切割

partition(sep),

rpartition(sep),

splitlines([keepends]),#把S按照行分割符分為一個list,keepends是一個bool值,如果為真每行后而會保留行分割符

split([sep [,maxsplit]]),#以sep為分隔符,把S分成一個list。maxsplit表示分割的次數(shù)。默認的分割符為空白字符

rsplit([sep[,maxsplit]]) #從右到左切割

備注:

partition()函數(shù)族是2.5版本新增的方法。它接受一個字符串參數(shù),并返回一個3個元素的 tuple 對象。

如果sep沒出現(xiàn)在母串中,返回值是 (sep, ‘’, ‘’);

否則,返回值的第一個元素是 sep 左端的部分,第二個元素是 sep 自身,第三個元素是 sep 右端的部分。

S.partition(';')

('', ';', ' generated by /sbin/dhclient-script\nnameserver 172.16.10.171\nnameserver 8.8.8.8\nnameserver 172.16.0.2\nnameserver 178.79.131.110\nnameserver 202.96.199.133\n')

參數(shù) maxsplit 是分切的次數(shù),即最大的分切次數(shù),所以返回值最多有 maxsplit+1 個元素。

s.split() 和 s.split(‘ ‘)的返回值不盡相同

' hello world!'.split()

['hello', 'world!']

' hello world!'.split(' ')

['', '', 'hello', '', '', 'world!']

S.split('\n',3)

['; generated by /sbin/dhclient-script', 'nameserver 172.16.10.171', 'nameserver 8.8.8.8', 'nameserver 172.16.0.2\nnameserver 178.79.131.110\nnameserver 202.96.199.133\n']

超過最大切割個數(shù)后面的全部為一個元素

按行切割

S

'; generated by /sbin/dhclient-script\nnameserver 172.16.10.171\nnameserver 8.8.8.8\nnameserver 172.16.0.2\nnameserver 178.79.131.110\nnameserver 202.96.199.133\n'

S.splitlines()

['; generated by /sbin/dhclient-script', 'nameserver 172.16.10.171', 'nameserver 8.8.8.8', 'nameserver 172.16.0.2', 'nameserver 178.79.131.110', 'nameserver 202.96.199.133']

產(chǎn)生差異的原因在于當忽略 sep 參數(shù)或sep參數(shù)為 None 時與明確給 sep 賦予字符串值時 split() 采用兩種不同的算法。

對于前者,split() 先去除字符串兩端的空白符,然后以任意長度的空白符串作為界定符分切字符串

即連續(xù)的空白符串被當作單一的空白符看待;

對于后者則認為兩個連續(xù)的 sep 之間存在一個空字符串。因此對于空字符串(或空白符串),它們的返回值也是不同的:

''.split()

[]

''.split(' ')

['']

3、變形

lower(),#全部小寫

upper(),#全部小寫

capitalize(),#首字母大寫

swapcase(),#大小寫交換

title()#每個單詞第一個大寫,其他小寫

備注

因為title() 函數(shù)并不去除字符串兩端的空白符也不會把連續(xù)的空白符替換為一個空格,

所以建議使用string 模塊中的capwords(s)函數(shù),它能夠去除兩端的空白符,再將連續(xù)的空白符用一個空格代替。

Python Code

1

2

3

4

' hello world!'.title()

' Hello World!'

string.capwords(' hello world!')

'Hello World!'

4、連接

join(seq)

join() 函數(shù)的高效率(相對于循環(huán)相加而言),使它成為最值得關注的字符串方法之一。

它的功用是將可迭代的字符串序列連接成一條長字符串,如:

conf = {'host':'127.0.0.1',

... 'db':'spam',

... 'user':'sa',

... 'passwd':'eggs'}

';'.join("%s=%s"%(k, v) for k, v in conf.iteritems())

'passswd=eggs;db=spam;user=sa;host=127.0.0.1'

S=''.join(T) #使用空字符串分割把字符列表轉換為字符串

5、查找

count( sub[, start[, end]]),#計算substr在S中出現(xiàn)的次數(shù)

find( sub[, start[, end]]),#返回S中出現(xiàn)sub的第一個字母的標號,如果S中沒有sub則返回-1。start和end作用就相當于在S[start:end]中搜索

index( substr[, start[, end]]),#與find()相同,只是在S中沒有substr時,會返回一個運行時錯誤

rfind( sub[, start[,end]]),#返回S中最后出現(xiàn)的substr的第一個字母的標號,如果S中沒有substr則返回-1,也就是說從右邊算起的第一次出現(xiàn)的substr的首字母標號

rindex( sub[, start[, end]])

T2.find('ie') 字符串方法調(diào)用:搜索

find()----找到的第一個符合字符的index

rfind()-----找到最后一個符合的字符的index

備注:

find()函數(shù)族找不到時返回-1,index()函數(shù)族則拋出ValueError異常。

另,也可以用 in 和 not in 操作符來判斷字符串中是否存在某個模板

6、替換

replace(old, new[,count]),#把S中的oldstar替換為newstr,count為替換次數(shù)。這是替換的通用形式,還有一些函數(shù)進行特殊字符的替換

translate(table[,deletechars]) #使用上面的函數(shù)產(chǎn)后的翻譯表,把S進行翻譯,并把deletechars中有的字符刪掉

備注:

replace()函數(shù)的 count 參數(shù)用以指定最大替換次數(shù)

translate() 的參數(shù) table 可以由 string.maketrans(frm, to) 生成

translate() 對 unicode 對象的支持并不完備,建議不要使用

7、判定

isalnum(),#是否全是字母和數(shù)字,并至少有一個字符

isalpha(),是否全是字母,并至少有一個字符

isdigit(),是否全是數(shù)字,并至少有一個字符 ,如果是全數(shù)字返回True,否則返回False

islower(),#S中的字母是否全是小寫

isupper(),#S中的字母是否是大寫

isspace(),#是否全是空白字符,并至少有一個字符

istitle(),S是否是首字母大寫的

startswith(prefix[, start[, end]]), #是否以prefix開頭

endswith(suffix[,start[, end]]),#以suffix結尾

備注:

這些函數(shù)都比較簡單,顧名知義。需要注意的是*with()函數(shù)族可以接受可選的 start, end 參數(shù),善加利用,可以優(yōu)化性能。

另,自 Py2.5 版本起,*with() 函數(shù)族的 prefix 參數(shù)可以接受 tuple 類型的實參,當實參中的某人元素能夠匹配,即返回 True。

8、填充

字符串在輸出時的對齊:

center(width[, fillchar]), 字符串中間對齊

ljust(width[, fillchar]), 字符串左對齊,不足部分用fillchar填充,默認的為空格

rjust(width[, fillchar]), 字符串右對齊,不足部分用fillchar填充,默認的為空格

zfill(width), 把字符串變成width長,并在右對齊,不足部分用0補足

expandtabs([tabsize])把字符串中的制表符(tab)轉換為適當數(shù)量的空格。

fillchar 參數(shù)指定了用以填充的字符,默認為空格

zfill的z為zero的縮寫,顧名思義,是以字符0進行填充,用于數(shù)值輸出

expandtabs()的tabsize 參數(shù)默認為8。它的功能是把字符串中的制表符(tab)轉換為適當數(shù)量的空格。

9、編碼

encode([encoding[,errors]]),

decode([encoding[,errors]])

這是一對互逆操作的方法,用以編碼和解碼字符串。因為str是平臺相關的,它使用的內(nèi)碼依賴于操作系統(tǒng)環(huán)境,

而unicode是平臺無關的,是Python內(nèi)部的字符串存儲

python中quote函數(shù)是什么意思,怎么用

quote函數(shù)一般用于處理URL鏈接里的特殊字符,比如一些非ASCII列表中的字母。

位置:該函數(shù)在Python27中位于urllib模塊下,在Python3中應該是向下移動一級目錄,位于urllib.parse模塊中。

功能:替換字符串string中的一些特殊字符,并使用%xx的方式替換該特殊字符(xx為該字符的(uft-8)十六進制數(shù)值)。正常字符ascii字母a-z,數(shù)字,還有符號'_.-'是不會被替換的。當然使用函數(shù)的第二個參數(shù)(默認值為/)可以指定哪些字符也不需要替換。

例子:

urllib.quote('/test')

'/test'

urllib.quote('/test',?safe='')

'%2Ftest'?#?2F?為/的uft-8的hex值。

其他:函數(shù)的第一個參數(shù)為需要轉換的字符串,格式應該為str或者bytes。

函數(shù)的第三個字符為編碼方式。

python的str(anything)和unicode(anything)函數(shù)

python 2有兩個全局函數(shù)可以把對象強制轉換成字符串:unicode()把對象轉換成Unicode字符串,還有str()把對象轉換為非Unicode字符串。

python 3只有一個字符串類型,Unicode字符串,所以str()函數(shù)即可完成所有的功能。(Unicode()函數(shù)在python3 里已經(jīng)不存在了。)

另外:

沒有專門的char()數(shù)據(jù)類型,確實沒有需要有這個類型。

單引號和雙引號字符串是完全相同的——他們沒有在任何方面不同。

正則表達式,一定要用自然字符串處理正則表達式,否則會需要很多的反斜杠。

使用help(str)可查看字符串對象定義的所有方法及屬性。

由于百分號有特殊作用,所以字符串里面要用百分號的話需要使用"%%",如:"select * from my_table where name like '%%測試' "。

python 定義函數(shù)

params

就是(5, 5)

(5,) * 2 ,就是2個5的元組,乘號可以理解成相加。"*" * 30就是30個“*"的字符串

*params作為參數(shù),前面的*號就是把params元組分解成元素的意思,這樣就分開成為2個參數(shù)了。實際上傳遞給了x,y

于是就執(zhí)行了power(5,5)

python 特殊方法定制類__radd__ and __iadd__()如何使用的?

__radd__是自定義的類操作符,執(zhí)行“右加”。當python解釋器執(zhí)行到a+b這樣的語句時,首先在查找a中有沒有__add__操作符,如果a中沒有定義,那么就在b中查找并執(zhí)行__radd__。

下面是個簡單例子

class A:

pass

class B:

def __radd__(self, a):

print 'B.__radd__'

return a.v + self.v

class C:

def __add__(self, b):

print 'C.__add__'

return self.v + b.v

a = A()

a.v = 1

b = B()

b.v = 2

c = C()

c.v = 3

print a + b #因為a中沒有__add__,所以調(diào)用的是B.__radd__

print c + b #c中有__add__,所以調(diào)用的是C.__add__

至于__iadd__(),是運算符類operator的成員函數(shù),就是累加操作符的另一種調(diào)用形式。

a = operator.__iadd__(a, b)就等價于a += b


新聞名稱:python類特殊函數(shù),python中常見的函數(shù)
文章起源:http://weahome.cn/article/dssoojs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部