11_Python内置函数_全栈开发学习笔记

1. 内置函数六大类

图片:


内置函数

链接:

上图源自老男孩中心的老师Eva Jing的博客


2. 作用域相关

作用域

locals()
返回本地作用域中的所有名字


globals()
返回全局作用域中的所有名字


3. 迭代器/生成器相关

3.1 next()

next(迭代器) # 效果等同于 迭代器.__next__()

范例:

def next(迭代器):
    迭代器.__next__()


3.2 iter()

迭代器 = iter(可迭代的) # 相当于:迭代器 = 可迭代的.__iter__()


3.3 range()

range是可迭代的,但不是迭代器
range(10)
range(1,11)
range(1,11,2)


4. 其他

其他

4.1 查看内置属性:dir()

查看一个变量拥有的方法
范例:

print(dir([]))
print(dir(1))

执行结果:

['__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']
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']


4.2 帮助:help()

help() 函数用于查看函数或模块用途的详细说明。
范例:

help(str)

执行结果:

Help on class str in module builtins:
.
.
.
 |      must be a string, whose characters will be mapped to None in the result.


4.3 调用相关:callable()

callable() 函数用于检查一个对象是否是可调用的。(凡是后面加括号调用的都是True)

范例:

print(callable(print))

a = 1
print(callable(a))

print(callable(globals))

def func():pass
print(callable(func))

执行结果:

True
False
True
True


4.4 模块相关:import

import的作用是导入模块
范例:__import__(了解即可)

t = __import__("time")
print(t.time())

执行结果:

1547557124.231164


4.4.1 小结

某个方法属于某个数据类型的变量,就用.调用
如果某个方法不依赖于任何数据类型,就直接调用 —— 内置函数 和 自定义函数


4.5 文件操作相关:open()

范例:

f = open('1.复习.py')
print(f.writable())    # 文件能不能写
print(f.readable())    # 文件能不能读

执行结果:

False
True


4.6 内存相关:id()与hash()


4.6.1 id()

id() 函数用于获取对象的内存地址。


4.6.2 hash()

hash() 用于获取取一个对象(字符串或者数值等)的哈希值。
对于相同可hash数据的hash值在一次程序的执行过程中总是不变的
范例:hash()

print(hash(12345))
print(hash('hsgda不想你走,nklgkds'))
print(hash(('1','aaa')))

执行结果:

12345
9093381866357115561
-2751277933709817804


4.7 输入输出:input与print


4.7.1 input()

范例:

ret = input('提示 : ')
print(ret)

执行结果:

提示 : aaa
aaa


4.7.2 print()

范例1:

print('我们的祖国是花园\n')
print('我们的祖国是花园\n')
print('我们的祖国是花园\n',end='')  #指定输出的结束符
print('我们的祖国是花园\n',end='')

执行结果:

我们的祖国是花园

我们的祖国是花园

我们的祖国是花园
我们的祖国是花园

范例2:

print(1,2,3,4,5)
print(1,2,3,4,5,sep='|') #指定输出多个值之间的分隔符

执行结果:

1 2 3 4 5
1|2|3|4|5

范例3:

f = open('file','w')
print('aaaa',file=f)    # 直接把“aaaa”输出到文件file内了
f.close()

范例4:
打印进度条
如要研究,网上查找模块progress Bar

import time
for i in range(0,101,2):
     time.sleep(0.1)
     char_num = i//2
     per_str = '\r%s%% : %s\n' % (i, '*' * char_num) \
         if i == 100 else '\r%s%% : %s' % (i,'*'*char_num)    # \r 意为回到行首
     print(per_str,end='', flush=True)

执行结果:

100% : **************************************************


4.8 字符串类型代码的执行:eval与exec与compile

4.8.1 exec与eval

exec和eval都可以执行 字符串类型的代码
eval有返回值 —— 有结果的简单计算
exec没有返回值 —— 简单流程控制
eval只能用在你明确知道你要执行的代码是什么(慎用

范例1:
exec与eval

exec('print(123)')
eval('print(123)')

print(eval('1+2+3+4'))   # 有返回值
print(exec('1+2+3+4'))   #没有返回值

执行结果:

123
123

10
None


范例2:
exec

code = '''for i in range(10):
    print(i*'*')
'''
exec(code)

执行结果:

*
**
***
****
*****
******
*******
********
*********


4.8.2 compile

compile 将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。

参数说明:

  1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。

  2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。

  3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'


范例1:
用compile编译成exec模式

code1 = 'for i in range(0,10): print (i)'
compile1 = compile(code1,'','exec')
exec(compile1)

执行结果:

0
1
2
3
4
5
6
7
8
9


范例2:

code2 = '1 + 2 + 3 + 4'
compile2 = compile(code2,'','eval')
print(eval(compile2))

执行结果:

10


范例3:
single交互类

code3 = 'name = input("please input your name:")'
compile3 = compile(code3,'','single')
exec(compile3) #执行时显示交互命令,提示输入
print(name)

执行结果:

please input your name:abc
abc

5. 基础数据类型相关

5.1 和数字相关

和数字相关

5.1.1 complex

# 复数 —— complex
# 实数 : 有理数
#         无理数
# 虚数 :虚无缥缈的数
# 5 + 12j  === 复合的数 === 复数
# 6 + 15j

# 浮点数(有限循环小数,无限循环小数)  != 小数 :有限循环小数,无限循环小数,无限不循环小数
# 浮点数
    #354.123 = 3.54123*10**2 = 35.4123 * 10
# f = 1.781326913750135970
# print(f)


5.1.2 进制转换 bin和oct和hex

bin(二进制) & oct(八进制) & hex(十六进制)

print(bin(10))
print(oct(10))
print(hex(10))

执行结果:

0b1010
0o12
0xa


5.1.3 数学运算

  1. abs
    abs() 函数返回数字的绝对值。
print(abs(-5))
print(abs(5))

执行结果:

5
5


2)divmod
divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b)。

print(divmod(7,2))   # div除法 mod取余
print(divmod(9,5))   # 除余

执行结果:

(3, 1)
(1, 4)


3)round
round() 方法返回浮点数x的四舍五入值。

print(round(3.14159,3))

执行结果:

3.142


4)pow
pow() 方法返回 xy(x的y次方) 的值。

print(pow(2,3))   #pow幂运算  == 2**3
print(pow(3,2))
print(pow(2,3,3))    #幂运算之后再取余
print(pow(3,2,1))    #幂运算之后再取余

执行结果:

8
9
2
0


5) sum
sum() 方法对系列进行求和计算。

ret = sum([1,2,3,4,5,6])
print(ret)

ret = sum([1,2,3,4,5,6],10)
print(ret)

ret = sum([1,2,3,4,5,6,10],)
print(ret)

执行结果:

21
31
31


6)min
min() 方法返回给定参数的最小值,参数可以为序列。

print(min([1,2,3,4]))
print(min(1,2,3,4))
print(min(1,2,3,-4))
print(min(1,2,3,-4,key = abs))    # 以绝对值方式求最小值

执行结果:

1
1
-4
1


7)max
max() 方法返回给定参数的最大值,参数可以为序列。

print(max([1,2,3,4]))
print(max(1,2,3,4))
print(max(1,2,3,-4))
print(max(1,2,3,-4,key = abs))    # 以绝对值方式求最大值

执行结果:

4
4
3
-4

5.2 和数据结构相关

和数据结构相关

5.2.1 序列

5.2.2 列表list和元组tuple


5.2.3 相关内置函数

  1. reversed()
    保留原列表,返回一个反向的迭代器
    范例1:
l = [1,2,3,4,5]
l.reverse()
print(l)

l = [1,2,3,4,5]
l2 = reversed(l)
print(l2)

执行结果:

[5, 4, 3, 2, 1]


2) slice()
slice() 函数实现切片对象,主要用在切片操作函数里的参数传递。

l = (1,2,23,213,5612,342,43)
sli = slice(1,5,2)
print(l[sli])

执行结果

(2, 213)


5.2.4 字符串

  1. format()
    format 函数可以接受不限个参数,位置可以不按顺序。
    范例:
print(format('test', '<20'))
print(format('test', '>20'))
print(format('test', '^20'))

执行结果:

test                
                test
        test        


  1. bytes()
    bytes 函数 转换成bytes类型
    范例:
    我拿到的是gbk编码的,我想转成utf-8编码
print(bytes('你好',encoding='GBK'))     # unicode转换成GBK的bytes
print(bytes('你好',encoding='utf-8'))   # unicode转换成utf-8的bytes

print(bytes('你好',encoding='GBK').decode('GBK'))

执行结果:

b'\xc4\xe3\xba\xc3'
b'\xe4\xbd\xa0\xe5\xa5\xbd'

你好

网络编程 只能传二进制
照片和视频也是以二进制存储
html网页爬取到的也是编码


  1. bytearray()
    bytearray() 方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。
    范例:
b_array = bytearray('你好',encoding='utf-8')
print(b_array)
print(b_array[0])

执行结果:

bytearray(b'\xe4\xbd\xa0\xe5\xa5\xbd')
228


  1. memoryview()
    memoryview() 函数返回给定参数的内存查看对象(Momory view)。
    切片 —— 字节类型 不占内存
    字节 —— 字符串 占内存


  1. ord()与chr()
    ord():字符按照unicode转数字
    chr():数字按照unicode转字符
    范例:
print(ord('a'))
print(ord('2'))
print(chr(97))
print(chr(50))

执行结果:

97
50
a
2


  1. ascii()
    只要是ascii码中的内容,就打印出来,不是就转换成\u
    范例:
print(ascii('好'))
print(ascii('1'))

执行结果:

'\u597d'
'1'


  1. repr() 用于%r格式化输出
name = 'egg'
print('你好%s'%name)
print('你好%r'%name)

print(repr('1'))
print(repr(1))

执行结果:

你好egg
你好'egg'
'1'
1


5.2.2 数据集合

5.2.3 字典dict

5.2.4 集合set与frozenset


5.2.3 相关内置函数

  1. len()
    Python len() 方法返回对象(字符、列表、元组等)长度或项目个数。


  1. enumerate()
    enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
    Python 2.3. 以上版本可用,2.6 添加 start 参数。


  1. all()
    判断是否有bool值为False的值
    范例:
print(all(['a','',123]))
print(all(['a',123]))
print(all([0,123]))

执行结果:

False
True
False


  1. any()
    判断是否有bool值为True的值
    范例:
print(any(['',True,0,[]]))

执行结果:

True


  1. zip()
    返回一个迭代器
    范例1:
l =  [1,2,3]
l2 = ["a","b","c"]
for i in zip(l,l2):
    print(i)

执行结果:

(1, 'a')
(2, 'b')
(3, 'c')

范例2:

l = [1,2,3,4,5]
l2 = ['a','b','c','d']
l3 = ('*','**',[1,2])
d = {'k1':1,'k2':2}
for i in zip(l,l2,l3,d):
    print(i)

执行结果:

(1, 'a', '*', 'k1')
(2, 'b', '**', 'k2')


  1. filter()
    filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
    范例1:
ret = filter(is_odd,[1,4,6,7,9,12,17])    # 相当于[i for i in [1,4,6,7,9,12,17] if i % 2 ==1]
print(ret)
for i in ret:
    print(i)

执行结果:


1
7
9
17

范例2:

def is_str(s):
    if type(s) == str:
        return True

ret = filter(is_str,[1,"hello",6,7,"world",12,17])
for i in ret:
    print(i)

执行结果:

hello
world

范例3:

def is_str(s):
    return type(s) == str

ret = filter(is_str,[1,"hello",6,7,"world",12,17])
for i in ret:
    print(i)

执行结果:

hello
world

范例4:
删除none或者空字符串

def is_str(s):
    return s and str(s).strip()

ret = filter(is_str, [1, 'hello','','  ',None,[], 6, 7, 'world', 12, 17])
for i in ret:
    print(i)

执行结果:

1
hello
6
7
world
12
17

范例5:
请利用filter()过滤出1~100中平方根是整数的数,即结果应该是:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

# 开平方实例:
from math import sqrt
print(sqrt(64))

执行结果:

8.0

正式例子:

from math import sqrt
def func(num):
    res = sqrt(num)
    return res % 1 == 0
ret = filter(func,range(1,101))
for i in ret:
    print(i)

执行结果:

1
4
9
16
25
36
49
64
81
100


  1. map()
    map() 会根据提供的函数对指定序列做映射。
    范例:
    求绝对值
ret = map(abs,[1,-4,6,-8])
print(ret)
for i in ret:
     print(i)

执行结果:


1
4
6
8


filter与map比较

filter 执行了filter之后的结果集合 <= 执行之前的个数
    filter只管筛选,不会改变原来的值
map 执行前后元素个数不变
    值可能发生改变


  1. sorted()
    sorted() 函数对所有可迭代的对象进行排序操作。
    范例1:sort
l = [1,-4,6,5,-10]
l.sort()
print(l)

执行结果:

[-10, -4, 1, 5, 6]

范例2:sort

l = [1,-4,6,5,-10]
l.sort(key = abs)    # 在原列表的基础上进行排序
print(l)

执行结果:

[1, -4, 5, 6, -10]

范例3:sorted

l = [1,-4,6,5,-10]
print(sorted(l))    # 生成了一个新列表 不改变原列表 占内存
print(l)

执行结果:

[-10, -4, 1, 5, 6]
[1, -4, 6, 5, -10]

范例4:sorted

l = [1,-4,6,5,-10]
print(sorted(l,key=abs,reverse=True))
print(l)

执行结果:

[-10, 6, 5, -4, 1]
[1, -4, 6, 5, -10]

范例5:
列表按照每一个元素的len排序

l = ['   ',[1,2],'hello world']
new_l = sorted(l,key=len)
print(new_l)

执行结果:

[[1, 2], '   ', 'hello world']

你可能感兴趣的:(11_Python内置函数_全栈开发学习笔记)