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 b‘x00x00x00‘
5 >>> bytes(‘abc‘, ‘utf-8‘)
6 b‘abc‘
7 >>> bytes([1, 2, 3])
8 b‘x01x02x03‘
9 >>> b‘abcd‘.replace(b‘bc‘, b‘XY‘)
10 b‘aXYd‘
11
12 >>> B = b‘abc‘
13 >>> BA = bytearray(B)
14 >>> BA
15 bytearray(b‘abc‘)
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(b‘Abc‘)
(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 ‘18‘
5 >>> 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 ‘str‘ and ‘int‘
8 >>> max(1, 2, ‘3‘, key=int)
9 ‘3‘
10 >>> max(-3, 1, 2, key=abs)
11 -3
12 >>> max(‘123‘)
13 ‘3‘
14 >>> 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 b‘bc‘
8 >>> 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_常见内置函数的主要内容,如果未能解决你的问题,请参考以下文章