1.abs
參數(shù):x 數(shù)字表達(dá)式
描述:求參數(shù)的絕對值
例子:
print(abs(-1)) # 1
print(abs(-9999.99)) # 9999.99
print(abs(True-False)) # 1
print(abs(3.0+4.0j)) # 5.0
對虛數(shù)求絕對值相當(dāng)于是求虛數(shù)的模,虛數(shù)沒有絕對值的概念
bool類型True代表1,F(xiàn)alse代表0
2.all
參數(shù):iterable 可迭代對象
描述:判斷可迭代對象中的元素調(diào)用bool()函數(shù)后的值是否都為True,如果包含F(xiàn)alse則返回False,否則返回True
例子:
print(all([1,2,4,6,8,0])) # False
print(all('')) # True
print(all([])) # True
print(all(())) # True
print(all({})) # True
print(bool('')) # False
print(bool([])) # False
print(bool()) # False
print(bool({})) # False
print(bool(0)) # False
print(bool(False)) # False
print(bool(None)) # False
bool()函數(shù)將int、float、str、list、tuple、dict等轉(zhuǎn)為bool類型,如果待轉(zhuǎn)換元素為0、空、None、False則轉(zhuǎn)換為False否則轉(zhuǎn)換為True
3.any
參數(shù):iterable 可迭代對象
描述:判斷可迭代對象中的元素調(diào)用bool()函數(shù)后的值是否含有True,如果含有True則返回True,否則返回False
例子:
print(any([0,0])) # False
print(any([0,1])) # True
4.ascii
參數(shù):obj
描述:返回對象的ascii表示,程序執(zhí)行的過程中會(huì)調(diào)用repr函數(shù)獲取該對象的字符串表示,并將該字符串中不是ascii字符轉(zhuǎn)換為使用\x、\u或\U編碼的字符
例子:
print(ascii('x'))
jelly = Dog('果凍','7個(gè)月了','白色',10)
print(repr(jelly)) # 我是比熊aaa 我非常happy
print(ascii(jelly)) # \u6211\u662f\u6bd4\u718aaaa \u6211\u975e\u5e38happy
print(ascii('我是比熊aaa 我非常happy')) # '\u6211\u662f\u6bd4\u718aaaa \u6211\u975e\u5e38happy'
5.bin
參數(shù):number整數(shù)
描述:將十進(jìn)制的整數(shù)轉(zhuǎn)為二進(jìn)制表示
例子:
print(bin(27)) # 0b11011
print(bin(-11)) # 0b11011
6.callable
參數(shù):obj 對象
描述:判斷對象是否能像函數(shù)一樣調(diào)用,如果對象實(shí)現(xiàn)了call魔法方法,則是可以被調(diào)用的,否則返回False
例子:
# 類定義部分:
class Dog():
# 對應(yīng)callable內(nèi)置函數(shù)
def __call__(self, *args, **kwargs):
return args
# 調(diào)用部分:
'''
在指定__call__之前
print(callable(jelly)) # False
'''
print(callable(jelly)) # True
print(jelly(1,2)) # (1, 2)
7.chr
參數(shù):i 整型
描述:根據(jù)unicode字符列表通過十進(jìn)制整數(shù)查找Unicode字符
例子:
print(chr(101)) # e
8.compile
參數(shù):
- source: 源代碼可以表示一個(gè)Python模塊、語句或表達(dá)式。只能為str或bytes或AST對象【Abstract Syntax Trees的首字母縮寫,是源碼到字節(jié)碼的一種中間產(chǎn)物為抽象語法樹,可以直接通過ast的方法去編譯可執(zhí)行代碼】
- filename: 該參數(shù)的作用只是在執(zhí)行代碼報(bào)錯(cuò)或是打印返回值時(shí)提供該參數(shù)對應(yīng)的信息。一般按照約定來說,如果source是從文件中讀取的字符串則filename存文件名;如果source為python語句,則存可以標(biāo)識代碼的字符串,如果source是ast對象,可以存標(biāo)識該對象的字符串
- mode: 指定編譯代碼的種類,可以指定為:
- exec:如果是一整個(gè)模塊或者多行python語句,需要指定為exec
- eval:如果是單行表達(dá)式可以指定為eval
- single:如果是單行交互式語句例如input需要指定為single
- flags: 參數(shù),可以是任何映射對象
dont_inherit參數(shù)如果為真,則停止編譯繼承 在代碼調(diào)用中生效的任何future語句的效果 編譯;如果這些語句不存在或不正確,則會(huì)影響編譯, 除了明確指定的任何特性之外。
flags和dont_inherit還不是很明白是做什么的,先放著,搞懂了再補(bǔ)上
描述:將源代碼編譯為可由exec()或eval()執(zhí)行的代碼對象。
返回值類型為CodeType
例子:
with open('運(yùn)算符.py') as f:
# source_bytes = bytes(f.read().encode()) # bytes類型,這里也可以直接f.read()將獲取到的字符串傳入
file = compile(source_bytes,'運(yùn)算符.py','exec')
exec(file)
code = compile('x+y','str','eval')
print(eval(code,{'x':1},{'y':2})) # 3
9.delattr
參數(shù):
object: 注意如果要?jiǎng)h除對象屬性,這里填實(shí)例對象名。如果要?jiǎng)h除類屬性,這里填類名
name: 對象或類中的某個(gè)屬性
描述:從給定對象中刪除指定屬性 相當(dāng)于del object.name
??幾種情況:
類代碼:
class Dog():
length = 50
# 胖了多少斤
set_height = -1
def __init__(self,name,age,color,length):
self.name = name
self.age = age
self.color = color
self.length = length
# 實(shí)例化對象部分:
jelly = Dog('果凍', '7個(gè)月了', '白色', 70)
- 類中定義了屬性,對象初始化時(shí)沒有同名屬性被賦值
例子:
'''
1. 刪除類屬性,刪除后無論是實(shí)例名調(diào)用屬性還是類名調(diào)用屬性都報(bào)錯(cuò)
'''
print(jelly.set_height) # -1
delattr(Dog,'set_height')
print(jelly.set_height) # AttributeError: 'Dog' object has no attribute 'set_height'
print(Dog.set_height) # AttributeError: type object 'Dog' has no attribute 'set_height'
'''
2. 刪除實(shí)例屬性,刪除時(shí)報(bào)錯(cuò)
'''
print(jelly.set_height) # -1
delattr(jelly, 'set_height') # AttributeError: set_height
- 類中定義了屬性,對象初始化時(shí)也被賦值新的值
例子:
'''1. 刪除類屬性,類名調(diào)用屬性報(bào)錯(cuò),對象調(diào)用屬性輸出為對象初始化時(shí)賦的值'''
print(jelly.length) # 70
delattr(Dog,'length')
print(jelly.length) # 70
print(Dog.length) # AttributeError: type object 'Dog' has no attribute 'length'
'''2. 刪除實(shí)例屬性,都不報(bào)錯(cuò),刪除后輸出的都是類定義時(shí)的默認(rèn)屬性'''
print(jelly.length) # 70
delattr(jelly,'length')
print(Dog.length) # 50
print(jelly.length) # 50
- 對象初始化時(shí)賦值了一個(gè)對象屬性,類中沒有定義的屬性不能使用類名去調(diào)用。所以這種情況只能用對象名去刪除,刪除后再調(diào)用會(huì)報(bào)錯(cuò)
例子:
print(jelly.name) # 果凍
delattr(jelly,'name')
print(jelly.name) # AttributeError: 'Dog' object has no attribute 'name'
10.divmod
參數(shù):x、y
描述:函數(shù)返回的結(jié)果為(x//y,x%y)的元組
例子:
print(divmod(4.1,0.5)) # (8.0, 0.09999999999999964)
print(4.1 // 0.5) # 8.0
print(4.1 % 0.5) # 0.09999999999999964
11.eval
參數(shù):
__source:表示一個(gè)python表達(dá)式的字符串或compile函數(shù)返回的代碼對象
__globals:全局變量,若指定則必須是字典
__locals:局部變量,可以是任何映射, locals默認(rèn)為globals的值。
如果既指定了globals又指定了locals,則以局部變量為主,如果局部變量不存在則向上著了全局變量。如果表達(dá)式為print語句則是沒有返回值的
描述:
例子:
eval('print(x) if x>5 else print(y)',{'x':10,'y':20},{'x':15,'y':20}) # 15
print(eval('print(x) if x>5 else print(y)',{'x':10,'y':20},{'x':15,'y':20})) # None
print(eval('input("請輸入一個(gè)整數(shù)")')) # 2
12.exec
參數(shù):
__source:表示一個(gè)或多個(gè)python語句的字符串或compile函數(shù)返回的代碼對象
__globals:全局變量,若指定則必須是字典
__locals:局部變量,可以是任何映射, locals默認(rèn)為globals的值。
如果既指定了globals又指定了locals,則以局部變量為主,如果局部變量不存在則向上著了全局變量
描述:
例子:
exec('print(x) if x>5 else print(y)',{'x':10,'y':20},{'x':15,'y':20}) # 15
game = '''
print('我是一段復(fù)雜的代碼哦~')
age = int(input('歡迎來到網(wǎng)吧,請出示您的身份證'))
if age >= 18:
print('您的年齡是%d歲,按規(guī)定您可以進(jìn)入,歡迎光臨'%age)
else:
print('抱歉,您的年齡是%d,不滿十八歲不能入內(nèi)'%age)
'''
exec(game)
'''
控制臺輸出結(jié)果為:
我是一段復(fù)雜的代碼哦~
歡迎來到網(wǎng)吧,請出示您的身份證12
抱歉,您的年齡是12,不滿十八歲不能入內(nèi)
'''
注意:這兩個(gè)都支持控制臺交互的python語句,比如input
eval和exec的區(qū)別:
1. eval的source只能是一個(gè)python表達(dá)式,而exec支持一個(gè)或多個(gè)python代碼塊
2. eval有返回值,返回值為表達(dá)式的結(jié)果。exec沒有返回值
python中的映射類型除了字典還有其他的嗎?如果沒有,為什么局部變量不直接指定必須是字典類型,而是任何映射類型都可以呢?
13.getattr
參數(shù):
o:對象名
name:屬性名或類名
default:默認(rèn)值
描述:獲取對象或類的屬性,當(dāng)指定默認(rèn)值時(shí),若屬性不存在則返回默認(rèn)值,如果不指定默認(rèn)值則報(bào)錯(cuò)
例子:
print(getattr(jelly, 'halo', 'xixi')) # xixi
print(getattr(jelly,'length','xixi')) # 70
print(getattr(jelly,'love')) # AttributeError: 'Dog' object has no attribute 'love'
print(getattr(Dog, 'halo', 'xixi')) # xixi
print(getattr(Dog,'length','xixi')) # 50
print(getattr(Dog,'halo')) # AttributeError: type object 'Dog' has no attribute 'halo'
setattr
參數(shù):
obj:對象名
name:屬性名或類名
value:值
描述:給對象或類設(shè)置屬性值。若屬性存在則覆蓋,屬性不存在則新建
例子:
setattr(Dog,'length',23) # 已存在的屬性,定義類時(shí)定義的該屬性的值為50
print(getattr(Dog,'length')) # 23
setattr(Dog, 'type', '比熊')
print(getattr(Dog, 'type')) # 比熊
setattr(jelly, 'length', 37) # 已存在的屬性,定義類時(shí)定義的該屬性的值為50
print(getattr(jelly, 'length')) # 37
setattr(jelly, 'haha', 'lala')
print(getattr(jelly, 'haha')) # lala
14.globals
參數(shù):無
描述:以字典的形式返回當(dāng)前位置的全部全局變量
例子:
print(globals())
'''
{
'__name__': '__main__',
'__doc__': None,
'__package__': None,
'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7f9af80c7f10>,
'__spec__': None,
'__annotations__': {},
'__builtins__': <module 'builtins' (built-in)>,
'__file__': '/Users/shilingli/workspace/PycharmProjects/pythonProject/common/博客練習(xí)/常用函數(shù)合集練習(xí).py',
'__cached__': None,
'ast': <module 'ast' from '/Users/shilingli/software/anaconda/anaconda3/python.app/Contents/lib/python3.8/ast.py'>,
'運(yùn)算符': <module '博客練習(xí).運(yùn)算符' from '/Users/shilingli/workspace/PycharmProjects/pythonProject/common/博客練習(xí)/運(yùn)算符.py'>,
'Dog': <class '博客練習(xí).tmp.Dog'>,
'jelly': <博客練習(xí).tmp.Dog object at 0x7f9af81a5310>
}
'''
返回值里的特殊全局變量將會(huì)在寫完這幾篇博客后搞明白另起一篇博客寫
15.hasattr
參數(shù):
obj: 對象名或類名
name: 屬性名
描述:返回對象或者類是否含有指定屬性
例子:
print(hasattr(jelly,'hala')) # False
print(hasattr(jelly, 'length')) # True
print(hasattr(jelly,'set_height')) # True
print(hasattr(Dog, 'hala')) # False
print(hasattr(Dog, 'length')) # True
16.hash
參數(shù):obj:對象
描述:返回對象的hash值,可以通過對象所在類的_hash_函數(shù)更改
例子:
類代碼:
class Dog():
length = 50
# 胖了多少斤
set_height = -1
def __init__(self,name,age,color,length):
self.name = name
self.age = age
self.color = color
self.length = length
def __del__(self):
# print('拜拜啦,我要去睡覺覺了')
pass
def __hash__(self):
return 88
調(diào)用代碼:
# 這是指定hash魔法函數(shù)之前的輸出
print(hash(jelly)) # 8788014796081
print(hash(jelly)) # 88
17.help
參數(shù):obj對象
描述:幫助命令,用于查看函數(shù)或者模塊用途的詳細(xì)說明,如果直接print(help())會(huì)跳轉(zhuǎn)到命令行界面,直接輸入要查詢的函數(shù)名返回函數(shù)源碼處的注釋
例子:
print(help())
'''
控制臺輸出:
help> format
Help on built-in function format in module builtins:
format(value, format_spec='', /)
Return value.__format__(format_spec)
format_spec defaults to the empty string.
See the Format Specification Mini-Language section of help('FORMATTING') for
details.
和print(help('format'))打印出來的內(nèi)容是一樣的
'''
18.hex
參數(shù):number整數(shù)
描述:將一個(gè)整數(shù)轉(zhuǎn)換為十六進(jìn)制,十六進(jìn)制的數(shù)為字符串形式,以ox開頭
十六進(jìn)制以0~9和AF(af)表示,AF(af)代表10~15
十進(jìn)制轉(zhuǎn)十六進(jìn)制的公式:
將十進(jìn)制數(shù)除以16得到商和余數(shù),再將商不斷除以16,記錄每次的余數(shù),直到商為0,將記錄的余數(shù)從小到大排列就是十六進(jìn)制的數(shù)了
例子:
print(hex(19)) # 0x13
'''
1 19除以16 商為1余數(shù)為3
2 1除以16 商為0余數(shù)為1
到第二步商為0,不再循環(huán)除以16,將余數(shù)從小到大排列為13,加上十六進(jìn)制的標(biāo)志字符串0x則返回值為0x13
'''
19.id
參數(shù):obj:對象
描述:返回對象的內(nèi)存地址,可以保證同時(shí)執(zhí)行的對象是唯一的
例子:
a = [1, 2, 3, 4]
b = [1, 2, 3, 4]
print(id(a)) # 140233367750784
print(id(b)) # 140233367750528
print(id(jelly)) # 140233099039504
print(id([1, 2, 3, 4])) # 140233367744448
print(id([1, 2, 3, 4])) # 140233367744448
print(id(Dog)) # 140233287151536
print(id(Dog)) # 140233287151536
之前在調(diào)試代碼時(shí),曾打印過兩次沒有給變量賦值的列表,當(dāng)時(shí)很詫異為什么打印出來的內(nèi)存地址是一樣的,一度懷疑我是用錯(cuò)了函數(shù),或者是我哪寫的不對。今天恍然大悟!原來我打印的是類,直接打印沒有賦值的列表相當(dāng)于打印的是類而不是對象。而id函數(shù)存在的意義是保證執(zhí)行的對象是唯一的,而對象是類的實(shí)例化對象,同一個(gè)類初始化出來的對象的內(nèi)存地址肯定是要唯一的,但類的內(nèi)存地址卻是相同的。給列表賦值給ab變量,則ab才是對象,內(nèi)存地址才會(huì)不同
20.input
參數(shù):obj:需要打印到控制臺的輸入提示信息
描述:返回字符串,接收用戶輸入的任何信息,但最后的換行只是結(jié)束本次輸入并不會(huì)被要返回的字符串接收
例子:
name = input('你叫什么?')
print(type(name))
print(name)
'''
控制臺的輸出結(jié)果:
你叫什么?jelly
<class 'str'>
jelly
'''
21.isinstance
參數(shù):
obj:要判斷的對象
class or tuple:類或者含有類型的元組,若命中元組中的任意一個(gè)都返回True
描述:判斷一個(gè)對象是否為指定類型
例子:
類定義部分代碼:
class Cat(Dog):
def __init__(self,name,age,color,length):
self.name = name
self.age = age
self.color = color
self.length = length
def __str__(self):
return self.name
調(diào)用部分代碼:
jeck = Cat('杰瑞','3個(gè)月了','橘色',20)
print(isinstance(jeck,Dog)) # True
print(isinstance(jeck,(Dog,int))) # True
print(type(jeck)) # <class '博客練習(xí).tmp.Cat'>
'''
type函數(shù)只能返回該對象所在類是哪個(gè),并沒有繼承的層級關(guān)系
'''
22.issubclass
參數(shù):
cls:類
class or tuple:類名或包含類的元祖
描述:判斷參數(shù)類是否為指定類的子類,若元組中包含該類的子類則返回True
例子:
print(issubclass(Cat,(Dog,int))) # True
23.len
參數(shù):obj對象
描述:返回對象的長度,可以通過對象的_len_魔法方法定義返回的長度值,若對象沒有該魔法方法則拋異常
例子:
# 類定義部分:
class Dog():
length = 50
# 胖了多少斤
set_height = -1
def __init__(self,name,age,color,length):
self.name = name
self.age = age
self.color = color
self.length = length
def __del__(self):
# print('拜拜啦,我要去睡覺覺了')
pass
def __hash__(self):
return 88
def __len__(self):
return self.length
# 調(diào)用部分:
print(len(jelly)) # 70
24.locals
參數(shù):無
描述:以字典的形式返回當(dāng)前位置的全部局部變量。
25.max
參數(shù):
*args:待比較對象
key: key,指定比對函數(shù)
描述:計(jì)算并返回待比較對象中的最大值
例子:
print(max([1,2,5,9,10],[2,6,4,9,12])) # [2, 6, 4, 9, 12]默認(rèn)比較第一位,若一樣則順延往后比較
print(max([1,2,5,9,10],[2,6,4,9,12],key=lambda x:x[2])) # [1, 2, 5, 9, 10]
26.min
參數(shù):
*args:待比較對象
key: key,指定比對函數(shù)
描述:計(jì)算并返回待比較對象中的最小值
例子:
print(min([1,2,5,9,10],[2,6,4,9,12])) # [1, 2, 5, 9, 10]
print(min([1,2,5,9,10],[2,6,4,9,12],key=lambda x:x[2])) # [2, 6, 4, 9, 12]
27.next
參數(shù):iter:迭代器
描述:返回可迭代器的下一個(gè)對象
例子:
itera = iter([1,2,5,8,0,10])
print(next(itera)) # 1
print(next(itera)) # 2
print(next(itera)) # 5
print(next(itera)) # 8
print(next(itera)) # 0
print(next(itera)) # 10
print(next(itera)) # 當(dāng)沒有下一個(gè)元素時(shí)報(bào)錯(cuò):StopIteration
未生成迭代器的可迭代對象例如list是不可以作為參數(shù)使用的。這里必須是迭代器,或者使用yeild關(guān)鍵字的自定義函數(shù)也可以作為參數(shù)使用
28.iter
參數(shù):iterable:可迭代對象
描述:將可迭代對象利用該函數(shù)生成迭代器
例子:
print(iter('hello')) # <str_iterator object at 0x7f8de8245310>
print(iter([1,2,5,8,0,10])) # <list_iterator object at 0x7f8de8245970>
print(iter((1,2,5,8,0,10))) # <tuple_iterator object at 0x7f8de8245970>
print(iter({1,2,5,8,0,10})) # <set_iterator object at 0x7f8de83cf880>
29.oct
參數(shù):number:整數(shù)
描述:將指定整數(shù)轉(zhuǎn)換為八進(jìn)制的字符串形式,0o【零歐】為python中對八進(jìn)制字符串的前綴
例子:
print(oct(181)) # 0o265
30.open
涉及內(nèi)容較多,之前專門寫過一篇講解open函數(shù)的博客,地址:
https://blog.csdn.net/qq_43201025/article/details/119357482?spm=1001.2014.3001.5501
31.ord
參數(shù):c:字符
描述:返回字符對應(yīng)的ascii或unicode數(shù)值
例子:
print(ord('a')) # 97
ord和chr:
ord是輸入字符返回對應(yīng)的ascii值,值為整數(shù)
chr是輸入ascii值正數(shù),返回ascii字符
結(jié)合使用返回本身print(ord(chr(97))) # 97
32.pow
參數(shù):base**exp%mod
base:x
exp:y
mod:z
描述:如果兩個(gè)參數(shù)為返回x的y次方的計(jì)算結(jié)果,如果三個(gè)參數(shù),則返回x的y次方計(jì)算完后再對z取余
例子:
print(pow(2,3)) # 8
print(pow(2,3,5)) # 3
33.print
參數(shù):
*args 為要打印的值,為不定長參數(shù),參數(shù)之間以逗號分隔,打印后的值之間以空格隔開
sep 當(dāng)輸入多個(gè)打印的值時(shí),通過該參數(shù)改變輸出的各個(gè)值之間分割方式, 默認(rèn)是空格,改變該值即可自定義
end 結(jié)束標(biāo)識符,這里的\n為轉(zhuǎn)義字符,代表換行,后面會(huì)介紹都有哪些轉(zhuǎn)義字符
file 設(shè)置輸出設(shè)備,即將結(jié)果打印到什么地方,默認(rèn)只在控制臺輸出,也可以設(shè)置file= 文件后就會(huì)把內(nèi)容存到指定文件中
描述:打印輸出
例子:
print('hello world') # hello world
34.repr
參數(shù):obj 對象
描述:返回對象的規(guī)范字符串表示形式,該字符串為對象的魔法方法_repr_中的返回值
例子:
類定義部分:
class Dog():
def __repr__(self):
return '我是比熊aaa 我非常happy'
# 調(diào)用部分
jelly = Dog('果凍','7個(gè)月了','白色',10)
print(repr(jelly)) # 我是比熊aaa 我非常happy
35.round
參數(shù):number:浮點(diǎn)數(shù)
描述:對輸入的浮點(diǎn)數(shù)采用四舍六入五成雙
所謂四舍六入五成雙分為:
- 如果浮點(diǎn)數(shù)的小數(shù)第一位小于等于4則直接舍棄
- 如果浮點(diǎn)數(shù)的小數(shù)第一位大于等于6直接進(jìn)一
- 如果浮點(diǎn)數(shù)的小數(shù)第一位等于5:
1. 小數(shù)5后面還有其他值,則進(jìn)一
2. 小數(shù)5的后面沒有其他值【奇進(jìn)偶不進(jìn)原則】
1. 小數(shù)5前面的數(shù)為奇數(shù),進(jìn)一
2. 小數(shù)5前面的數(shù)為偶數(shù),舍棄
例子:
print(round(4.4)) # 4
print(round(4.6)) # 5
print(round(4.51)) # 5
print(round(4.5)) # 4
print(round(3.5)) # 4
36.sorted
參數(shù):
iterable:可迭代對象
key:排序函數(shù)
reverse:是否降序排序,默認(rèn)為False,也就是默認(rèn)升序排序
描述:
例子:
'''
[1,7,17,9,11,19]
x%7后的序列為:[1,0,3,2,4,5]
所以結(jié)果為:[7,1,9,17,11,19]
'''
print(sorted([1,7,17,9,11,19],key=lambda x:x%7,reverse=False)) # [7, 1, 9, 17, 11, 19]
37.sum
參數(shù):
iterable:可迭代對象
i:指定相加的值,需要和前面可迭代對象中的元素的值的類型保持一致。int和folat都算number類型
描述:
例子:
print(sum([1,2,5,8,10])) # 26
print(sum([1,2,5,8,10],10)) # 36
print(sum([[1, 2],[5, 8]],[3,4])) # [3, 4, 1, 2, 5, 8]
38.vars
參數(shù):obj 對象或類名
描述:返回對象或類的屬性字典對象{屬性名1:屬性值1,屬性名2:屬性值2……}
例子:
print(vars(jelly)) # {'name': '果凍', 'age': '7個(gè)月了', 'color': '白色', 'length': 70}
注意:如果傳入的參數(shù)是對象名的話,返回的對象的屬性只有被初始化過的,不論是init函數(shù)中初始化賦值或者是在調(diào)用處進(jìn)行賦值過的屬性都可以被打印出來,但是沒有被對象初始化過的類屬性是不會(huì)被打印的
39.format
參數(shù):
value:對象
format_sepc:待格式化的字符串
描述:返回對象的_format_方法的返回值
例子:
類定義部分代碼:
class Dog():
length = 50
# 胖了多少斤
set_height = -1
def __init__(self,name,age,color,length):
self.name = name
self.age = age
self.color = color
self.length = length
def __del__(self):
# print('拜拜啦,我要去睡覺覺了')
pass
def __hash__(self):
return 88
def __len__(self):
return self.length
def __format__(self, format_spec):
return format_spec.replace('{}',self.name)
調(diào)用部分代碼:
jelly = Dog('果凍', '7個(gè)月了', '白色', 70)
print(format(jelly,'我叫{},我喜歡你')) # 我叫果凍,我喜歡你
40.dir
參數(shù):o 對象【可選】
描述:返回字符串列表。返回當(dāng)前范圍內(nèi)的變量、方法和定義的類型列表;帶參數(shù)時(shí),返回參數(shù)的屬性、方法列表。如果參數(shù)中的包含方法_dir_(),該方法將被調(diào)用。如果參數(shù)不包含_dir_(),該方法將最大限度地收集參數(shù)信息。
例子:
類定義部分代碼:
from typing import Iterable
class Dog():
length = 50
# 胖了多少斤
set_height = -1
def __init__(self,name,age,color,length):
self.name = name
self.age = age
self.color = color
self.length = length
def __del__(self):
# print('拜拜啦,我要去睡覺覺了')
pass
def __hash__(self):
return 88
def __len__(self):
return self.length
def __dir__(self) -> Iterable[str]:
return iter(['果凍','jelly'])
調(diào)用部分代碼:
print(dir(jelly)) # ['jelly', '果凍']
- zip
參數(shù):
iterable: 一個(gè)或多個(gè)可迭代對象
描述: 將多個(gè)可迭代對象的相同位置的元素打包成一個(gè)元組,如果各迭代對象的元素個(gè)數(shù)不一致,取長度最短,利用 * 號操作符,可以將元組解壓為列表。
例子:
'''zip拉鏈操作'''
x = [1,2,3,4,5,6,7]
y = ['a','b','c','d','e','f']
z = zip(x,y) # [(1, 'a') (2, 'b') (3, 'c') (4, 'd') (5, 'e') (6, 'f')]
# print(*z) # 直接打印*z 相當(dāng)于是遍歷的過程 結(jié)果為:(1, 'a') (2, 'b') (3, 'c') (4, 'd') (5, 'e') (6, 'f')
zz = zip(*z) # 將*z 傳參相當(dāng)于是遍歷了 z 的每一個(gè)元素當(dāng)做一個(gè)參數(shù)
print([i for i in zz])
for i in zip(x,y):
print(i)
for i,j in zip(x,y):
print('{%s}---->{%s}'%(i,j))
'''
控制臺輸出:
[(1, 2, 3, 4, 5, 6), ('a', 'b', 'c', 'd', 'e', 'f')]
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
(5, 'e')
(6, 'f')
{1}---->{a}
{2}---->
{3}---->{c}
{4}---->u0z1t8os
{5}---->{e}
{6}---->{f}
'''
zip 是取長度最短,如果要取長度最長使用 zip_longest 函數(shù),長度不足的列表補(bǔ) None