2024-03-28 18:35:19 发布
网友
我很好奇这样的事情是否可能:
print "lajsdflk"+ (if x>1:"123123";else:"0000000") +"!@#"
不是专门打印,而是任何带有数字的函数;另一个例子:
print 596* (if statementX: 6545; else: 9874) /63
如果可能的话,我想保持一行。你知道吗
你可以像这样使用conditional expression
>>> "lajsdflk" + ("123123" if 5 > 1 else "0000000") + "!@#" 'lajsdflk123123!@#' >>> "lajsdflk" + ("123123" if 0 > 1 else "0000000") + "!@#" 'lajsdflk0000000!@#'
由于Python接受if表达式中的任何真实值,因此您甚至可以使用任何函数,如下所示
if
>>> "lajsdflk" + ("123123" if "abcd1234".isalnum() else "0000000") + "!@#" 'lajsdflk123123!@#'
人们还用另一种伎俩。是这样的
>>> "lajsdflk" + ("0000000", "123123")[5 > 1] + "!@#" 'lajsdflk123123!@#' >>> "lajsdflk" + ("0000000", "123123")[0 > 1] + "!@#" 'lajsdflk0000000!@#'
这里,用可能的结果准备元组,并基于比较操作的结果选择可能的值。这里,对5 > 1求值并发现它是真实的,因为Python的True等于1,而False等于0,5 > 1求值为1。你知道吗
5 > 1
True
False
0
>>> 0 == False True >>> 1 == True True
注意:此技巧有问题。想想这个案子
>>> 1 + (2, 3/0)[4 > 0] + 5 Traceback (most recent call last): File "<input>", line 1, in <module> ZeroDivisionError: integer division or modulo by zero
因为,当元组被创建时,所有的值都被计算,Python不能用1除以0。但是,条件表达式不会有这个问题
1
>>> 1 + (2 if 4 > 0 else 3/0) + 5 8
因为它只在分支被命中时才计算值。你知道吗
你可以像这样使用conditional expression
由于Python接受
if
表达式中的任何真实值,因此您甚至可以使用任何函数,如下所示人们还用另一种伎俩。是这样的
这里,用可能的结果准备元组,并基于比较操作的结果选择可能的值。这里,对
5 > 1
求值并发现它是真实的,因为Python的True
等于1,而False
等于0
,5 > 1
求值为1。你知道吗注意:此技巧有问题。想想这个案子
因为,当元组被创建时,所有的值都被计算,Python不能用
1
除以0
。但是,条件表达式不会有这个问题因为它只在分支被命中时才计算值。你知道吗
相关问题 更多 >
编程相关推荐