|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
def uuid_generator():
uuid_pattern = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx"
uuid = ""
now_t = int(round(time.time() * 1000000)) / 1000.0
print(len(uuid_pattern))
for i in uuid_pattern:
e = (int(now_t + 16 * random.random()) % 16) | 0
now_t = math.floor(now_t / 16)
if i != "-":
uuid = uuid + hex(e if i == "x" else 3 & e | 8)[-1:]
else:
uuid = uuid + "-"
# print(uuid)
return uuid
这是一个生成uuid的函数,然后里面有一个hex(e if i=="x" else 3 & I 8)[-1:]
完全看不懂是啥意思 &和I 知道是and 和or 但是这样写的混在一起就看不懂了 [-1:]是切片大概看明白了,但是结果也不是特别清楚
求教说,如果正常写一个if的话写出来是什么样子的 方便解读和理解,另外为什么要这样写呢?是简写的目的吗?初学者看起来真的很吃力
本帖最后由 isdkz 于 2022-2-23 23:52 编辑
一:
结果1 if 条件 else 结果二 是一个三元表达式,如果满足条件,表达式的值就是结果一,否则就是结果二。
你的代码中的 uuid = uuid + hex(e if i == "x" else 3 & e | 8)[-1:] 写成 if 语句就是:if i == "x":
uuid = uuid + hex(e)[-1:]
else:
uuid = uuid + hex(3 & e | 8)[-1:]
二、[-1:] 是切片,指的是从倒数第一个元素到序列末尾,
但是因为你这里的序列是字符串(hex()的返回值是一个字符串),所以你使用 [-1:] 和 [-1] 并没有区别
在python shell中给你演示一下:>>> a = 'test'
>>> a[-1:] # 如果是字符串,[-1:] 和 [-1] 没有区别
't'
>>> a[-1]
't'
>>> b = ['t', 'e', 's', 't']
>>> b[-1:] # 如果是列表,[-1:] 会得到最后一个元素组成的列表, [-1] 会得到最后一个元素
['t']
>>> b[-1]
't'
>>>
|
|