网络编程
位置:首页>> 网络编程>> Python编程>> 基于python内置函数与匿名函数详解

基于python内置函数与匿名函数详解

作者:古墓派掌门  发布时间:2021-02-02 08:27:26 

标签:python,内置,函数,匿名

内置函数

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,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使用的所有函数。

内置函数分类

基于python内置函数与匿名函数详解

作用域相关

基于python内置函数与匿名函数详解

基于字典的形式获取局部变量和全局变量

globals()——获取全局变量的字典

locals()——获取执行本方法所在命名空间内的局部变量的字典

其他

基于python内置函数与匿名函数详解

输入输出相关

input()输入


s = input("请输入内容 : ") #输入的内容赋值给s变量
print(s) #输入什么打印什么。数据类型是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: 默认是输出到屏幕,如果设置为文件句柄,输出到文件
sep: 打印多个值之间的分隔符,默认为空格
end: 每一次打印的结尾,默认为换行符
flush: 立即把内容输出到流文件,不作缓存
"""

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)

数据类型相关

type(s)返回s的数据类型


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

内存相关

id(s) s是参数,返回一个变量的内存地址

hash(s) s是参数,返回一个可hash变量的哈希值,不可hash的变量被hash之后会报错。


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

hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。

*每一次执行程序,内容相同的变量hash值在这一次执行过程中不会发生改变。

hash函数会根据一个内部的算法对当前可hash变量进行处理,返回一个int数字。

*每一次执行程序,内容相同的变量hash值在这一次执行过程中不会发生改变。

文件操作相关

open() 打开一个文件,返回一个文件操作符(文件句柄)

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

可以用encoding指定编码.

模块操作相关

__import__导入一个模块


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

帮助方法

help(s) s为函数名


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.

在控制台执行help()进入帮助模式。可以随意输入变量或者变量的类型。输入q退出

或者直接执行help(o),o是参数,查看和变量o有关的操作。。。

和调用相关

callable(s),s是参数,看这个变量是不是可调用。

如果s是一个函数名,就会返回True


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

查看参数所属类型的所有内置方法

dir() 默认查看全局空间内的属性,也接受一个参数,查看这个参数内的方法或变量


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']

和数字相关

基于python内置函数与匿名函数详解

数字——数据类型相关:bool,int,float,complex

数字——进制转换相关:bin,oct,hex

数字——数学运算:abs,divmod,min,max,sum,round,pow

和数据结构相关

基于python内置函数与匿名函数详解

序列——列表和元组相关的:list和tuple

序列——字符串相关的: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看起来返回的是一个规则,拿到这个规则后再对列表进行操作
print(l[sli])#[2, 4]

数据集合——字典和集合:dict,set,frozenset

数据集合: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函数应用于每一个可迭代的项,返回的是一个结果list。如果有其他的可迭代参数传进来,map函数则会把每一个参数都以相应的处理函数进行迭代处理。map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序列的每个元素,并把结果作为新的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]

匿名函数

匿名函数:为了解决那些功能很简单的需求而设计的一句话函数

匿名函数格式:


函数名 = lambda 参数 :返回值

#参数可以有多个,用逗号隔开
#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
#返回值和正常的函数一样可以是任意数据类型

匿名函数实例


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

面试题笔记:

现有两个元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'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.下面程序的输出结果是:
d = lambda p:p*2
t = lambda p:p*3
x = 2
x = d(x)
x = t(x)
x = d(x)
print x
2.现有两元组(('a'),('b')),(('c'),('d')),请使用python中匿名函数生成列表[{'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的定义来产生期望的结果。

来源:http://www.cnblogs.com/qflyue/p/8206646.html

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com