py知识(每日更新) 6.20

生成器初识

​ 生成器本事就是迭代器.Python社区生成器与迭代器是一种.生成器与迭代器的唯一区别: 生成器是我们自己用Python代码构建的.

生成器生产方式

生成器函数
def func():
    print(111)
    yield
ret = func()    #生成器对象
print(ret)  #打印生成器地址
#只要函数中出现yield ,那么该函数就变成生成器函数
#一个next对应一个yield

#return 和yield区别
return 结束函数 给函数的执行者返回一个值 (如果多个值通过元祖返回)
yield  暂停函数 对应着给next返回值 (如果多个值通过元祖返回)

yield from 
#区别: yield :对应next给next返回值
yield from 讲一个可迭代对象的每一个元素返回给next 节省代码,提升效率(代替了for循环)

生成器表达式

Python直接提供的一些内置函数.返回一个生成器

列表推导式,生成器表达式

列表推导式:一行代码构建一个有规律比较复杂的列表

l1 = [i for i in range(1,101)]
print(l1)
#两种构建方式:

1,循环模式:[变量(加工后的变量) for 变量 in iterable]

2.筛选模式:[变量(加工后的变量) for 变量 in iterable if 条件]

列表推导式的优缺点:

​ 优点:简单,快捷,装逼

​ 缺点:可读性不高 不好排错,慎用 不要入迷

生成器表达式

与列表推导式几乎一模一样

循环模式
obj = (i for i in range(1,11))
print(next(obj))
#如何触发生成器(迭代器)取值
1:next 2:for循环 for i in obj: print(i) 
            3:数据转换 print(list(obj))
#生成器表达式:节省内存
筛选模式
obj = (i fir i in range(1,11) if i > 10)
print(next(obj))

字典推导式 集合推导式

匿名函数

匿名函数只能构建简单的幻术,一句话函数

def func(x,y)
    return x + y
print(1,2)
#匿名函数的构建
func2 = lambda x,y:x + y
print(func(1,2))

匿名函数最长用的就是与内置函数结合使用

内置函数

内置函数:Python中内置函数有68种.

str() dir() range() len() print() max() min() open() input() type() int() enumerate() list() id() set() dict() iter() next() tuple() bool() globals() locals() frozenset() 

eval exce

eval('2 + 2')  # 4
n=81
eval("n + 4")  # 85
eval('print(666)')  # 666

s = '''
for i in [1,2,3]:
    print(i)
'''
exec(s)

hash:获取一个对象(可哈希对象:int,str,Bool,tuple)的哈希值。

print(hash(12322))
print(hash('123'))
print(hash('arg'))
print(hash('alex'))
print(hash(True))
print(hash(False))
print(hash((1,2,3)))
'''
-2996001552409009098
-4637515981888139739
1
2528502973977326415
'''

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

print(help(list))
print(help(str.split))

callable:函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。

name = 'alex'
def func():
    pass
print(callable(name))  # False
print(callable(func))  # True

int:函数用于将一个字符串或数字转换为整型

print(int())  # 0
print(int('12'))  # 12
print(int(3.6))  # 3
print(int('0100',base=2))  # 将2进制的 0100 转化成十进制。结果为 4
float:函数用于将整数和字符串转换成浮点数。

complex:函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。

print(float(3))  # 3.0
print(complex(1,2))  # (1+2j)

bin:将十进制转换成二进制并返回。

oct:将十进制转化成八进制字符串并返回。

hex:将十进制转化成十六进制字符串并返回。

print(bin(10),type(bin(10)))  # 0b1010 <class 'str'>
print(oct(10),type(oct(10)))  # 0o12 <class 'str'>
print(hex(10),type(hex(10)))  # 0xa <class 'str'>

divmod:计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。

round:保留浮点数的小数位数,默认保留整数。

pow:求x ** y次幂。(三个参数为x**y的结果对z取余)

print(divmod(7,2))  # (3, 1)
print(round(7/3,2))  # 2.33
print(round(7/3))  # 2
print(round(3.32567,3))  # 3.326
print(pow(2,3))  # 两个参数为2**3次幂
print(pow(2,3,3))  # 三个参数为2**3次幂,对3取余。

bytes:用于不同编码之间的转化。

# s = '你好'
# bs = s.encode('utf-8')
# print(bs)
# s1 = bs.decode('utf-8')
# print(s1)
# bs = bytes(s,encoding='utf-8')
# print(bs)
# b = '你好'.encode('gbk')
# b1 = b.decode('gbk')
# print(b1.encode('utf-8'))

ord:输入字符找该字符编码的位置
chr:输入位置数字找出其对应的字符

# ord 输入字符找该字符编码的位置
print(ord('a'))
print(ord('中'))

# chr 输入位置数字找出其对应的字符
print(chr(97))
print(chr(20013))

repr:返回一个对象的string形式(原形毕露)

# %r  原封不动的写出来
# name = 'taibai'
# print('我叫%r'%name)
print(repr('{"name":"alex"}'))
print('{"name":"alex"}')

all:可迭代对象中,全都是True才是True

any:可迭代对象中,有一个True 就是True

# all  可迭代对象中,全都是True才是True
# any  可迭代对象中,有一个True 就是True
# print(all([1,2,True,0]))
# print(any([1,'',0]))

print() 屏幕输出

''' 源码分析
def print(self, *args, sep=' ', end='\n', file=None): # known special case of print
    """
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    file:  默认是输出到屏幕,如果设置为文件句柄,输出到文件
    sep:   打印多个值之间的分隔符,默认为空格
    end:   每一次打印的结尾,默认为换行符
    flush: 立即把内容输出到流文件,不作缓存
    """
'''

print(111,222,333,sep='*')  # 111*222*333

print(111,end='')
print(222)  #两行的结果 111222

f = open('log','w',encoding='utf-8')
print('写入文件',fle=f,flush=True)

dict() 通过相应的方式创建字典。

list
l1 = list('abcd')
print(l1)  # ['a', 'b', 'c', 'd']
tu1 = tuple('abcd')
print(tu1)  # ('a', 'b', 'c', 'd')

# dict
# 创建字典的几种方式
dic = {1: 2}
# # 字典推导式
print({i: 1 for i in range(3)})
# # dict()
dic = dict(one=1, two=2, three=3)
# print(dic)
fromkeys()

abs() 返回绝对值

i = -5
print(abs(i))  # 5

sum() 求和

print(sum([1,2,3]))
print(sum((1,2,3),100))

min() 求最小值

print(min([1,2,3]))  # 返回此序列最小值

ret = min([1,2,-5,],key=abs)  # 按照绝对值的大小,返回此序列最小值
print(ret)
# 加key是可以加函数名,min自动会获取传入函数中的参数的每个元素,然后通过你设定的返回值比较大小,返回最小的传入的那个参数。
print(min(1,2,-5,6,-3,key=lambda x:abs(x)))  # 可以设置很多参数比较大小
dic = {'a':3,'b':2,'c':1}
print(min(dic,key=lambda x:dic[x]))

# x为dic的key,lambda的返回值(即dic的值进行比较)返回最小的值对应的键

max() 最大值与最小值用法相同。

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

l = reversed('你好')  # l 获取到的是一个生成器
print(list(l))
ret = reversed([1, 4, 3, 7, 9])
print(list(ret))  # [9, 7, 3, 4, 1]

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

s = '你好太白'
bs = s.encode('utf-8')
print(bs)
结果:b'\xe4\xbd\xa0\xe5\xa5\xbd\xe6\xad\xa6\xe5\xa4\xa7'

s1 = bs.decode('utf-8')
print(s1)
结果: 你好太白

s = '你好'
bs = bytes(s,encoding='utf-8')
print(bs)
# 将字符串转换成字节

bs1 = str(bs,encoding='utf-8')
print(bs1)
# 将字节转换成字符串

转载于:https://www.cnblogs.com/lyoko1996/p/11061564.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值