溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

基于python內(nèi)置函數(shù)與匿名函數(shù)詳解

發(fā)布時間:2020-10-17 08:27:51 來源:腳本之家 閱讀:129 作者:古墓派掌門 欄目:開發(fā)技術(shù)

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

Built-in Functions
abs() dict() help() min() setattr()
all()  dir() hex() next() slice()
any() divmod() id() object() sorted()
ascii() enumerate() input() oct() staticmethod()
bin() eval() int() open() str()
bool() exec() isinstance() pow() super()
bytes() float() iter() print() tuple()
callable() format() len() property() type()
chr() frozenset() list() range() vars()
classmethod() getattr() locals() repr() zip()
compile() globals() map() reversed() __import__()
complex() hasattr() max() round()
bytearray() filter() issubclass() pow() super()
delattr() hash() memoryview() set

截止到python版本3.6.2,現(xiàn)在python一共為我們提供了68個內(nèi)置函數(shù)。它們就是python提供給你直接可以拿來使用的所有函數(shù)。

內(nèi)置函數(shù)分類

基于python內(nèi)置函數(shù)與匿名函數(shù)詳解

作用域相關(guān)

基于python內(nèi)置函數(shù)與匿名函數(shù)詳解

基于字典的形式獲取局部變量和全局變量

globals()——獲取全局變量的字典

locals()——獲取執(zhí)行本方法所在命名空間內(nèi)的局部變量的字典

其他

基于python內(nèi)置函數(shù)與匿名函數(shù)詳解

輸入輸出相關(guān)

input()輸入

s = input("請輸入內(nèi)容 : ") #輸入的內(nèi)容賦值給s變量
print(s) #輸入什么打印什么。數(shù)據(jù)類型是str

print輸出

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: 默認是輸出到屏幕,如果設(shè)置為文件句柄,輸出到文件
 sep: 打印多個值之間的分隔符,默認為空格
 end: 每一次打印的結(jié)尾,默認為換行符
 flush: 立即把內(nèi)容輸出到流文件,不作緩存
 """
f = open('tmp_file','w')
print(123,456,sep=',',file = f,flush=True)
from time import sleep
for i in range(0,101,2):
 sleep(0.1)
 str="*"*(i//2)
 print('\r%s%%:%s'%(i,str),end="",flush=True)

數(shù)據(jù)類型相關(guān)

type(s)返回s的數(shù)據(jù)類型

s="abc"
print(type(s))#<class 'str'>

內(nèi)存相關(guān)

id(s) s是參數(shù),返回一個變量的內(nèi)存地址

hash(s) s是參數(shù),返回一個可hash變量的哈希值,不可hash的變量被hash之后會報錯。

l1=[1,2,3]
l2=(1,2,3)
print(hash(l2))#2528502973977326415
print(hash(l1))#TypeError: unhashable type: 'list'

hash函數(shù)會根據(jù)一個內(nèi)部的算法對當(dāng)前可hash變量進行處理,返回一個int數(shù)字。

*每一次執(zhí)行程序,內(nèi)容相同的變量hash值在這一次執(zhí)行過程中不會發(fā)生改變。

hash函數(shù)會根據(jù)一個內(nèi)部的算法對當(dāng)前可hash變量進行處理,返回一個int數(shù)字。

*每一次執(zhí)行程序,內(nèi)容相同的變量hash值在這一次執(zhí)行過程中不會發(fā)生改變。

文件操作相關(guān)

open() 打開一個文件,返回一個文件操作符(文件句柄)

操作文件的模式有r,w,a,r+,w+,a+ 共6種,每一種方式都可以用二進制的形式操作(rb,wb,ab,rb+,wb+,ab+)

可以用encoding指定編碼.

模塊操作相關(guān)

__import__導(dǎo)入一個模塊

os = __import__('os')
print(os.path.abspath('.'))

幫助方法

help(s) s為函數(shù)名

help(str)

#輸出
class str(object)
 | str(object='') -> str
 | str(bytes_or_buffer[, encoding[, errors]]) -> str
 | 
 | Create a new string object from the given object. If encoding or
 | errors is specified, then the object must expose a data buffer
 | that will be decoded using the given encoding and error handler.
 | Otherwise, returns the result of object.__str__() (if defined)
 | or repr(object).
 | encoding defaults to sys.getdefaultencoding().
 | errors defaults to 'strict'.
 | 
 | Methods defined here:
 | 
 | __add__(self, value, /)
 |  Return self+value.
 | 
 | __contains__(self, key, /)
 |  Return key in self.
 | 
 | __eq__(self, value, /)
 |  Return self==value.
 | 
 | __format__(...)
 |  S.__format__(format_spec) -> str
 |  
 |  Return a formatted version of S as described by format_spec.
 | 
 | __ge__(self, value, /)
 |  Return self>=value.
 | 
 | __getattribute__(self, name, /)
 |  Return getattr(self, name).
 | 
 | __getitem__(self, key, /)
 |  Return self[key].
 | 
 | __getnewargs__(...)
 | 
 | __gt__(self, value, /)
 |  Return self>value.
 | 
 | __hash__(self, /)
 |  Return hash(self).
 | 
 | __iter__(self, /)
 |  Implement iter(self).
 | 
 | __le__(self, value, /)
 |  Return self<=value.
 | 
 | __len__(self, /)
 |  Return len(self).
 | 
 | __lt__(self, value, /)
 |  Return self<value.
 | 
 | __mod__(self, value, /)
 |  Return self%value.
 | 
 | __mul__(self, value, /)
 |  Return self*value.n
 | 
 | __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).
 | 
 | __rmod__(self, value, /)
 |  Return value%self.
 | 
 | __rmul__(self, value, /)
 |  Return self*value.
 | 
 | __sizeof__(...)
 |  S.__sizeof__() -> size of S in memory, in bytes
 | 
 | __str__(self, /)
 |  Return str(self).
 | 
 | capitalize(...)
 |  S.capitalize() -> str
 |  
 |  Return a capitalized version of S, i.e. make the first character
 |  have upper case and the rest lower case.
 | 
 | casefold(...)
 |  S.casefold() -> str
 |  
 |  Return a version of S suitable for caseless comparisons.
 | 
 | center(...)
 |  S.center(width[, fillchar]) -> str
 |  
 |  Return S centered in a string of length width. Padding is
 |  done using the specified fill character (default is a space)
 | 
 | count(...)
 |  S.count(sub[, start[, end]]) -> int
 |  
 |  Return the number of non-overlapping occurrences of substring sub in
 |  string S[start:end]. Optional arguments start and end are
 |  interpreted as in slice notation.
 | 
 | encode(...)
 |  S.encode(encoding='utf-8', errors='strict') -> bytes
 |  
 |  Encode S using the codec registered for encoding. Default encoding
 |  is 'utf-8'. errors may be given to set a different error
 |  handling scheme. Default is 'strict' meaning that encoding errors raise
 |  a UnicodeEncodeError. Other possible values are 'ignore', 'replace' and
 |  'xmlcharrefreplace' as well as any other name registered with
 |  codecs.register_error that can handle UnicodeEncodeErrors.
 | 
 | endswith(...)
 |  S.endswith(suffix[, start[, end]]) -> bool
 |  
 |  Return True if S ends with the specified suffix, False otherwise.
 |  With optional start, test S beginning at that position.
 |  With optional end, stop comparing S at that position.
 |  suffix can also be a tuple of strings to try.
 | 
 | expandtabs(...)
 |  S.expandtabs(tabsize=8) -> str
 |  
 |  Return a copy of S where all tab characters are expanded using spaces.
 |  If tabsize is not given, a tab size of 8 characters is assumed.
 | 
 | find(...)
 |  S.find(sub[, start[, end]]) -> int
 |  
 |  Return the lowest index in S where substring sub is found,
 |  such that sub is contained within S[start:end]. Optional
 |  arguments start and end are interpreted as in slice notation.
 |  
 |  Return -1 on failure.
 | 
 | format(...)
 |  S.format(*args, **kwargs) -> str
 |  
 |  Return a formatted version of S, using substitutions from args and kwargs.
 |  The substitutions are identified by braces ('{' and '}').
 | 
 | format_map(...)
 |  S.format_map(mapping) -> str
 |  
 |  Return a formatted version of S, using substitutions from mapping.
 |  The substitutions are identified by braces ('{' and '}').
 | 
 | index(...)
 |  S.index(sub[, start[, end]]) -> int
 |  
 |  Return the lowest index in S where substring sub is found, 
 |  such that sub is contained within S[start:end]. Optional
 |  arguments start and end are interpreted as in slice notation.
 |  
 |  Raises ValueError when the substring is not found.
 | 
 | isalnum(...)
 |  S.isalnum() -> bool
 |  
 |  Return True if all characters in S are alphanumeric
 |  and there is at least one character in S, False otherwise.
 | 
 | isalpha(...)
 |  S.isalpha() -> bool
 |  
 |  Return True if all characters in S are alphabetic
 |  and there is at least one character in S, False otherwise.
 | 
 | isdecimal(...)
 |  S.isdecimal() -> bool
 |  
 |  Return True if there are only decimal characters in S,
 |  False otherwise.
 | 
 | isdigit(...)
 |  S.isdigit() -> bool
 |  
 |  Return True if all characters in S are digits
 |  and there is at least one character in S, False otherwise.
 | 
 | isidentifier(...)
 |  S.isidentifier() -> bool
 |  
 |  Return True if S is a valid identifier according
 |  to the language definition.
 |  
 |  Use keyword.iskeyword() to test for reserved identifiers
 |  such as "def" and "class".
 | 
 | islower(...)
 |  S.islower() -> bool
 |  
 |  Return True if all cased characters in S are lowercase and there is
 |  at least one cased character in S, False otherwise.
 | 
 | isnumeric(...)
 |  S.isnumeric() -> bool
 |  
 |  Return True if there are only numeric characters in S,
 |  False otherwise.
 | 
 | isprintable(...)
 |  S.isprintable() -> bool
 |  
 |  Return True if all characters in S are considered
 |  printable in repr() or S is empty, False otherwise.
 | 
 | isspace(...)
 |  S.isspace() -> bool
 |  
 |  Return True if all characters in S are whitespace
 |  and there is at least one character in S, False otherwise.
 | 
 | istitle(...)
 |  S.istitle() -> bool
 |  
 |  Return True if S is a titlecased string and there is at least one
 |  character in S, i.e. upper- and titlecase characters may only
 |  follow uncased characters and lowercase characters only cased ones.
 |  Return False otherwise.
 | 
 | isupper(...)
 |  S.isupper() -> bool
 |  
 |  Return True if all cased characters in S are uppercase and there is
 |  at least one cased character in S, False otherwise.
 | 
 | join(...)
 |  S.join(iterable) -> str
 |  
 |  Return a string which is the concatenation of the strings in the
 |  iterable. The separator between elements is S.
 | 
 | ljust(...)
 |  S.ljust(width[, fillchar]) -> str
 |  
 |  Return S left-justified in a Unicode string of length width. Padding is
 |  done using the specified fill character (default is a space).
 | 
 | lower(...)
 |  S.lower() -> str
 |  
 |  Return a copy of the string S converted to lowercase.
 | 
 | lstrip(...)
 |  S.lstrip([chars]) -> str
 |  
 |  Return a copy of the string S with leading whitespace removed.
 |  If chars is given and not None, remove characters in chars instead.
 | 
 | partition(...)
 |  S.partition(sep) -> (head, sep, tail)
 |  
 |  Search for the separator sep in S, and return the part before it,
 |  the separator itself, and the part after it. If the separator is not
 |  found, return S and two empty strings.
 | 
 | replace(...)
 |  S.replace(old, new[, count]) -> str
 |  
 |  Return a copy of S with all occurrences of substring
 |  old replaced by new. If the optional argument count is
 |  given, only the first count occurrences are replaced.
 | 
 | rfind(...)
 |  S.rfind(sub[, start[, end]]) -> int
 |  
 |  Return the highest index in S where substring sub is found,
 |  such that sub is contained within S[start:end]. Optional
 |  arguments start and end are interpreted as in slice notation.
 |  
 |  Return -1 on failure.
 | 
 | rindex(...)
 |  S.rindex(sub[, start[, end]]) -> int
 |  
 |  Return the highest index in S where substring sub is found,
 |  such that sub is contained within S[start:end]. Optional
 |  arguments start and end are interpreted as in slice notation.
 |  
 |  Raises ValueError when the substring is not found.
 | 
 | rjust(...)
 |  S.rjust(width[, fillchar]) -> str
 |  
 |  Return S right-justified in a string of length width. Padding is
 |  done using the specified fill character (default is a space).
 | 
 | rpartition(...)
 |  S.rpartition(sep) -> (head, sep, tail)
 |  
 |  Search for the separator sep in S, starting at the end of S, and return
 |  the part before it, the separator itself, and the part after it. If the
 |  separator is not found, return two empty strings and S.
 | 
 | rsplit(...)
 |  S.rsplit(sep=None, maxsplit=-1) -> list of strings
 |  
 |  Return a list of the words in S, using sep as the
 |  delimiter string, starting at the end of the string and
 |  working to the front. If maxsplit is given, at most maxsplit
 |  splits are done. If sep is not specified, any whitespace string
 |  is a separator.
 | 
 | rstrip(...)
 |  S.rstrip([chars]) -> str
 |  
 |  Return a copy of the string S with trailing whitespace removed.
 |  If chars is given and not None, remove characters in chars instead.
 | 
 | split(...)
 |  S.split(sep=None, maxsplit=-1) -> list of strings
 |  
 |  Return a list of the words in S, using sep as the
 |  delimiter string. If maxsplit is given, at most maxsplit
 |  splits are done. If sep is not specified or is None, any
 |  whitespace string is a separator and empty strings are
 |  removed from the result.
 | 
 | splitlines(...)
 |  S.splitlines([keepends]) -> list of strings
 |  
 |  Return a list of the lines in S, breaking at line boundaries.
 |  Line breaks are not included in the resulting list unless keepends
 |  is given and true.
 | 
 | startswith(...)
 |  S.startswith(prefix[, start[, end]]) -> bool
 |  
 |  Return True if S starts with the specified prefix, False otherwise.
 |  With optional start, test S beginning at that position.
 |  With optional end, stop comparing S at that position.
 |  prefix can also be a tuple of strings to try.
 | 
 | strip(...)
 |  S.strip([chars]) -> str
 |  
 |  Return a copy of the string S with leading and trailing
 |  whitespace removed.
 |  If chars is given and not None, remove characters in chars instead.
 | 
 | swapcase(...)
 |  S.swapcase() -> str
 |  
 |  Return a copy of S with uppercase characters converted to lowercase
 |  and vice versa.
 | 
 | title(...)
 |  S.title() -> str
 |  
 |  Return a titlecased version of S, i.e. words start with title case
 |  characters, all remaining cased characters have lower case.
 | 
 | translate(...)
 |  S.translate(table) -> str
 |  
 |  Return a copy of the string S in which each character has been mapped
 |  through the given translation table. The table must implement
 |  lookup/indexing via __getitem__, for instance a dictionary or list,
 |  mapping Unicode ordinals to Unicode ordinals, strings, or None. If
 |  this operation raises LookupError, the character is left untouched.
 |  Characters mapped to None are deleted.
 | 
 | upper(...)
 |  S.upper() -> str
 |  
 |  Return a copy of S converted to uppercase.
 | 
 | zfill(...)
 |  S.zfill(width) -> str
 |  
 |  Pad a numeric string S with zeros on the left, to fill a field
 |  of the specified width. The string S is never truncated.
 | 
 | ----------------------------------------------------------------------
 | Static methods defined here:
 | 
 | maketrans(x, y=None, z=None, /)
 |  Return a translation table usable for str.translate().
 |  
 |  If there is only one argument, it must be a dictionary mapping Unicode
 |  ordinals (integers) or characters to Unicode ordinals, strings or None.
 |  Character keys will be then converted to ordinals.
 |  If there are two arguments, they must be strings of equal length, and
 |  in the resulting dictionary, each character in x will be mapped to the
 |  character at the same position in y. If there is a third argument, it
 |  must be a string, whose characters will be mapped to None in the result.

在控制臺執(zhí)行help()進入幫助模式??梢噪S意輸入變量或者變量的類型。輸入q退出

或者直接執(zhí)行help(o),o是參數(shù),查看和變量o有關(guān)的操作。。。

和調(diào)用相關(guān)

callable(s),s是參數(shù),看這個變量是不是可調(diào)用。

如果s是一個函數(shù)名,就會返回True

def func():pass
print(callable(func))#True
print(callable(123))#Flase

查看參數(shù)所屬類型的所有內(nèi)置方法

dir() 默認查看全局空間內(nèi)的屬性,也接受一個參數(shù),查看這個參數(shù)內(nèi)的方法或變量

dir(list)

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

和數(shù)字相關(guān)

基于python內(nèi)置函數(shù)與匿名函數(shù)詳解

數(shù)字——數(shù)據(jù)類型相關(guān):bool,int,float,complex

數(shù)字——進制轉(zhuǎn)換相關(guān):bin,oct,hex

數(shù)字——數(shù)學(xué)運算:abs,divmod,min,max,sum,round,pow

和數(shù)據(jù)結(jié)構(gòu)相關(guān)

基于python內(nèi)置函數(shù)與匿名函數(shù)詳解

序列——列表和元組相關(guān)的:list和tuple

序列——字符串相關(guān)的:str,format,bytes,bytearry,memoryview,ord,chr,ascii,repr

ret=bytearray('xiaozhangmen',encoding='utf-8')
print(ret)#bytearray(b'xiaozhangmen')
ret = memoryview(bytes('你好',encoding='utf-8'))
print(len(ret))
print(bytes(ret[:3]).decode('utf-8'))
print(bytes(ret[3:]).decode('utf-8'))

序列:reversed,slice

l=[1,2,3,4,5,6]
l.reverse()
print(l)#[6, 5, 4, 3, 2, 1]
l=[1,2,3,4,5,6]
sli=slice(1,4,2)#slice看起來返回的是一個規(guī)則,拿到這個規(guī)則后再對列表進行操作
print(l[sli])#[2, 4]

數(shù)據(jù)集合——字典和集合:dict,set,frozenset

數(shù)據(jù)集合:len,sorted,enumerate,all,any,zip,filter,map

filter:使用指定方法過濾可迭代對象的元素

def is_odd(x):
 return x % 2 == 1
print(filter(is_odd,[1,2,3,4,5,6]))#<filter object at 0x00000000022EC240>
print(list(filter(is_odd,[1,2,3,4,5,6])))#[1, 3, 5]

map:python中的map函數(shù)應(yīng)用于每一個可迭代的項,返回的是一個結(jié)果list。如果有其他的可迭代參數(shù)傳進來,map函數(shù)則會把每一個參數(shù)都以相應(yīng)的處理函數(shù)進行迭代處理。map()函數(shù)接收兩個參數(shù),一個是函數(shù),一個是序列,map將傳入的函數(shù)依次作用到序列的每個元素,并把結(jié)果作為新的list返回。

def pow(x):
 return x**2
print(map(pow,[0,1,2,3]))#<map object at 0x000000000291C1D0>
print(list(map(pow,[0,1,2,3])))#[0, 1, 4, 9]

匿名函數(shù)

匿名函數(shù):為了解決那些功能很簡單的需求而設(shè)計的一句話函數(shù)

匿名函數(shù)格式:

函數(shù)名 = lambda 參數(shù) :返回值
 
#參數(shù)可以有多個,用逗號隔開
#匿名函數(shù)不管邏輯多復(fù)雜,只能寫一行,且邏輯執(zhí)行結(jié)束后的內(nèi)容就是返回值
#返回值和正常的函數(shù)一樣可以是任意數(shù)據(jù)類型

匿名函數(shù)實例

#如把下面函數(shù)改為匿名函數(shù)
def add(x,y):
 return x+y
add1=lambda x,y:x+y
print(add(1,2))
print(add1(1,2))

面試題筆記:

現(xiàn)有兩個元組(('a'),('b')),(('c'),('d')),請使用python中匿名函數(shù)生成列表[{'a':'c'},{'b':'d'}]

#答案一
test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)]
print(test(t1,t2))
#答案二
print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2))))
#還可以這樣寫
print([{i:j} for i,j in zip(t1,t2)])
1.下面程序的輸出結(jié)果是:
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print x
2.現(xiàn)有兩元組(('a'),('b')),(('c'),('d')),請使用python中匿名函數(shù)生成列表[{'a':'c'},{'b':'d'}]
3.以下代碼的輸出是什么?請給出答案并解釋。
def multipliers():
 return [lambda x:i*x for i in range(4)]
print([m(2) for m in multipliers()])
請修改multipliers的定義來產(chǎn)生期望的結(jié)果。

以上這篇基于python內(nèi)置函數(shù)與匿名函數(shù)詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持億速云。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI