Python中“*”和“**”的用法 || yield的用法 || ‘$in’和'$nin' || python @property的含义
一、单星号 *
采用 * 可将列表或元祖中的元素直接取出,作为随机数的上下限:
import random a = [1,4]
print(random.randrange(*a))
或者for循环输出:
import random a = [1,4]
for i in range(*a):
print(i)
'''
result :
1
2
3
'''
二、双星号 **
双星号 ** 可将字典里的“值”取出,如下例
class Proxy(object): def __init__(self,ip,port,protocol=-1,nick_type=-1,speed=-1,area=None,score=0,disable_ip=[]):
self.ip=ip
self.port=port
self.protocol=protocol
self.nick_type=nick_type
self.speed=speed
self.area=area
self.score=score
self.disable_ip=disable_ip a = {
'ip':'123',
'port':'9999',
'protocol':2,
'nick_type':1,
'speed':3,
'area':'jd.com',
'score':20,
'disable_ip':None
}
proxy = Proxy(**a)
print(proxy.__dict__)
__dict__ : 类的属性(包含一个字典,由类的数据属性组成),简单地说就是把数据转化成一个字典形式。
输出结果:
{'ip': '123', 'port': '9999', 'protocol': 2, 'nick_type': 1, 'speed': 3, 'area': 'jd.com', 'score': 20, 'disable_ip': None}
三、yield的用法
https://blog.csdn.net/mieleizhi0522/article/details/82142856
这里再补充一点就是生成器函数:
代码:
1 class People(object):
2
3 def __init__(self,age,name='嘿嘿'):
4 self.age=age
5 self.name=name
6
7 def dispaly():
8 for i in range(5):
9 peopel = People(i)
10 yield peopel
11
12 if __name__ == '__main__':
13 print(dispaly())
14 for peo in dispaly():
15 print(peo.__dict__)
控制台输出:
<generator object dispaly at 0x0000021E36B4A930>
{'age': 0, 'name': '嘿嘿'}
{'age': 1, 'name': '嘿嘿'}
{'age': 2, 'name': '嘿嘿'}
{'age': 3, 'name': '嘿嘿'}
{'age': 4, 'name': '嘿嘿'}
可以说,由yield的函数,相当于把所有函数返回值都放到一个容器里面。你可以通过遍历它来获取里面内容
这个时候的yield就和return不一样了,因为如果是return的话根本就不会输出age>0的对象
1 class People(object):
2
3 def __init__(self,age,name='嘿嘿'):
4 self.age=age
5 self.name=name
6
7 def dispaly():
8 for i in range(5):
9 peopel = People(i)
10 yield peopel
11
12 if __name__ == '__main__':
13 g=dispaly()
14 print(next(g).__dict__)
15 print(next(g).__dict__)
16 print(next(g).__dict__)
17
18 '''控制台输出
19 {'age': 0, 'name': '嘿嘿'}
20 {'age': 1, 'name': '嘿嘿'}
21 {'age': 2, 'name': '嘿嘿'}
22 '''
带有 yield 的函数不再是一个普通函数,而是一个生成器generator,可用于迭代。yield在python 里就是一个生成器。当你使用一个yield的时候,对应的函数就是一个生成器了。生成器的功能就是在yield的区域进行迭代处理。
打印0~10000个数字: 1、生成一个列表n,再循环打印1-10000个数字,这样做会占用系统的内存; n = [i in [i in rang(0, 10000)] for i in n: print(i) 2、用下列生成器,就不用先生成列表,利用循环,每调用一次,就使用一次,不占内存空间 def gen(max): n=0 while n<=max: n+=1 yield n g = gen(10000) 就像使用迭代器一样,使用返回值 for i in g: print(i) print(next(g)) print(next(g)) print(next(g))
四、‘$in’和'$nin'
这两个东西是mongodb里面查询条件
看意思就知道‘$in’就代表找出在哪个范围内。‘$in’就代表找出不在哪个范围内的。
> db.tianyc02.find()
{ "_id" : ObjectId("50ea6eba12729d90ce6e3423"), "name" : "xttt", "age" : 111 }
{ "_id" : ObjectId("50ea6eba12729d90ce6e3424"), "name" : "xttt", "age" : 222 }
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "name" : "xtt", "age" : 11 }
{ "_id" : ObjectId("50ea6b7312729d90ce6e341c"), "name" : "xtt", "age" : 22 }
> db.tianyc02.find({age:{$in:[11,22]}})
{ "_id" : ObjectId("50ea6b6f12729d90ce6e341b"), "name" : "xtt", "age" : 11 }
{ "_id" : ObjectId("50ea6b7312729d90ce6e341c"), "name" : "xtt", "age" : 22 }
> db.tianyc02.find({age:{$nin:[11,22]}})
{ "_id" : ObjectId("50ea6eba12729d90ce6e3423"), "name" : "xttt", "age" : 111 }
{ "_id" : ObjectId("50ea6eba12729d90ce6e3424"), "name" : "xttt", "age" : 222 }
五、python @property的含义
@property类似于java中的private
class recet(object):
def __init__(self): self.width = 20 @property
def set_width(self,a=0):
self.width=a def get_width(self):
return self.width a = recet()
a.width=10
'''
a.set_width(50) #'NoneType' object is not callable
不能调用这个方法,会报错
'''
print(a.get_width())
(@property使方法像属性一样调用,就像是一种特殊的属性)
Python中“*”和“**”的用法 || yield的用法 || ‘$in’和'$nin' || python @property的含义的更多相关文章
- python中argparse模块用法实例详解
python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...
- python中MySQLdb模块用法实例
篇文章主要介绍了python中MySQLdb模块用法,以实例形式详细讲述了MySQLdb模块针对MySQL数据库的各种常见操作方法,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了python中 ...
- python中hashlib模块用法示例
python中hashlib模块用法示例 我们以前介绍过一篇Python加密的文章:Python 加密的实例详解.今天我们看看python中hashlib模块用法示例,具体如下. hashlib ha ...
- Python中super的用法【转载】
Python中super的用法[转载] 转载dxk_093812 最后发布于2019-02-17 20:12:18 阅读数 1143 收藏 展开 转载自 Python面向对象中super用法与MRO ...
- python中List的sort方法的用法
python列表排序 简单记一下python中List的sort方法(或者sorted内建函数)的用法. 关键字: python列表排序 python字典排序 sorted List的元素可以是各种东 ...
- python中的 try...except...finally 的用法
python中的 try...except...finally 的用法 author:headsen chen date:2018-04-09 16:22:11 try, except, final ...
- python 中 dict 的另一种用法
python 中 dic另一种用法 描述 Python 字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 dict={} dict.get(k1,Non ...
- 【转】Python中string的strip,lstrip,rstrip用法
Python中的strip用于去除字符串的首尾字符串,同理,lstrip用于去除左边的字符,rstrip用于去除右边的字符. 这三个函数都可传入一个参数,指定要去除的首尾字符. 需要注意的是,传入的是 ...
- python 中 sorted() 和 list.sort() 的用法
今天用python自带的sorted对一个列表进行排序, 在这里总结一下 只要是可迭代对象都可以用sorted . sorted(itrearble, cmp=None, key=None, reve ...
随机推荐
- Linux性能相关命令
Linux性能相关命令 目录 Linux性能相关命令 1. 查看硬盘相关信息 2. 查看CPU相关信息 3. 查看内存相关信息 4. 查看进程运行的信息 1. 查看硬盘相关信息 cat /proc/s ...
- mysql中的基本注入函数
1. 常见数据库注入函数: MYSQL: and length((user))>10 ACCESS: and (select count() from MSysAccessObject)> ...
- Loadrunner录制脚本与编写脚本的区别
异同点: 1.录制的和编写的脚本质量上没有区别 2.性能脚本关心的是用户和服务器的数据交互,从这点上来看,录制和编写也没有区别,手动编写脚本也可以写出很真实的脚本 3.能录制的情况下,就录制吧,谁每天 ...
- BAPI_GOODSMVT_CREATE的参数GOODSMVT_CODE的说明
BAPI_GOODSMVT_CREATE 的功能就是用于货物移动,其主要可以实现MB*事物的一些功能,其中该BAPI的参数 GOODSMVT_CODE就控制了对应哪个事物码的功能,下面给出该参数的值和 ...
- 爬虫学习(二)requests模块的使用
一.requests的概述 requests模块是用于发送网络请求,返回响应数据.底层实现是urllib,而且简单易用,在python2.python3中通用,能够自动帮助我们解压(gzip压缩的等) ...
- 1.2V转3V芯片,电路图很少就三个元件
1.2V的镍氢电池由于稳定高,应用产品也是很广,但是由于电压低,需要1.2V转3V芯片,来将1.2V的电压升压转3V,稳定输出供电. 一般性的1.2V转3V芯片,都是用PW5100比较多,固定输出电压 ...
- centos&linux
who am i 查看是哪一个用户 init 0关机 ifconfig用于配置网络或显示当前网络接口的状态 eth0是网卡的名字 第一行:flags后面的up指的是网卡处于运行状态,running连接 ...
- 【pytest】(十二)参数化测试用例中的setup和teardown要怎么写?
还是一篇关于pytest的fixture在实际使用场景的分享. fixture我用来最多的就是写setup跟teardown了,那么现在有一个用例是测试一个列表接口,参数化了不同的状态值传参,来进行测 ...
- 2、fork函数与进程ID
1. fork函数 fork函数用于克隆一份当前的进程资源,调用fork函数之后,进程一分为二,并且两个进程的资源是一样的(只是资源内容完全一样,并不是同一份资源).fork函数的函数原型为:pid_ ...
- 使用JWT创建安全的ASP.NET Core Web API
在本文中,你将学习如何在ASP.NET Core Web API中使用JWT身份验证.我将在编写代码时逐步简化.我们将构建两个终结点,一个用于客户登录,另一个用于获取客户订单.这些api将连接到在本地 ...