Python 内置函数

内置函数,也就是Python为我们提供的可以直接拿来用的函数,比如,print,input。

作用域相关的函数,globals()和locals(),locals是返回当前作用域中的名字,而globals则是返回全局作用域中的名字。

def func():
    a = 10
    print(locals())  # 当前作用域中的内容
    print(globals())  # 全局作用域中的内容
    print("今天内容很简单")
 
func()

结果为:

{'a': 10}
{'__name__': '__main__', '__doc__': 'Automatically created module for IPython interactive environment', '__package__': None, '__loader__': None, '__spec__': None, '__builtin__': <module 'builtins' (built-in)>, '__builtins__': <module 'builtins' (built-in)>, '_ih': ['', 'def func():\n    a = 10\n    print(locals())  # 当前作用域中的内容\n    print(globals())  # 全局作用域中的内容\n    print("今天内容很简单")\n \nfunc()'], '_oh': {}, '_dh': ['F:\\xpccode'], 'In': ['', 'def func():\n    a = 10\n    print(locals())  # 当前作用域中的内容\n    print(globals())  # 全局作用域中的内容\n    print("今天内容很简单")\n \nfunc()'], 'Out': {}, 'get_ipython': <bound method InteractiveShell.get_ipython of <ipykernel.zmqshell.ZMQInteractiveShell object at 0x0000000002F18D68>>, 'exit': <IPython.core.autocall.ZMQExitAutocall object at 0x00000000056B6CC0>, 'quit': <IPython.core.autocall.ZMQExitAutocall object at 0x00000000056B6CC0>, '_': '', '__': '', '___': '', '_i': '', '_ii': '', '_iii': '', '_i1': 'def func():\n    a = 10\n    print(locals())  # 当前作用域中的内容\n    print(globals())  # 全局作用域中的内容\n    print("今天内容很简单")\n \nfunc()', 'func': <function func at 0x00000000057B3598>}
今天内容很简单

 

标识 id:返回对象的唯一标识,CPython返回内存地址

a = "str"
id(a)

结果为:
4754040

哈希 hash():返回一个对象的哈希值,散列值,dict就是使用的这个,所以查找效率高。应该注意列表是不可哈希的。

hash("ab")

结果为:
6056149156013437086

bin将一个十进制的数字转换为二进制,hex转换为16进制,oct八进制。

print(bin(22))#将一个十进制的数,转换为二进制
print(hex(22))#十六进制
print(oct(22))#八进制

结果为:

0b10110
0x16
0o26

类型 type():返回对象的类型

a = 3.14
type(a)

结果为:
float

类型转换:float() int() bin() hex() oct() bool() list() tuple() dict() set() complex() bytes() bytearray()

a = 3.14
int(a)

结果为3

a = 3.64
int(a)

结果为:
3

输入 input([prompt]):接收用户输入,返回一个字符串

打印 print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False):打印输出,默认使用空格分割、换行结尾,输出到控制台 
对象长度 len(s):返回一个集合类型的元素个数

isinstance(obj, class_or_tuple):判断对象obj是否属于某种类型或者元组中列出的某个类型,isinstance(True, int)

isinstance(True, int)

结果为:
True

isinstance(True,(bool,int,str))

结果为:
True
 

issubclass(cls, class_or_tuple):判断类型cls是否是某种类型的子类或元组中列出的某个类型的子类, issubclass(bool, int)

issubclass(bool, int)

结果为:
True

绝对值abs(x) x为数值 

abs(-12)

结果为:
12

最大值max() 最小值min():返回可迭代对象中最大或最小值,或者返回多个参数中最大或最小值

lst = [1,2,3,4,5,6,7]
print(max(lst))
print(min(lst))

结果为:

7
1

round(x) 四舍六入五取偶,round(-0.5)

print(round(3.5))
print(round(2.4))
print(round(1.3))

结果为:
4
2
1

pow(x , y) 等价于 x**y

pow(2,3)

2**3

结果都为:
8

range(stop) 从0开始到stop-1的可迭代对象;range(start, stop[, step])从start开始到stop-1结束步长为step的可迭代对象

divmod(x, y) 等价于 tuple (x//y, x%y)

divmod(10, 3)

结果为:
(3, 1)

sum(iterable[, start]) 对可迭代对象的所有数值元素求和

lis = list(range(5))
print(sum(lis,6))
sum(lis)

结果为:
16
10

sum(range(1,100,2)) 

结果为:
2500

chr(i) 给一个一定范围的整数返回对应的字符

chr(97)

结果为:
'a'

chr(20013)

结果为:
''

chr(8)

结果为:
'\x08'

chr(13)
结果为:
'\r'

chr(10)

结果为:
'\n'
 

ord(c) 返回字符对应的整数

ord('a')

结果为:
97

 ord('') 

结果为:
20013

hex(ord("a"))

结果为:
'0x61'

sorted(iterable[, key][, reverse]) 排序,返回一个新的列表,默认升序,reverse是反转 。

sorted([1, 5, 3])

结果为:

[1, 3, 5]

sorted([1, 3, 5], reverse=True)
结果为:
[5, 3, 1]

sorted({'c':1, 'b':2, 'a':1})
结果为:
['a', 'b', 'c']

a = [1,3,6,4]
a.sort()
print(a)

[1, 3, 4, 6]

翻转 reversed(seq):返回一个翻转元素的迭代器

list(reversed("13579"))

结果为:
['9', '7', '5', '3', '1']

{ reversed((2, 4)) } # 有几个元素?

结果为:
{<reversed at 0x5c9c128>}

for x in reversed(['c','b','a']):
    print(x)

结果为:
a
b
c

reversed(sorted({1, 5, 9})) 

结果为:
<list_reverseiterator at 0x5c9c8d0>

a = reversed(sorted({1, 5, 9})) 
for i in a:
    print(i)

结果为:
9
5
1

枚举 enumerate(seq, start=0):迭代一个序列,返回索引数字和元素构成的二元组,start表示索引开始的数字,默认是0

for x in enumerate([2,4,6,8]):
    print(x)

for x in enumerate("abcde"):
    print(x,end=" ") 


结果为:
(0, 2)
(1, 4)
(2, 6)
(3, 8)
(0, 'a') (1, 'b') (2, 'c') (3, 'd') (4, 'e') 

for i in enumerate(range(5)):
print(i)

结果为:

 

(0, 0)
(1, 1)
(2, 2)
(3, 3)
(4, 4)

for k,v in enumerate(range(5)):
  print(k,v,end="\t")

结果为:

0 0	1 1	2 2	3 3	4 4	

迭代器和取元素 iter(iterable)、next(iterator[, default]):iter将一个可迭代对象封装成一个迭代器,next对一个迭代器取下一个元素。如果全部元素都取过了,再次next会抛StopIteration异常。next内部实现实际使用了__next__()方法,而iter()内部内部实际使用的是__iter__()方法。

lst = ["da", "ba", "ca"]
it = iter(lst)  #  __iter__()
print(it.__next__())
print(next(it)) # __next__()
print(next(it))
print(next(it))

结果为:
da
ba
ca
---------------------------------------------------------------------------
StopIteration                             Traceback (most recent call last)
<ipython-input-5-953ee1687321> in <module>
      4 print(next(it)) # __next__()
      5 print(next(it))
----> 6 print(next(it))

StopIteration: 

 

it = iter(range(5))#it是一个迭代器
print(next(it))
print(next(it))
type(it)

结果为:
0
1
range_iterator

it = reversed([1,3,5])
next(it)

结果为:
5

可迭代对象:能够通过迭代一次次返回不同的元素的对象。 
上面所说的相同不是指值是否相同,而是元素在容器中是否是同一个,例如列表中值可以重复的,['a','a'],虽然这个列表有2个元素,值一样,但是两个'a'是不同的元素。
可迭代对象可以迭代,但是未必有序,未必可索引,包括有list、tuple、string、bytes、bytearray、range、set、dict、生成器等
可迭代对象可以使用成员操作符in、not in,in本质上就是在遍历对象

3 in range(10)

3 in (x for x in range(10))

3 in {x:y for x,y in zip(range(4),range(4,10))}

结果都为:
True

迭代器:特殊的对象,一定是可迭代对象,具备可迭代对象的特征,通过iter方法把一个可迭代对象封装成迭代器,通过next方法,迭代 迭代器对象, 生成器对象,是迭代器对象,但迭代器不一定是生成器。 

g = (x for x in range(10))
print(type(g))
print(next(g))
print(next(g))

结果为:
<class 'generator'>
0
1

for x in iter(range(5)):
    print(x)

结果为:
0
1
2
3
4

type(iter(range(5)))

结果为:
range_iterator

拉链函数zip(*iterables) :像拉链一样,把多个可迭代对象合并在一起,返回一个迭代器,将每次从不同对象中取到的元素合并成一个元组。

list(zip(range(10),range(10),range(5)))

结果为:
[(0, 0, 0), (1, 1, 1), (2, 2, 2), (3, 3, 3), (4, 4, 4)]

list(zip(range(10),range(10)))

结果为:
[(0, 0),
 (1, 1),
 (2, 2),
 (3, 3),
 (4, 4),
 (5, 5),
 (6, 6),
 (7, 7),
 (8, 8),
 (9, 9)]

list(zip(range(10),range(10),range(5),range(10)))

结果为:

[(0, 0, 0, 0), (1, 1, 1, 1), (2, 2, 2, 2), (3, 3, 3, 3), (4, 4, 4, 4)]

dict(zip(range(10),range(10)))

结果为:
{0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9}

{str(x):y for x,y in zip(range(10),range(10))}

结果为:
{'0': 0,
 '1': 1,
 '2': 2,
 '3': 3,
 '4': 4,
 '5': 5,
 '6': 6,
 '7': 7,
 '8': 8,
 '9': 9}

 

 

posted on 2019-10-23 17:25  xpc199151  阅读(176)  评论(0编辑  收藏  举报

导航