Python_常见内置函数

Posted shz-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python_常见内置函数相关的知识,希望对你有一定的参考价值。

1. 方法

技术图片

 注:class(类)是具有相同的属性和方法的对象的集合。

2. 例子

 (1)数据/集合类型

  • str(object=‘‘); str(object=b‘‘, encoding=‘utf-8‘, errors=‘strict‘)
  • int(x, base=10)
  • float(x=0)
  • complex(real=0, imag=0)
 1 >>> str(123)
 2 123
 3 >>> str([a, b, c])
 4 "[‘a‘, ‘b‘, ‘c‘]"
 5 >>> str(123).join([a, b, c])
 6 a123b123c
 7 >>> int(123)
 8 123
 9 >>> float(123)
10 123.0
11 >>> (0.75).as_integer_ratio()
12 (3, 4)
13 >>> (1.0).is_integer()
14 True
15 >>> complex(1, 2)
16 (1+2j)
17 >>> complex(1, 2).conjugate()
18 (1-2j)

注:str方法,详情见https://www.cnblogs.com/shz-blog/p/12426630.html

  • range(stop), range(start, stop[, step])
  • tuple(iterable=())
  • list([iterable])
  • dict(); dict(mapping); dict(iterable); dict(**kwargs)
 1 >>> r = range(40, 1, -3)
 2 >>> t = tuple(r)
 3 >>> l = list(r)
 4 >>> t
 5 (40, 37, 34, 31, 28, 25, 22, 19, 16, 13, 10, 7, 4)
 6 >>> l
 7 [40, 37, 34, 31, 28, 25, 22, 19, 16, 13, 10, 7, 4]
 8 >>> r.count(1)
 9 0
10 >>> r.index(31)
11 3
12 >>> t.count(10)
13 1
14 >>> t.index(31)
15 3
16 >>> l.sort()
17 >>> l
18 [4, 7, 10, 13, 16, 19, 22, 25, 28, 31, 34, 37, 40]
19 >>> dict(a=1, b=2, c=3)
20 {a: 1, b: 2, c: 3}
21 >>> dict(zip(list(abc), [1, 2, 3]))
22 {a: 1, b: 2, c: 3}
23 >>> dict([(a, 1), (b, 2), (c, 3)])
24 {a: 1, b: 2, c: 3}
25 >>> dict(a=1, b=2, c=3).items()
26 dict_items([(a, 1), (b, 2), (c, 3)])

注:list方法,详情见https://www.cnblogs.com/shz-blog/p/12438954.html

    dict方法,详情见https://www.cnblogs.com/shz-blog/p/12456194.html

  • set([iterable])
  • frozenset([iterable])
 1 >>> s1 = set(hello)
 2 >>> s1
 3 {o, h, e, l}
 4 >>> s1.add(123)
 5 >>> s1
 6 {o, l, h, e, 123}
 7 >>> s1.discard(o)
 8 >>> s1
 9 {l, h, e, 123}
10 >>> s2 = set(lemon)
11 >>> s2
12 {o, l, e, m, n}
13 >>> s1.update(s2)
14 >>> s1
15 {o, l, h, e, m, n, 123}
 1 >>> a = frozenset(hello world)
 2 >>> a
 3 frozenset({w‘, l‘, ‘, r‘, o‘, h‘, d‘, e})
 4 >>> b = frozenset(range(5))
 5 >>> b
 6 frozenset({0, 1, 2, 3, 4})
 7 >>> c = frozenset(range(2,7))
 8 >>> c
 9 frozenset({2, 3, 4, 5, 6})
10 >>> b.union(c)    # 并集
11 frozenset({0, 1, 2, 3, 4, 5, 6})
12 >>> b.intersection(c)    # 交集
13 frozenset({2, 3, 4})
14 >>> b.difference(c)    # 差集
15 frozenset({0, 1})
16 >>> c.difference(b)    # 差集
17 frozenset({5, 6})
18 >>> b.symmetric_difference(c)    # 对称差集
19 frozenset({0, 1, 5, 6})
20 >>> b.isdisjoint(c)    # 是否没有交集
21 False
22 >>> d = frozenset(range(2,5))
23 >>> d
24 frozenset({2, 3, 4})
25 >>> d.issubset(b)    # 是否被包含
26 True
27 >>> b.issuperset(d)    # 是否包含
28 True
29 >>> e = d.copy()    #复制
30 >>> id(d) == id(e)
31 True
  •  bytearray和bytes
 1 >>> bytes()
 2 b‘‘
 3 >>> bytes(3)
 4 bx00x00x00
 5 >>> bytes(abc, utf-8)
 6 babc
 7 >>> bytes([1, 2, 3])
 8 bx01x02x03
 9 >>> babcd.replace(bbc, bXY)
10 baXYd
11 
12 >>> B = babc
13 >>> BA = bytearray(B)
14 >>> BA
15 bytearray(babc)
16 >>> [i for i in B]
17 [97, 98, 99]
18 >>> [i for i in BA]
19 [97, 98, 99]
20 >>> B[0] = 65
21 Traceback (most recent call last):
22   File "<pyshell#25>", line 1, in <module>
23     B[0] = 65
24 TypeError: bytes object does not support item assignment
25 >>> BA[0] = 65
26 >>> BA
27 bytearray(bAbc)

(2)操作

  • format(value, format_spec=‘‘)

  详情见https://www.cnblogs.com/shz-blog/p/12422194.html

  • len(obj)
  • sorted(iterable, key=None, reverse=False)
  • reversed(sequence)
  • slice(stop); slice(start, stop[, step])
 1 >>> L = list(abcde)
 2 >>> L
 3 [a, b, c, d, e]
 4 >>> len(L)
 5 5
 6 >>> sorted(L, reverse=True)
 7 [e, d, c, b, a]
 8 >>> list(reversed(L))
 9 [e, d, c, b, a]
10 >>> L[slice(1, 4, 2)]
11 [b, d]
  • enumerate(iterable, start=0)
  • zip(iter1 [,iter2 [...]])
  • map(func, *iterables)
 1 >>> l1 = [1, 2, 3]
 2 >>> l2 = [4, 5, 6]
 3 >>> l3 = [7, 8, 9, 10]
 4 
 5 >>> list(enumerate(l3))
 6 [(0, 7), (1, 8), (2, 9), (3, 10)]
 7 
 8 >>> list(zip(l1, l2))
 9 [(1, 4), (2, 5), (3, 6)]
10 >>> list(zip(l1, l3))
11 [(1, 7), (2, 8), (3, 9)]
12 >>> list(zip(*zip(l1, l3)))    # *理解为解压
13 [(1, 2, 3), (7, 8, 9)]
14 
15 >>> list(map(lambda x: x * 3, l1))
16 [3, 6, 9]
17 >>> list(map(lambda x, y: x + y, l1, l2))
18 [5, 7, 9]

(3)输入输出

  •  input(prompt=None)
  • open(file, mode=‘r‘, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  • print(value, ..., sep=‘ ‘, end=‘ ‘, file=sys.stdout, flush=False)
1 >>> age = input(请输入年龄:)
2 请输入年龄:18
3 >>> age
4 185 >>> type(age)
6 <class str‘>

 注:open的用法,详情见https://www.cnblogs.com/sesshoumaru/p/6047046.html

        文件的打开、读取等各种操作,详情见https://www.cnblogs.com/hackpig/p/8215786.html

1 >>> print(hello world, hello Bunny, sep=
, end=_*10)
2 hello world
3 hello Bunny__________

注:flush的用法,参考https://blog.csdn.net/Zhongjie1986/article/details/91890109

(4)数学函数

  • abs(x)
  • divmod(x, y)
  • pow(x, y, z=None)
  • round(number, ndigits=None)
  • sum(iterable, start=0)
  • max(arg1, arg2, *args, *[, key=func]); max(iterable, *[, default=obj, key=func])
  • min(arg1, arg2, *args, *[, key=func]); min(iterable, *[, default=obj, key=func])
 1 >>> abs(-10)
 2 10
 3 >>> divmod(11, 3)
 4 (3, 2)
 5 >>> pow(2, 3)
 6 8
 7 >>> pow(2, 3, 3)
 8 2
 9 >>> round(1.2345, 2)
10 1.23
11 >>> sum(range(5))
12 10
 1 >>> max(1, 2, 3)
 2 3
 3 >>> max(1, 2, 3)
 4 Traceback (most recent call last):
 5   File "<pyshell#1>", line 1, in <module>
 6     max(1, 2, 3)
 7 TypeError: >not supported between instances of strand int 8 >>> max(1, 2, 3‘, key=int)
 9 310 >>> max(-3, 1, 2, key=abs)
11 -3
12 >>> max(123)
13 314 >>> max([1, 8], [2, 6], [3, 4])
15 [3, 4]
16 >>> couple = ({name‘: Bunny‘, age‘: 18, salary‘: 888}, {name‘: Twan‘, age‘: 20, salary‘: 666})
17 >>> max(couple, key=lambda x: x[age])
18 {name‘: Twan‘, age‘: 20, salary‘: 666}
19 >>> max((), default=0)
20 0

 (5)编码

  • bin(number), oct(number), hex(number)
  • chr(i), ord(c), ascii(obj), repr(obj)
 1 >>> bin(10)
 2 0b1010
 3 >>> oct(10)
 4 0o12
 5 >>> hex(10)
 6 0xa
 7 >>> chr(65)
 8 A
 9 >>> ord(A)
10 65
11 >>> ascii(hello world)
12 "‘hello world‘"
13 >>> repr(hello world)
14 "‘hello world‘"
15 >>> ascii(你好,世界)
16 "‘u4f60u597duff0cu4e16u754c‘"
17 >>> repr(你好,世界)
18 "‘你好,世界‘"

(6)判断

  • bool(x), all(iterable), any(iterable), callable(object)
 1 >>> all([a, b, c])
 2 True
 3 >>> all([a, b, ‘‘, c])
 4 False
 5 >>> all([])
 6 True
 7 >>> any([0, ‘‘, False])
 8 False
 9 >>> any([])
10 False
11 >>> callable(str)
12 True
13 >>> callable(hello world)
14 False

(7)迭代器

  • iter(iterable); iter(callable, sentinel)
  • next(iterator[, default])
  • filter(function or None, iterable)
 1 >>> for i in iter(list(abc)):
 2       print(i)
 3     
 4 a
 5 b
 6 c
 7 
 8 >>> from random import randint
 9 >>> def guess():
10     return randint(0,10)
11 >>> num = 1
12 >>> for i in iter(guess, 5):
13     print(第%s次猜测,猜测数字为:%s‘ % (num, i))
14     num += 1
15     
16 第1次猜测,猜测数字为:3
17 第2次猜测,猜测数字为:1

注:猜数字的例子来自http://www.imooc.com/article/287997

 1 >>> i = iter(list(abc))
 2 >>> next(i)
 3 a 4 >>> next(i)
 5 b 6 >>> next(i)
 7 c 8 >>> next(i)
 9 Traceback (most recent call last):
10   File "<pyshell#27>", line 1, in <module>
11     next(i)
12 StopIteration
13 >>> next(i, 0)
14 0
1 >>> def is_odd(n):
2     return n % 2 == 1
3 
4 >>> oldlist = [i for i in range(1,11)]
5 >>> oldlist
6 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
7 >>> newlist = list(filter(is_odd, oldlist))
8 >>> newlist
9 [1, 3, 5, 7, 9]

 (8)属性操作

  • getattr(obj, name[, default])
  • setattr(obj, name, value)
  • hasattr(obj, name)
  • delattr(obj, name)
 1 >>> class Person:
 2       name = Bunny
 3       age = 18
 4       sex = 
 5 
 6 >>> Person.name
 7 Bunny
 8 >>> Person.country
 9 Traceback (most recent call last):
10   File "<pyshell#6>", line 1, in <module>
11     Person.country
12 AttributeError: type object Person has no attribute country
13 >>> getattr(Person, age, 0)
14 18
15 >>> getattr(Person, country, 0)
16 0
17 >>> setattr(Person, country, China)
18 >>> getattr(Person, country, 0)
19 China
20 >>> delattr(Person, sex)
21 >>> hasattr(Person, sex)
22 False

(9)辅助函数

  • dir([object])
1 >>> dir()
2 [__annotations__, __builtins__, __doc__, __loader__, __name__, __package__, __spec__]
3 >>> dir(dict)
4 [__class__, __contains__, __delattr__, __delitem__, __dir__, __doc__, __eq__, __format__, __ge__, __getattribute__, __getitem__, __gt__, __hash__, __init__, __init_subclass__, __iter__, __le__, __len__, __lt__, __ne__, __new__, __reduce__, __reduce_ex__, __repr__, __setattr__, __setitem__, __sizeof__, __str__, __subclasshook__, clear, copy, fromkeys, get, items, keys, pop, popitem, setdefault, update, values]
  • help([object])
1 >>> help(hash)
2 Help on built-in function hash in module builtins:
3 
4 hash(obj, /)
5     Return the hash value for the given object.
6     
7     Two objects that compare equal must also have the same hash value, but the
8     reverse is not necessarily true.
  •  hash(obj)
1 >>> hash(hello world)
2 -8331809543453374991
3 >>> hash(tuple(abcde))
4 5996617995451668254

  哈希的相关知识点:https://www.cnblogs.com/abdm-989/p/11329122.html

  • id([object])
1 >>> a = hello world
2 >>> b = a
3 >>> id(a)
4 1873301041520
5 >>> id(b)
6 1873301041520
  • memoryview(object)
1 >>> a = memoryview(bytearray(abcde‘, utf-8))
2 >>> a[1]
3 98
4 >>> a[1:3]
5 <memory at 0x0000017F63B83408>
6 >>> a[1:3].tobytes()
7 bbc8 >>> a[1:3].tolist()
9 [98, 99]

优点:memoryview减少内存拷贝,优化效率(详情可参考https://www.hustyx.com/python/222/

  • type(object), type(name, bases, dict)
  • issubclass(cls, class_or_tuple)
  • isinstance(obj, class_or_tuple)
1 >>> a = 2
2 >>> type(a)
3 <class int‘>
4 >>> isinstance(a, int)
5 True
6 >>> isinstance(a, str)
7 False
8 >>> isinstance(a, (str, int, list))    # 是元组中的一个就返回True
9 True
 1 >>> class A:
 2    pass
 3 
 4 >>> class B(A):
 5    pass
 6 
 7 >>> issubclass(B, A)
 8 True
 9 >>> isinstance(B(), A)
10 True
11 >>> type(B()) == A
12 False

(10)面向对象

  • @classmethod, @staticmethod
 1 >>> class A:
 2     num = 0    #类属性
 3     #类方法
 4     @classmethod
 5     def setNum(cls,newNum):
 6         cls.num = newNum
 7     #实例方法
 8     def __init__(self):
 9         self.age = 1    #实例属性
10     def setAge(self, newAge):
11         self.age = newAge
12     #静态方法
13     @staticmethod
14     def printInfo():
15         print(类方法修改类属性,实例方法修改实例属性,静态方法不访问类)
16 
17         
18 >>> a = A()
19 >>> a.setAge(18)
20 >>> a.age
21 18
22 >>> A.setAge(18)
23 Traceback (most recent call last):
24   File "<pyshell#21>", line 1, in <module>
25     A.setAge(18)
26 TypeError: setAge() missing 1 required positional argument: newAge
27 >>> A.setNum(100)
28 >>> A.num
29 100
30 >>> A.printInfo()
31 类方法修改类属性,实例方法修改实例属性,静态方法不访问类
  • property(fget=None, fset=None, fdel=None, doc=None); @property

效果:

 1 >>> c = C()
 2 >>> c.x = 10
 3 >>> c.x
 4 10
 5 >>> del c.x
 6 >>> c.x
 7 Traceback (most recent call last):
 8   File "<pyshell#18>", line 1, in <module>
 9     c.x
10   File "<pyshell#13>", line 5, in x
11     return self._x
12 AttributeError: C‘ object has no attribute _x

方式1:

 1 >>> class C(object):
 2       def getx(self): return self._x
 3       def setx(self, value): self._x = value
 4       def delx(self): del self._x
 5       x = property(getx, setx, delx, "I‘m the ‘x‘ property.")

方式2:

 1 >>> class C(object):
 2       @property
 3       def x(self):
 4           "I am the ‘x‘ property."
 5           return self._x
 6       @x.setter
 7       def x(self, value):
 8           self._x = value
 9       @x.deleter
10       def x(self):
11           del self._x
  •  super
 1 >>> class A:
 2     def add(self, x):
 3         print(x+1)
 4         
 5 >>> class B(A):
 6     def add(self, x):
 7         super().add(x)
 8         
 9 >>> B().add(2)
10 3
  •  globals, locals, vars([object])
 1 >>> word = hello world
 2 >>> def test(x):
 3     y = 1
 4     print(locals())
 5 
 6 >>> test(2)
 7 {x: 2, y: 1}
 8 >>> globals()
 9 {__name__: __main__, __doc__: None, __package__: None, __loader__: <class _frozen_importlib.BuiltinImporter>, __spec__: None, __annotations__: {}, __builtins__: <module builtins (built-in)>, word: hello world, test: <function test at 0x0000023BE4CEEF28>}
10 >>> class A:
11     a = 1
12 
13 >>> vars(A)
14 mappingproxy({__module__: __main__, a: 1, __dict__: <attribute __dict__ of A objects>, __weakref__: <attribute __weakref__ of A objects>, __doc__: None})

(11)可执行对象

  • eval(source, globals=None, locals=None)
  • exec(source, globals=None, locals=None)
  • compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
 1 >>> eval(2 * 3 + 4)
 2 10
 3 >>> exec(print("hello world"))
 4 hello world
 5 >>> eval_code = compile(2 * 3 + 4, ‘‘, eval)
 6 >>> eval_code
 7 <code object <module> at 0x00000269270686F0, file "", line 1>
 8 >>> eval(eval_code)
 9 10
10 >>> exec_code = compile(print("hello world"), ‘‘, exec)
11 >>> exec_code
12 <code object <module> at 0x0000026927074150, file "", line 1>
13 >>> exec(exec_code)
14 hello world

 需要注意的是,exec函数和eval函数都是将用户提供的字符串作为代码执行,将无法控制代码的行为,会带来严重的安全隐患,使用的时候要慎重。

1 >>> exec(abs="xyz")
2 >>> abs(-1)
3 Traceback (most recent call last):
4   File "<pyshell#13>", line 1, in <module>
5     abs(-1)
6 TypeError: str object is not callable

报错的原因是使用exec函数将‘xyz‘赋值给了abs,abs不再是求绝对值的函数了。为了避免污染命名空间,在调用exec函数时,可以给它传递第二个参数——命名空间。

1 >>> scope = {}
2 >>> exec(abs="xyz", scope)
3 >>> abs(-1)
4 1
5 >>> scope[abs]
6 xyz

注:参考了https://www.cnblogs.com/lucky-heng/p/10161190.html

 

题外话:关于内置函数,发现了一个非常详细的介绍(https://www.cnblogs.com/sesshoumaru/p/6140987.html),这个博主还对每个函数分别用一篇随笔来介绍。写到一半,看到这么详尽的博客,瞬间就有点不想写了,不过我写博客主要还是为了方便自己日后查阅,不够详细的地方可以移步上面这个博主。本文总体参考了官方说明文档、内置函数介绍英文版(https://docs.python.org/3/library/functions.html#classmethod)及其翻译版(http://www.beixiongxiong.com/course/bxx_bzk_02/2084/)。

以上是关于Python_常见内置函数的主要内容,如果未能解决你的问题,请参考以下文章

Python_常见内置函数

python的35个常见内置函数(BIF)

谁举例讲解几个python 内置函数

python_基础

python基础-内置函数-作用域-闭包-递归-python3

python内置方法