python之內建函式,匿名函式
內建函式
python與這麼多的內建函式,我們來一一看一下:
一共是這麼幾類。
下面我們分開來看:
與基礎資料型別相關:
資料型別:
bool :用於將給定引數轉換為布林型別,如果沒有引數,返回 False。
int:函式用於將一個字串或數字轉換為整型。
print(int()) # 0
print(int('12')) # 12
print(int(3.6)) # 3
print(int('0100',base=2)) # 將2進位制的 0100 轉化成十進位制。結果為 4
進位制轉換:
進位制轉換(3):
bin:將十進位制轉換成二進位制並返回。
oct:將十進位制轉化成八進位制字串並返回。
hex:將十進位制轉化成十六進位制字串並返回。
print(bin(10),type(bin(10))) # 0b1010 <class 'str'>
print(oct(10),type(oct(10))) # 0o12 <class 'str'>
print(hex(10),type(hex(10))) # 0xa <class 'str'>
數學運算:
abs:函式返回數字的絕對值。
divmod:計算除數與被除數的結果,返回一個包含商和餘數的元組(a // b, a % b)。
round:保留浮點數的小數位數,預設保留整數。
pow:求xy次冪。(三個引數為xy的結果對z取餘)
print(abs(-5)) # 5
print(divmod(7,2)) # (3, 1)
print(round(7/3,2)) # 2.33
print(round(7/3)) # 2
print(round(3.32567,3)) # 3.326
print(pow(2,3)) # 兩個引數為2**3次冪
print(pow(2,3,3)) # 三個引數為2**3次冪,對3取餘。
sum:對可迭代物件進行求和計算(可設定初始值)。
min:返回可迭代物件的最小值(可加key,key為函式名,通過函式的規則,返回最小值)。
max:返回可迭代物件的最大值(可加key,key為函式名,通過函式的規則,返回最大值)。
print(sum([1,2,3]))
print(sum((1,2,3),100))
print(min([1,2,3])) # 返回此序列最小值
ret = min([1,2,-5,],key=abs) # 按照絕對值的大小,返回此序列最小值
print(ret)
dic = {'a':3,'b':2,'c':1}
print(min(dic,key=lambda x:dic[x]))
# x為dic的key,lambda的返回值(即dic的值進行比較)返回最小的值對應的鍵
print(max([1,2,3])) # 返回此序列最大值
ret = max([1,2,-5,],key=abs) # 按照絕對值的大小,返回此序列最大值
print(ret)
dic = {'a':3,'b':2,'c':1}
print(max(dic,key=lambda x:dic[x]))
# x為dic的key,lambda的返回值(即dic的值進行比較)返回最大的值對應的鍵
元組列表,相關內建函式:
list:將一個可迭代物件轉化成列表(如果是字典,預設將key作為列表的元素)。
tuple:將一個可迭代物件轉化成元祖(如果是字典,預設將key作為元祖的元素)。
l = list((1,2,3))
print(l)
l = list({1,2,3})
print(l)
l = list({'k1':1,'k2':2})
print(l)
tu = tuple((1,2,3))
print(tu)
tu = tuple([1,2,3])
print(tu)
tu = tuple({'k1':1,'k2':2})
print(tu)
reversed:將一個序列翻轉,並返回此翻轉序列的迭代器。
slice:構造一個切片物件,用於列表的切片。
ite = reversed(['a',2,3,'c',4,2])
for i in ite:
print(i)
li = ['a','b','c','d','e','f','g']
sli_obj = slice(3)
print(li[sli_obj])
sli_obj = slice(0,7,2)
print(li[sli_obj])
與字串相關:
str:將資料轉化成字串。
format:與具體資料相關,用於計算各種小數,精算等。
#字串可以提供的引數,指定對齊方式,<是左對齊, >是右對齊,^是居中對齊
print(format('test', '<20'))
print(format('test', '>20'))
print(format('test', '^20'))
bytes:用於不同編碼之間的轉化。
s = '你好'
bs = s.encode('utf-8')
print(bs)
s1 = bs.decode('utf-8')
print(s1)
bs = bytes(s,encoding='utf-8')
print(bs)
b = '你好'.encode('gbk')
b1 = b.decode('gbk')
print(b1.encode('utf-8'))
bytearry:返回一個新位元組陣列。這個數組裡的元素是可變的,並且每個元素的值範圍: 0 <= x < 256。
ret = bytearray('alex',encoding='utf-8')
print(id(ret))
print(ret)
print(ret[0])
ret[0] = 65
print(ret)
print(id(ret))
memoryview
ret = memoryview(bytes('你好',encoding='utf-8'))
print(len(ret))
print(ret)
print(bytes(ret[:3]).decode('utf-8'))
print(bytes(ret[3:]).decode('utf-8'))
ord:輸入字元找該字元編碼的位置
chr:輸入位置數字找出其對應的字元
ascii:是ascii碼中的返回該值,不是就返回/u…
# ord 輸入字元找該字元編碼的位置
print(ord('a'))
print(ord('中'))
# chr 輸入位置數字找出其對應的字元
print(chr(97))
print(chr(20013))
# 是ascii碼中的返回該值,不是就返回/u...
print(ascii('a'))
print(ascii('中'))
repr:返回一個物件的string形式(原形畢露)。
# %r 原封不動的寫出來
# name = 'luck'
# print('我叫%r'%name)
# repr 原形畢露
print(repr('{"name":"luck"}'))
print('{"name":"luck"}')
與資料集合相關:
dict:建立一個字典。
set:建立一個集合。
frozenset:返回一個凍結的集合,凍結後集合不能再新增或刪除任何元素。
相關內建函式(8)
len:返回一個物件中元素的個數。
sorted:對所有可迭代的物件進行排序操作。
L = [('a', 1), ('c', 3), ('d', 4),('b', 2), ]
sorted(L, key=lambda x:x[1]) # 利用key
[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
sorted(students, key=lambda s: s[2]) # 按年齡排序
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
sorted(students, key=lambda s: s[2], reverse=True) # 按降序
[('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10)]
enumerate:列舉,返回一個列舉物件。
print(enumerate([1,2,3]))
for i in enumerate([1,2,3]):
print(i)
for i in enumerate([1,2,3],100):
print(i)
all:可迭代物件中,全都是True才是True
any:可迭代物件中,有一個True 就是True
print(all([1,2,True,0]))
print(any([1,'',0]))
zip:函式用於將可迭代的物件作為引數,將物件中對應的元素打包成一個個元組,然後返回由這些元組組成的列表。如果各個迭代器的元素個數不一致,則返回列表長度與最短的物件相同。
l1 = [1,2,3,]
l2 = ['a','b','c',5]
l3 = ('*','**',(1,2,3))
for i in zip(l1,l2,l3):
print(i)
filter:過濾·。
#filter 過濾 通過你的函式,過濾一個可迭代物件,返回的是True
#類似於[i for i in range(10) if i > 3]
def func(x):return x%2 == 0
ret = filter(func,[1,2,3,4,5,6,7])
print(ret)
for i in ret:
print(i)
map:會根據提供的函式對指定序列做對映。
>>>def square(x) : # 計算平方數
... return x ** 2
...
>>> map(square, [1,2,3,4,5]) # 計算列表各個元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5]) # 使用 lambda 匿名函式
[1, 4, 9, 16, 25]
# 提供了兩個列表,對相同位置的列表資料進行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]
與作用域相關:
a = 1
b = 2
print(locals())
print(globals())
# 這兩個一樣,因為是在全域性執行的。
##########################
def func(argv):
c = 2
print(locals())
print(globals())
func(3)
#這兩個不一樣,locals() {'argv': 3, 'c': 2}
#globals() {'__doc__': None, '__builtins__': <module 'builtins' (built-in)>, '__cached__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000024409148978>, '__spec__': None, '__file__': 'D:/lnh.python/.../內建函式.py', 'func': <function func at 0x0000024408CF90D0>, '__name__': '__main__', '__package__': None}
其他相關
字串
字串型別程式碼的執行 eval,exec,complie
eval,這個說白了,就是把字串的標點去掉
eval('2+2')
print(eval('2+2'))
eval('print(666)')
exec:就是把字串裡面的程式碼執行
s = '''
for i in [1, 's', 'h']:
print(i)
'''
exec(s)
complie 將字串型別的程式碼編譯。程式碼物件能夠通過exec語句來執行或者eval()進行求值,一般不用,不做介紹了
輸入輸出
'''
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
"""
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
file: 預設是輸出到螢幕,如果設定為檔案控制代碼,輸出到檔案
sep: 列印多個值之間的分隔符,預設為空格
end: 每一次列印的結尾,預設為換行符
flush: 立即把內容輸出到流檔案,不作快取
"""
'''
print(111,222,333,sep='*') # 111*222*333
print(111,end='')
print(222) #兩行的結果 111222
f = open('log','w',encoding='utf-8')
print('寫入檔案',file=f,flush=True)
記憶體
hash
print(hash(12322))
print(hash('123'))
id
print(id(123)) # 1674055952
print(id('abc'))
檔案操作
f = open('log' , encoding = 'utf-8')
模組
匯入相關內容的 __import__()
幫助
print(help(dict))
#執行結果:class dict(object)
| dict() -> new empty dictionary
| dict(mapping) -> new dictionary initialized from a mapping object's
| (key, value) pairs
| dict(iterable) -> new dictionary initialized as if via:
| d = {}
| for k, v in iterable:
| d[k] = v
| dict(**kwargs) -> new dictionary initialized with the name=value pairs
| in the keyword argument list. For example: dict(one=1, two=2)
|
| Methods defined here:
|
| __contains__(self, key, /)
| True if D has a key k, else False.
|
| __delitem__(self, key, /)
| Delete self[key].
|
| __eq__(self, value, /)
| Return self==value.
|
| __ge__(self, value, /)
| Return self>=value.
|
| __getattribute__(self, name, /)
| Return getattr(self, name).
|
| __getitem__(...)
| x.__getitem__(y) <==> x[y]
|
| __gt__(self, value, /)
| Return self>value.
|
| __init__(self, /, *args, **kwargs)
| Initialize self. See help(type(self)) for accurate signature.
|
| __iter__(self, /)
| Implement iter(self).
|
| __le__(self, value, /)
| Return self<=value.
|
| __len__(self, /)
| Return len(self).
|
| __lt__(self, value, /)
| Return self<value.
|
| __ne__(self, value, /)
| Return self!=value.
|
| __new__(*args, **kwargs) from builtins.type
| Create and return a new object. See help(type) for accurate signature.
|
| __repr__(self, /)
| Return repr(self).
|
| __setitem__(self, key, value, /)
| Set self[key] to value.
|
| __sizeof__(...)
| D.__sizeof__() -> size of D in memory, in bytes
|
| clear(...)
| D.clear() -> None. Remove all items from D.
|
| copy(...)
| D.copy() -> a shallow copy of D
|
| fromkeys(iterable, value=None, /) from builtins.type
| Returns a new dict with keys from iterable and values equal to value.
|
| get(...)
| D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
|
| items(...)
| D.items() -> a set-like object providing a view on D's items
|
| keys(...)
| D.keys() -> a set-like object providing a view on D's keys
|
| pop(...)
| D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
| If key is not found, d is returned if given, otherwise KeyError is raised
|
| popitem(...)
| D.popitem() -> (k, v), remove and return some (key, value) pair as a
| 2-tuple; but raise KeyError if D is empty.
|
| setdefault(...)
| D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
|
| update(...)
| D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
| If E is present and has a .keys() method, then does: for k in E: D[k] = E[k]
| If E is present and lacks a .keys() method, then does: for k, v in E: D[k] = v
| In either case, this is followed by: for k in F: D[k] = F[k]
|
| values(...)
| D.values() -> an object providing a view on D's values
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __hash__ = None
None
檢視內建屬性
dir() # 獲得當前模組的屬性列表
['__builtins__', '__doc__', '__name__', '__package__', 'arr', 'myslice']
>>> dir([ ]) # 檢視列表的方法
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
與迭代器生成器相關
range
next
l = [1, 2, 3, 4, 5]
l_iter = l.__iter__()
while True:
try:
item = l.__iter__().__next__()
print(item)
except StopIteration:
break
iter
from collections import Iterable
from collections import Iterator
l = [1,2,3]
print(isinstance(l,Iterable)) # True
print(isinstance(l,Iterator)) # False
l1 = iter(l)
print(isinstance(l1,Iterable)) # True
print(isinstance(l1,Iterator)) # True
匿名函式
匿名函式其實也是函式,只是他不是單獨拿出來當函式來寫的,而是在主體程式碼部分就已經寫入的,主要是為了實現那些簡單而沒有必要去花記憶體空間來實現的簡單函式,他的格式就是這樣的。
匿名函式:
res = map(lambda x:x**2,[1,5,7,4,8])
for i in res:
print(i)
l=[3,2,100,999,213,1111,31121,333]
print(max(l))
dic={'k1':10,'k2':100,'k3':30}
print(max(dic))
print(dic[max(dic,key=lambda k:dic[k])])
匿名函式的呼叫和其他普通函式一樣呼叫,使用函式名就可以了。