0
点赞
收藏
分享

微信扫一扫

python的一些散点知识


1.Generator

(1)什么是Generator:是一个生成器,可以生成1个东西,通过next(),是一个iterable

nums = [1,2,3,4,5]

#生成器的方式加快运行速度
squre_nums = ( n*n for n in nums)

print(squre_nums)

for a in squre_nums:
print(a)

python的一些散点知识_1024程序员节

(2)为什么要用Generator?列表很大的时候,Generator按需给你产生,不会一次性生成,按需要产生

可以看到不使用推导式会占用一定内存,影响运行时间

print('---------------------不使用推导式后----------------')

#大数量
yi = 100000000
nums = list(range(10000000))

#不适用推导式
print(f'内存前:{mem.memory_usage()}')
squre_nums = [n*n for n in nums]
print(f'内存后:{mem.memory_usage()}')

python的一些散点知识_1024程序员节_02


使用推导式后不适用内存,加快运算

print('---------------------使用推导式后----------------')
#大数量
yi = 100000000
nums = list(range(10000000))
#使用推导式
print(f'内前后:{mem.memory_usage()}')
squre_nums2 = (n*n for n in nums)
print(f'内存后:{mem.memory_usage()}')

python的一些散点知识_参数传递_03

2.yield

(1)是一个生成器,可以生成1个东西,通过next(),是一个iterable
(2)他跟return一样返回值给你,不一样的的是他会继续
(3)return返回后后面不能有代码继续执行,而yield返回值后后面可以有代码继续执行

nums = [1,2,3,4,5]
yi = 10000
def gen_nums(nums):
for n in nums:
if(n%3==0):
yield 3*yi
elif(n%5==0):
yield 5*yi
else:
yield n*yi
gnums = gen_nums(nums)
print(gnums)
for n in gnums:
print(n)

这里的if yield返回一个值以后,不会停止,会继续从原来的地方执行,继续返回elif yield的值知道整个条件判断语句执行完为止

python的一些散点知识_键值对_04

2.*args,**kwargs

*args 和 **kwargs主要用于函数定义,你可以将不定数量的参数传递给某个函数。

*args
*args 不定参数(不定的意思是指,预先并不知道,函数使用者会传递多少个参数给你)

*args是用来发送一个非键值对的可变数量的参数列表给一个函数。
*args的用法:当传入的参数个数未知,且不需要知道参数名称时。
代码如下:

#arg karg


print('**************不遍历传入一个参数******************************')
'''
因为*args是用来接收多个参数,不进行遍历的话传入一个就只给一个内存地址
'''
def arg(*args):
print("传入的参数:",arg)
arg(1)




print('*****************遍历后传入***************************')
'''
遍历后传入可以将每次输入的参数都打印出来
'''

def arg(*args):
for i in args:
print("传入的参数:",i)
arg(1,2,2,'a','b')




print('**************综合使用******************************')
'''
可以综合使用,用一个参数接受第一个传参,后面用不定参数接受不定传参
'''
def func_arg(farg, *args):
print("传入的第一个参数:", farg)
for arg in args:
print("传入的其他参数:", arg)
func_arg(1,"youzan",'dba','hello')

python的一些散点知识_python_05


**kwargs

**kwargs 传入键值对(例如:num1=11,num2=22)

**kwargs 允许将不定长度的键值对作为参数传递给一个函数。如果想要在一个函数里处理带名字的参数,应该使用 **kwargs。

代码如下:

#利用它转换参数为字典
'''**kwargs是用来接受不定数量的键值对'''
def kw_dict1(**kwargs):
return kwargs
print(kw_dict1(a=1))

def kw_dict(**kwargs):
return kwargs
print(kw_dict(a=1,b=2,c=3))

python的一些散点知识_1024程序员节_06


举报

相关推荐

0 条评论