Python3学习之路~3.3 内置函数
Python内置函数表:
内置参数详解:https://docs.python.org/3/library/functions.html?highlight=built#ascii
用法:
#Author:Zheng Na # abs() 取绝对值
print(abs(-10)) # # all() 如果可迭代对象iterabla中的所有元素都为真(或者iterable为空),返回True
print(all([])) # True
print(all([1,-5])) # True
print(all([0])) # False # any() 如果可迭代对象iterable中任意一个元素为真,返回真;如果iterable为空,返回False
print(any([])) # False
print(any([1])) # True
print(any([-5])) # True
print(any([0])) # False
print(any([1,-5,0])) # True # ascii() 把一个数据对象变成一个可打印的字符串的形式,不常用
print(ascii("你好")) # '\u4f60\u597d'
a=ascii([1,2,3])
print(type(a),[a]) # <class 'str'> ['[1, 2, 3]'] # bin() 把一个整数转成二进制
print(bin(1)) # 0b1
print(bin(5)) # 0b101
print(bin(255)) # 0b11111111 # bool() 返回一个布尔值
print(bool(1)) # True
print(bool(-1)) # True
print(bool(0)) # False
print(bool([])) # False
print(bool([0])) # True
print(bool([1,2])) # True # bitearray() and bytes()
#前面讲过,字符串不可修改,字符串的二进制字节格式更不可以修改
# 要修改必须生成一个新的覆盖旧的,如果没覆盖,其实旧的a根本没改,如下
a= bytes("abcde",encoding="UTF-8")
print(a.capitalize(),a) # b'Abcde' b'abcde
# 但是,bitearray()是可修改的二进制字节格式
b=bytearray("abcde",encoding="UTF-8")
print(b[0]) # 97 打印了a的ASCII码
print(b[1]) # 98 打印了b的ASCII码
print(b[2]) # 99 打印了c的ASCII码
#b[1] = 'B' # 报错:TypeError: an integer is required
b[1] = 66
print(b) # bytearray(b'aBcde')
#如上,可以把字符串变成bytearray形式,然后就可以对字符串进行修改了 # callables() 判断是否可调用,即是否后面可加括号
print(callable([])) # False 列表不可调用
def sayhi():pass
print(callable(sayhi)) # True 函数、类可调用 # chr() 返回ASCII码的对应表,参数必须是数字,与ord()对应相反
print(chr(97)) # a
print(ord('a')) # # classmethod() 类方法 # compile() 用于底层的把代码进行编译的过程,我们基本用不到
code = "for i in range(10):print(i)"
c=compile(code,'','exec') # <code object <module> at 0x0000000002444A50, file "", line 1>
exec(c) #输出0到9,但其实直接exec(code)就可以执行,哈哈 code2 = "1+3/2*6"
c2=compile(code2,'','eval')
print(eval(c2) ) # 10.0 code3='''
def fib(max):
n,a,b=0,0,1
while n<max:
#print(b)
yield b
a,b = b,a+b
n=n+1
return 'done' g = fib(6)
while True:
try:
x = next(g)
print('g:', x)
except StopIteration as e:
print('Generator return value:', e.value)
break
'''
py_obj=compile(code3,'err.log','exec') #err.log打印错误日志实际上不好使
exec(py_obj)
# 输出:
# g: 1
# g: 1
# g: 2
# g: 3
# g: 5
# g: 8
# Generator return value: done # complex() 复数,不常用 # delattr() 非常有用 # dict() 生成一个字典
print(dict()) # {} # dir() 查询一个数据类型下面有什么方法可用
a={}
print(dir(a))
# 输出:
# ['__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'] # divmod() 返回商和榆树
print(divmod(5,2)) # (2, 1) # enumerate()
name=['Amy','Bob','Cendy']
print(list(enumerate(name))) # [(0, 'Amy'), (1, 'Bob'), (2, 'Cendy')]
print(list(enumerate(name,start=1))) # [(1, 'Amy'), (2, 'Bob'), (3, 'Cendy')]
for index,item in enumerate(name):
print(index,item)
# 输出:
# 0 Amy
# 1 Bob
# 2 Cendy # eval() 将字符串string对象转化为有效的表达式参与求值运算返回计算结果
x = 1
print(eval('x+1')) # # exec() 执行以string类型存储的Python代码
x,y=2,3
exec("ans = x+y")
print("Answer is:",ans) # Answer is: 5 # filter() 过滤器,类似于map()
#把range(10)中符合lambda n:n>5规则的打印出来
res = filter(lambda n:n>5,range(10))
for i in res:
print(i) #打印6 7 8 9 # map() 类似于filter()
# 把后面的集合中的每一个值传入前面的lambda n:n*n进行处理,然后覆盖原来的列表
res = map(lambda n:n*n,range(10))
for i in res:
print(i) #打印0 1 4 9 16 25 36 49 64 81 # reduce() 在python2.7中有,在python3.0已经将其从内置函数移到标准库中了
import functools
res = functools.reduce( lambda x,y:x+y,range(10) ) #0+1+2+3+4+5+6+7+8+9=45
print(res) # # float() 浮点
# format() 类似于字符串的format # frozenset() 冻结的、不可变的集合
#集合默认是可修改的但是将集合变成frozenset之后就不可修改了,像元组一样
a = set([1,2,4,7])
print(dir(a)) #打印方法
b = frozenset([1,2,4,7])
print(dir(b))
#如上,可以看出b比a少了很多方法,比如['add', 'clear', 'pop', 'remove', 'update', 'difference_update', 'discard', 'intersection_update', 'symmetric_difference_update'] # getattr() # globals() 返回一个字典,将当前程序的所有全局变量以key-value的形式打印出来
print(globals()) # locals() 返回一个字典,将当前程序的局部变量以key-value的形式打印出来
def test():
local_var = 333
print(locals()) # {'local_var': 333}
print(globals().get('local_val')) # None
test()
print(globals().get('local_var')) # None # hasattr()
# hash() 哈希
# help() 查看帮助 # hex() 把一个整数转成16进制
print(hex(255)) # 0xff # id 返回内存地址 # input() 交互输入
# user= input("Username:") # int() 取整 # isinstance(object,classinfo) 判断object是否是classinfo类型
print(isinstance([1,2,3],list)) # True # issubclass() 判断是否是子类 # iter() 把一个可迭代对象变成一个迭代器
names=iter([1,2,3,4,5,6])
print(type(names)) # <class 'list_iterator'> #len() 长度
print(len([1,2,3])) # # max() 最大值
# min() 最小值 #memoryview()
#usage:
#>>> memoryview(b'abcd')
#<memory at 0x104069648>
#在进行切片并赋值数据时,不需要重新copy原列表数据,可以直接映射原数据内存,
import time
for n in (100000, 200000, 300000, 400000):
data = b'x'*n
start = time.time()
b = data
while b:
b = b[1:]
print('bytes', n, time.time()-start) for n in (100000, 200000, 300000, 400000):
data = b'x'*n
start = time.time()
b = memoryview(data)
while b:
b = b[1:]
print('memoryview', n, time.time()-start)
# 输出:
# bytes 100000 0.4980285167694092
# bytes 200000 3.0671753883361816
# bytes 300000 2.7071547508239746
# bytes 400000 5.042288541793823
# memoryview 100000 0.021001338958740234
# memoryview 200000 0.04300260543823242
# memoryview 300000 0.06600356101989746
# memoryview 400000 0.09100532531738281 # next() 相当于迭代器中的_next_() # oct() 把一个整数转成八进制
print(oct(13)) # 0o15 # open() 打开一个文件
with open('text.txt','w',encoding='UTF-8') as f:
pass # ord() 返回ASCII码的对应表,参数必须是字符,与chr()对应相反
print(chr(97)) # a
print(ord('a')) # # pow(x,y) 返回x的y次方
print(pow(2,8)) # # print() 打印
msg = "又回到最初的起点"
f = open("tofile.txt","w",encoding='UTF-8')
print(msg,"记忆中你青涩的脸",sep="|",end="",file=f) # property() # range()
for i in range(5):
print(i) #输出0到4
for i in range(1,6):
print(i) #输出1到5 # repr() 把一个对象变成字符串
a=repr([1,2,3])
print(type(a),[a]) # <class 'str'> ['[1, 2, 3]'] # reversed(seq) 跟列表中的reverse一样 # round()
print(round(1.3334)) #
print(round(1.3334,2)) # 1.33 # slice() 切片,没什么用处
d = range(20)
print(d[slice(2,5)]) #range(2,5) 相当于d[2:5]
print(d[2:5]) # sorted() 排序
a={6:2,8:0,1:4,-5:6,99:11,4:22}
#将字典变成列表,并按照key排序
print(sorted(a.items())) # [(-5, 6), (1, 4), (4, 22), (6, 2), (8, 0), (99, 11)]
#将字典变成列表,并按照value排序
print(sorted(a.items(),key=lambda x:x[1])) # [(8, 0), (6, 2), (1, 4), (-5, 6), (99, 11), (4, 22)] # starticmethod()
# str()
# super() # tuple() 元组
a = tuple([1,2,3])
print(a) # (1, 2, 3) # type() 查看对象的数据类型,并且他也是所有对象的根
print(type([])) # <class 'list'> # vars() 返回一个对象的所有属性名,不常用 # zip()
# zip(a,b)将a和b拼在一起,一一对应,像拉链(zip)一样
a=[1,2,3,4]
b=['a','b','c','d']
for i in zip(a,b):
print(i)
# 输出:
# (1, 'a')
# (2, 'b')
# (3, 'c')
# (4, 'd') # 如果a多b少,按照最少的来
a=[1,2,3,4,5,6]
b=['a','b','c','d']
for i in zip(a,b):
print(i)
# 输出:
# (1, 'a')
# (2, 'b')
# (3, 'c')
# (4, 'd') # __import__()
# import aaa可以引入一个模块名,但是__import__()可以引入一个字符串格式的
# __import__('aaa')
Python3学习之路~3.3 内置函数的更多相关文章
- oracle——学习之路(oracle内置函数)
oracle与很多内置函数,主要分为单行函数与集合函数. 首先要提一下dual表,它oracle的一个表,没有什么实质的东西,不能删除它,否则会造成Oracle无法启动等问题,他有很大用处,可以利用它 ...
- Python基础学习参考(三):内置函数
一:内置函数 在第一篇文章中,我们简单的认识了一下print()函数和input()函数,也就是输入和输出,这些函数我们可以直接的调用,不要自己定义或者引入什么,对吧?想这样的函数就叫做内置函数.这里 ...
- Python3标准库(一) 内置函数
Python中内置了很多的函数,而学习标准库我们需要事先熟悉这些内置函数,所以在这里一个个进行介绍.有些函数比较简单,只给予文字描述,而有些函数会给出示例代码帮助理解. 1.abs(x):返回一个整数 ...
- Python学习日记(六)——内置函数和文件操作(lambda)
lambda表达式 学习条件运算时,对于简单的 if else 语句,可以使用三元运算来表示,即: # 普通条件语句 if 1 == 1: name = 'prime' else: name = 'c ...
- mysql学习(十二)内置函数
常用的内置函数,常用select\ 字符串函数 contat('' , '', .....) //连接字符串 select concat(name, ' age is ', age) from per ...
- python学习笔记(五)— 内置函数
我们常用的‘’int,str,dict,input,print,type,len‘’都属于内置函数 print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真 print(any( ...
- python学习笔记(四):生成器、内置函数、json
一.生成器 生成器是什么?其实和list差不多,只不过list生成的时候数据已经在内存里面了,而生成器中生成的数据是当被调用时才生成呢,这样就节省了内存空间. 1. 列表生成式,在第二篇博客里面我写了 ...
- 【python之路46】内置函数2,是【python之路18】的补充
将3.5版本中的68个内置函数,按顺序逐个进行了自认为详细的解析.为了方便记忆,将这些内置函数进行了如下分类: 数学运算(7个) 类型转换(24个) 序列操作(8个) 对象操作(7个) 反射操作(8个 ...
- python学习笔记(七)——内置函数
builtins.py模块,是python的内建模块,在运行时会自动导入该模块.在该模块中定义了很多我们常用的内置函数,比如print,input 等. 在 builtins.py 模块中给出如下注释 ...
随机推荐
- Visual Studio(C#)快捷键与Eclipse(JAVA)快捷键对比
Visual Studio与Eclipse快捷键对比 Visual Studio Eclipse 代码提示: Ctrl+J Ctrl+空格键 / Alt+/ .abcdefghijklmnopqr ...
- Android开发训练之第五章第七节——Transmitting Network Data Using Volley
Transmitting Network Data Using Volley GET STARTED DEPENDENCIES AND PREREQUISITES Android 1.6 (API L ...
- 关于linux Centos 7一个网卡配置多个IP的方法
有时我们在工作中,会遇到一个网卡配置多个ip的情况,尤其是在linux服务器方面的应用教多 于是笔者将其配置过程整理如下,希望能帮到遇到同样问题的朋友,这里以vmware虚拟机下的Centos 7为例 ...
- zynq里面的AXI总线(2017-1-11)
在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议.其中三种AXI总线分别为: AXI4:(For high-performance memory-mapped requir ...
- CentOS和Redhat救援模式
当单用户模式无法修复系统时可以使用救援模式 把系统盘插入光驱重启主机 选择救援模式 默认选择 是否设置网络这里选择否 已读写模式挂载 提示系统挂载/mnt/sysimage如果需要恢复运行 chroo ...
- [No0000FB]C# 命名空间(Namespace)
命名空间的设计目的是提供一种让一组名称与其他名称分隔开的方式.在一个命名空间中声明的类的名称与另一个命名空间中声明的相同的类的名称不冲突. 定义命名空间 命名空间的定义是以关键字 namespace ...
- RabbitMQ下的生产消费者模式与订阅发布模式
所谓模式,就是在某种场景下,一类问题及其解决方案的总结归纳.生产消费者模式与订阅发布模式是使用消息中间件时常用的两种模式,用于功能解耦和分布式系统间的消息通信,以下面两种场景为例: 数据接入 假设 ...
- 用CountDownLatch提升请求处理速度
countdownlatch是java多线程包concurrent里的一个常见工具类,通过使用它可以借助线程能力极大提升处理响应速度,且实现方式非常优雅.今天我们用一个实际案例和大家来讲解一下如何使用 ...
- 1.7Oob 成员变量可以不初始化 但局部变量必须初始化
成员变量有默认的初始值 像int a; a默认为0:而局部变量没有初始值
- angular ajax请求 结果显示显示两次的问题
angular 项目中,由于用到ajax 请求,结果显示如下情况 同样的接口,显示两次,其中第一次请求情况为 request method 显示为opttions 第二次的情况是 为啥会出现如此的情况 ...