14 内置函数(一)

13. 前 方 高能-内置函数 一

 一. 本节主要内容:

1.  内置函数

什什么是内置函数? 就是python给你提供的. 拿来直接 用的函数, 比如print., input等等. 截 止到python版本3.6.2 python 一共提供了了68个内置函数. 他们就是python直接提供给我们的. 有 一些我们已经 用过了了. 有 一些还没有 用过. 还有 一些需要学完了了 面向对象才能继续学习的. 今天我们就认识 一下python的内置函数.

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()

ord()

sum()

bytearray()

filter()

issubclass()

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()

delattr()

hash()

memoryview()

set()

作 用域相关:

locals()

返回当前作 用域中的名字

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

迭代器相关: range()  生成数据

next()             迭代器向下执 行行 一次, 内部实际使 用了了__next__() 方法返回迭代器的下 一个项 目

iter()              获取迭代器, 内部实际使 用的是__iter__() 方法来获取迭代器

字符串串类型代码的执 行行

eval()          执 行行字符串串类型的代码. 并返回最终结果

print(eval("2+2"))                   # 4

n = 8

print(eval("2+n"))                   # 10

def   func(): print(666)

eval("func()")                # 666

exec()         执 行行字符串串类型的代码

exec("""

for    i in range(10): print(i)

""")

exec("""

def func():

print("我是周杰伦") func()

""")

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

'''

参数说明:

  1. 1.     resource 要执 行行的代码, 动态代码 片段

 

  1. 2.      文件名, 代码存放的 文件名, 当传 入了了第 一个参数的时候, 这个参数给空就可以了了

 

  1. 3.     模式, 取值有3,

 

  1. 1.    exec:  一般放 一些流程语句句的时候

 

  1. 2.    eval: resource只存放 一个求值表达式.

 

  1. 3.    single: resource存放的代码有交互的时候. mode应为single

'''

code1 = "for i in range(10): print(i)" c1 = compile(code1, "", mode="exec") exec(c1)

code2 = "1+2+3"

c2 = compile(code2, "", mode="eval") a = eval(c2)

print(a)

code3 = "name = input('请输 入你的名字:')" c3 = compile(code3, "", mode="single") exec(c3)

print(name)

有返回值的字符串串形式的代码 用eval(). 没有返回值的字符串串形式的代码 用exec().  一般很少 用到compile()

输入和输出相关: input() 获取 用户输入的内容 print() 打印输出

内存相关:

hash() 获取到对象的哈希值(int, str, bool, tuple) id() 获取到对象的内存地址

 文件操作相关: open()  用于 口打开 一个 文件, 创建 一个 文件句句柄

模块相关:

__import__()     用于动态加载类和函数

帮助:

help() 函数 用于查看函数或模块 用途的详细说明调 用相关:

callable()  用于检查 一个对象是否是可调 用的. 如果返回True, object有可能调 用失败, 但如果返回False. 那调 用绝对不会成功查看内置属性:

dir() 查看对象的内置属性,  方法. 访问的是对象中的__dir__() 方法基础数据类型相关:

数字相关: bool() 将给定的数据转换成bool值. 如果不给值. 返回False

int() 将给定的数据转换成int值. 如果不给值, 返回0 float() 将给定的数据转换成float值. 也就是 小数

complex() 创建 一个复数. 第 一个参数为实部, 第 二个参数为虚部. 或者第 一个参数直接 用字符串串来描述复数

进制转换: bin() 将给的参数转换成 二进制

otc() 将给的参数转换成八进制 hex() 将给的参数转换成 十六进制

数学运算: abs() 返回绝对值

divmode() 返回商和余数 round() 四舍五入

pow(a, b) 求a的b次幂, 如果有三个参数. 则求完次幂后对第三个数取余 sum() 求和 min() 求最 小值 max() 求最 大值

和数据结构相关:列列表和元组:

list() 将 一个可迭代对象转换成列列表 tuple() 将 一个可迭代对象转换成元组

reversed() 将 一个序列列翻转, 返回翻转序列列的迭代器 slice() 列列表的切片

st = " 大家好, 我是麻花藤" s = slice(1, 5, 2) print(st[s])

字符串串相关:

str()

将数据转化成字符串串

format()

与具体数据相关,  用于计算各种 小数, 精算等

# 字符串串

print(format('test', '<20'))

# 左对 齐

print(format('test', '>20'))

# 右对 齐

print(format('test', '^20'))

# 居中

# 数值

print(format(3, 'b'))

#  二进制

print(format(97, 'c'))

# 转换成unicode字符

print(format(11, 'd'))

#  十进制

print(format(11, 'o'))

#  八进制

print(format(11, 'x'))

#  十六进制( 小写字 母)

print(format(11, 'X'))

#  十六进制( 大写字 母)

print(format(11, 'n'))

# 和d 一样

print(format(11))   # 和d 一样

# 浮点数

print(format(123456789, 'e'))

# 科学计数法. 默认保留留6位 小数

print(format(123456789, '0.2e'))

# 科学计数法. 保留留2位 小数( 小写)

print(format(123456789, '0.2E'))

# 科学计数法. 保留留2位 小数( 大写)

print(format(1.23456789, 'f'))

#  小数点计数法. 保留留6位 小数

print(format(1.23456789, '0.2f'))

#  小数点计数法. 保留留2位 小数

print(format(1.23456789, '0.10f'))

#  小数点计数法. 保留留10位 小数

print(format(1.23456789e+10000, 'F'))                              #  小数点计数法.

bytes() 把字符串串转化成bytes类型

s = "你好" bs = s.encode("UTF-8") print(bs)

s1 = bs.decode("UTF-8") print(s1)

bs = bytes(s, encoding="utf-8")                                 # 把字符串串编码成UTF-8

print(bs)

bytearray()      返回 一个新字节数组. 这个数字 里里的元素是可变的, 并且每个元素的值得范

围是[0,256)

ret = bytearray('alex',encoding='utf-8') print(ret[0])

print(ret)

memoryview() 查看bytes在内存中的情况

# 查看bytes字节在内存中的情况 s = memoryview("麻花藤".encode("utf-8")) print(s)

ord() 输入字符找带字符编码的位置 chr() 输入位置数字找出对应的字符

ascii() 是ascii码中的返回该值 不是就返回\u...

# 找到对应字符的编码位置 print(ord('a')) print(ord('中'))

#   找到对应编码位置的字符 print(chr(97)) print(chr(20013))

#   在ascii中就返回这个值. 如果不不在就返回\u...

print(ascii('a'))

print(ascii('好'))

repr()     返回 一个对象的string形式

#   repr 就是原封不不动的输出, 引号和转义字符都不不起作 用print(repr(' 大家好,\n \t我叫周杰伦')) print(' 大家好我叫周杰伦')

#   %r  原封不不动的写出来

name = 'taibai' print('我叫%r' % name)

数据集合: dict() 创建 一个字典

set()      创建 一个集合

frozenset() 创建 一个冻结的集合. 冻结的集合不能进 行行添加和删除操作其他相关:

len() 返回 一个对象中的元素的个数 sorted() 对可迭代对象进 行行排序操作(讲完lamda后再讲这个) enumerate() 获取集合的枚举对象

lst = ["alex", "wusir", "taibai"] for index, el in enumerate(lst): print(str(index)+"==>"+el)

all() 可迭代对象中全部是True, 结果才是True any() 可迭代对象中有 一个是True, 结果就是True

print(all([1,2,True,0])) print(any([1,'',0]))

zip() 函数 用于将可迭代的对象作为参数, 将对象中对应的元素打包成 一个个元组, 然后返回由这些元组组成的开了了表. 如果各个迭代器的元素个数不 一致, 则返回列列表 长度与最短的对象相同.

l1 = [1,2,3,]

l2 = ['a','b','c',5]

l3 = ('*','**',(1,2,3)) for i in zip(l1,l2,l3):

print(i)

filter() 过滤(讲完lamda) map() 会根据提供的函数对指定序列列做映射(lamda)

 

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


# for i in range(20,15,-3):
# print(i)

# lst = ["大阳哥", "喜欢", "私密的徒步"]
# it = iter(lst) # __iter__()
# print(it.__next__())
# print(next(it)) # __next__()
# print(next(it))
# print(next(it))

# print("李嘉诚", "黄花菜", "马云", sep="*", end="大阳哥") # seperator
# input("提示语")

# hash算法:
# 目的是唯一性
# dict 查找效率非常高, hash表.用空间换的时间 比较耗费内存

# s = "大阳哥"
# print(hash(s))
# a = 12
# print(hash(a))

# lst = [1,2,3,4,5,6,7]
# # print(hash(lst)) # 列表是不可哈希的
# print(hash((1,)))
# print(hash("呵呵"))
# print(hash("哈哈"))

# 让用户输入一个要导入的模块
# import os
# name = input("请输入你要导入的模块:")
# __import__(name) # 可以动态导入模块

# print(help(str))

# print(dir(str))

# a = 11.25
# print(type(a))

# bin() 把一个十进制的数, 转换成二进制
# print(bin(10)) # 二进制
# print(hex(10)) # 十六进制
# print(oct(10)) # 八进制


# a = 10
# print(callable(a))
#
# def func():
# print("马化腾")
# print(callable(func)) # 函数是可以被调用的

# s = input("请输入a+b:")
# print(eval(s)) # 可以动态的执行代码. 代码必须有返回值

# s = "25*4"
# a = eval(s) # 运算
# print(a)

# s = "for i in range(10): print(i)"
# a = exec(s) # exec 执行代码不返回任何内容
# print(a)

# 动态执行代码
# exec("""
# def func():
# print(" 我是周杰伦")
# """ )
# func()

# code1 = "for i in range(10): print(i)"
# com = compile(code1, "", mode="exec") # compile并不会执行你的代码.只是编译
# exec(com) # 执行编译的结果
#
# code2 = "5+6+7"
# com2 = compile(code2, "", mode="eval")
# print(eval(com2))
#
# code3 = "name = input('请输入大阳哥的名字:')"
# com3 = compile(code3, "", mode="single")
# exec(com3)
# print(name)


# print(abs(-2)) # 绝对值
# print(abs(2))

# print(divmod(20,3)) # 求商和余数

# print(round(4.50)) # 五舍六入 => 四舍五入

# print(pow(10,2,3)) # 如果给了第三个参数. 表示最后取余

# print(sum([1,2,3,4,5,6,7,8,9,10])) # 求和

# lst = "你好啊"
# it = reversed(lst) # 不会改变原列表. 返回一个迭代器, 设计上的一个规则
# print(list(it))

# lst = [1, 2, 3, 4, 5, 6, 7]
# print(lst[1:3:1])
#
# s = slice(1, 3, 1) # 切片用的
# print(lst[s])


# name = "你好. \n我叫%s周润发" % "李嘉诚"
# print(name)
# print(repr(name)) # 原样输出,过滤掉转义字符 \n \t \r 不管百分号

# print(ord('a')) # 97, 返回字母a在编码表中的码位
# print(ord('中')) # 20013 中国的中字在编码表中的位置

# print(chr(65)) # 已知码位. 计算字符
# print(chr(20018))
#
# for i in range(65536):
# print(chr(i), end=" ")

# print(ascii("房"))

# s = "李嘉诚的爸爸"
# a = s.encode("UTF-8")
# print(a)
# print(a.decode("GBK"))


# bs = bytes("大阳哥今天很厉害", encoding="utf-8")
# print(bs.decode("utf-8"))

# ret = bytearray("alex" ,encoding ='utf-8')
# print(ret[0])
# ret[0] = 65
# print(str(ret))

# s = memoryview("麻花藤".encode( "utf-8")) # 查看内存
# print(s)


# s = "我叫王尼玛"
# print(format(s, "^20"))
# print(format(s, "<20"))
# print(format(s, ">20"))

# print(format(3, 'b' )) # ⼆进制
# print(format(97, 'c' )) # 转换成unicode字符
# print(format(11, 'd' )) # ⼗进制 %d
# print(format(11, 'o' )) # ⼋进制 8
# print(format(11, 'x' )) # ⼗六进制(⼩写字⺟)
# print(format(11, 'X' )) # ⼗六进制(⼤写字⺟)
# print(format(11, 'n' )) # 和d⼀样
# print(format(11)) # 和d⼀样

# print(format(123456789, 'e' )) # 科学计数法. 默认保留6位小数
# print(format(123456789, '0.2e' )) # 科学计数法. 保留2位小数(小写)
# print(format(123456789, '0.2E' )) # 科学计数法. 保留2位小数(大写)
# print(format(1.23456789, 'f' )) # 小数点计数法. 保留6位小数
# print(format(1.23456789, '0.2f' )) # 小数点计数法. 保留2位小数
# print(format(1.23456789, '0.10f')) # 小数点计数法. 保留10位小数
# print(format(1.23456789e+3, 'F')) # 小数点计数法. 很大的时候输出 INF

# lst = ["蛋1", "蛋2", "蛋3", "蛋4"]
# for i in range(len(lst)):
# print(i)
# print(lst[i])

# for index, el in enumerate(lst, 100): # 把索引和元素一起获取,索引默认从0开始. 可以更改
# print(index)
# print(el)


# print(any([0, "哈哈", "馒头", True]))


lst1 = ["施瓦辛格", "泰达米尔", "阿米尔汗", "威震天"]
lst2 = ["终结者", "英雄联盟", "我的个神啊", "变形金刚"]
lst3 = [10000000, 3, 10, 55,66]
for el in zip(lst1, lst2, lst3):
print(el)

参考资料料:

https://www.processon.com/mindmap/5de20a11e4b074c442eefe1d

猜你喜欢

转载自www.cnblogs.com/Selbst/p/11968379.html