草庐IT

Pythonic魔法——运算符

Python乐园 2023-10-16 原文

在 Python 中,运算符是一种用于对操作数进行操作的特殊符号或函数。Python 支持多种运算符,包括算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符和身份运算符等。

算术运算符

算术运算符是用于进行数学运算的运算符。Python 中的算术运算符包括加法、减法、乘法、除法、模运算和幂运算等。

以下是 Python 中常用的算术运算符:

运算符 描述 示例
+ 加法运算 2 + 3 = 5
- 减法运算 3 - 2 = 1
* 乘法运算 2 * 3 = 6
/ 除法运算 10 / 2 = 5.0
% 取模运算 9 % 2 = 1
** 幂运算 2 ** 3 = 8
// 整除运算 10 // 3 = 3
a = 10
b = 3
print(a + b)   # 13
print(a - b)   # 7
print(a * b)   # 30
print(a / b)   # 3.3333333333333335
print(a % b)   # 1
print(a ** b)  # 1000
print(a // b)  # 3

比较运算符

比较运算符是用于比较两个值的运算符。Python 中的比较运算符包括等于、不等于、大于、小于、大于等于和小于等于等。

以下是 Python 中常用的比较运算符:

运算符 描述 示例
== 等于运算 2 == 2,结果为 True
!= 不等于运算 2 != 3,结果为 True
> 大于运算 3 > 2,结果为 True
< 小于运算 2 < 3,结果为 True
>= 大于等于运算 3 >= 2,结果为 True
<= 小于等于运算 2 <= 3,结果为 True
a = 5
b = 3
print(a == b)   # False
print(a != b)   # True
print(a > b)    # True
print(a < b)    # False
print(a >= b)   # True
print(a <= b)   # False

赋值运算符

赋值运算符用于给变量或表达式赋值,Python 中的赋值运算符包括等于、加等于、减等于、乘等于、除等于、取模等于、幂等于和整除等于等。

以下是 Python 中常用的赋值运算符:

运算符 描述 示例
= 等于运算 x = 10
+= 加等于运算 x += 5, 等价于 x = x+5
-= 减等于运算 x -= 5, 等价于 x = x-5
*= 乘等于运算 x = 5, 等价于 x = x5
/= 除等于运算 x /= 5, 等价于 x = x/5
%= 取模等于运算 x %= 5, 等价于 x = x%5
**= 幂等于运算 x = 5, 等价于 x = x5
//= 整除等于运算 x //= 5, 等价于 x = x//5
a = 10
b = 3
a += b  # 等价于 a = a + b
print(a)   # 13

a -= b  # 等价于 a = a - b
print(a)   # 10

a *= b  # 等价于 a = a * b
print(a)   # 30

a /= b  # 等价于 a = a / b
print(a)   # 10.0

a %= b  # 等价于 a = a % b
print(a)   # 1.0

a **= b  # 等价于 a = a ** b
print(a)   # 1.0

a //= b  # 等价于 a = a // b
print(a)   # 0.0

逻辑运算符

逻辑运算符用于连接多个条件表达式,判断它们是否为 True 或 False。Python 中的逻辑运算符包括与、或和非三种。

以下是 Python 中常用的逻辑运算符:

运算符 描述 示例
and 与运算 x > 2 and x < 10
or 或运算 x < 2 or x > 10
not 非运算 not(x > 2 and x < 10)
a = 5
b = 3
c = 9
print(a > b and b < c)   # True
print(a < b or b > c)    # False
print(not(a > b and b < c))   # False

成员运算符

成员运算符用于判断某个对象是否属于某个集合。Python 中的成员运算符包括 in 和 not in 两种。

以下是 Python 中常用的成员运算符:

运算符 描述 示例
in 判断对象是否在集合中 'a' in ['a', 'b', 'c']
not in 判断对象是否不在集合中 'd' not in ['a', 'b']
a = "hello"
b = [1, 2, 3]
print("o" in a)   # True
print("w" not in a)   # True
print(1 in b)    # True
print(4 in b)    # False

身份运算符

身份运算符用于比较变量或对象的内存地址是否一致。Python 中的身份运算符包括 is 和 not is 两种。

以下是 Python 中常用的身份运算符:

运算符 描述 示例
is 判断变量是否引用同一对象 x is y, x is not y --> True, False
not is 判断变量是否不引用同一对象 x is not y, x not is y --> False, True
a = [1, 2, 3]
b = a
print(b is a)       # True
print(b == a)       # True
print([1, 2, 3] is a)    # False
print([1, 2, 3] == a)    # True

位运算符

位运算符是对整数在二进制下的位进行操作的运算符。Python 中的位运算符包括按位与、按位或、按位异或、按位取反、左移和右移六种。

以下是 Python 中常用的位运算符:

运算符 描述 示例
& 按位与运算 5 & 3 = 1
| 按位或运算 5 | 3 = 7
^ 按位异或运算 5 ^ 3 = 6
~ 按位取反运算 ~5 = -6
<< 左移运算 5 << 2 = 20
>> 右移运算 5 >> 2 = 1
a = 5   # 二进制表示为 101
b = 3   # 二进制表示为 011
print(a & b)    # 001,等价于 1
print(a | b)    # 111,等价于 7
print(a ^ b)    # 110,等价于 6
print(~a)       # -6,等价于 -(a+1)
print(a << 2)   # 10100,等价于 20
print(a >> 2)   # 1,等价于 1

总结

本文介绍了 Python 中的各种运算符,包括算术运算符、比较运算符、赋值运算符、逻辑运算符、位运算符、成员运算符和身份运算符等。熟悉这些运算符,有助于写出更加高效灵活的 Python 代码。不同的运算符对应不同的场景和问题,需要根据应用需求灵活选择。

有关Pythonic魔法——运算符的更多相关文章

  1. ruby - 触发器 ruby​​ 中 3 点范围运算符和 2 点范围运算符的区别 - 2

    请帮助我理解范围运算符...和..之间的区别,作为Ruby中使用的“触发器”。这是PragmaticProgrammersguidetoRuby中的一个示例:a=(11..20).collect{|i|(i%4==0)..(i%3==0)?i:nil}返回:[nil,12,nil,nil,nil,16,17,18,nil,20]还有:a=(11..20).collect{|i|(i%4==0)...(i%3==0)?i:nil}返回:[nil,12,13,14,15,16,17,18,nil,20] 最佳答案 触发器(又名f/f)是

  2. ruby-on-rails - 如何在 Ruby on Rails 中实现由 JSF 2.0 (Primefaces) 驱动的 UI 魔法 - 2

    按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。问题1)我想知道ruby​​onrails是否有功能类似于primefaces的gem。我问的原因是如果您使用primefaces(http://www.primefaces.org/showcase-labs/ui/home.jsf),开发人员无需担心javascript或jquery的东西。据我所知,JSF是一个规范,基于规范的各种可用实现,prim

  3. ruby - 带括号和 splat 运算符的并行赋值 - 2

    我明白了:x,(y,z)=1,*[2,3]x#=>1y#=>2z#=>nil我想知道为什么z的值为nil。 最佳答案 x,(y,z)=1,*[2,3]右侧的splat*是内联扩展的,所以它等同于:x,(y,z)=1,2,3左边带括号的列表被视为嵌套赋值,所以它等价于:x=1y,z=23被丢弃,而z被分配给nil。 关于ruby-带括号和splat运算符的并行赋值,我们在StackOverflow上找到一个类似的问题: https://stackoverflow

  4. ruby - 定义自定义 Ruby 运算符 - 2

    问题是:除了在“OperatorExpressions”?例如:1%!2 最佳答案 是的,可以创建自定义运算符,但有一些注意事项。Ruby本身并不直接支持它,但是superatorsgem做了一个巧妙的把戏,将运算符链接在一起。这允许您创建自己的运算符,但有一些限制:$geminstallsuperators19然后:require'superators19'classArraysuperator"%~"do|operand|"#{self}percent-tilde#{operand}"endendputs[1]%~[2]#Out

  5. ruby - Ruby 中 <=> 运算符的名称是什么?他们怎么调用它? - 2

    在Ruby中有运算符(operator)。在API中,他们没有命名它的名字,只是:Theclassmustdefinetheoperator...Comparableusestoimplementtheconventionalcomparison......theobjectsinthecollectionmustalsoimplementameaningfuloperator...它叫什么名字? 最佳答案 参见上面的@Tony。然而,它也被称为(俚语)“宇宙飞船运算符(operator)”。

  6. ruby - 将运算符传递给函数? - 2

    也许这听起来很荒谬,但我想知道这对Ruby是否可行?基本上我有一个功能...defadda,bc=a+breturncend我希望能够将“+”或其他运算符(例如“-”)传递给函数,这样它就类似于...defsuma,b,operatorc=aoperatorbreturncend这可能吗? 最佳答案 两种可能性:以方法/算子名作为符号:defsuma,b,operatora.send(operator,b)endsum42,23,:+或者更通用的解决方案:采取一个block:defsuma,byielda,bendsum42,23,

  7. ruby - OR 运算符和 Ruby where 子句 - 2

    可能真的很简单,但我很难在网上找到关于这个的文档我在Ruby中有两个activerecord查询,我想通过OR运算符连接在一起@pro=Project.where(:manager_user_id=>current_user.id)@proa=Project.where(:account_manager=>current_user.id)我是ruby​​的新手,但我自己尝试使用||@pro=Project.where(:manager_user_id=>current_user.id||:account_manager=>current_user.id)这没有用,所以1.我想知道如何在

  8. ruby - Ruby 中字符串运算符 + 和 << 的区别 - 2

    我是Ruby和这个网站的新手。下面两个函数是不同的,一个在函数外修改变量,一个不修改。defm1(x)x我想确保我理解正确-当调用m1时,对str的引用被复制并传递给将其视为x的函数。运算符当调用m2时,对str的引用被复制并传递给将其视为x的函数。运算符+创建一个新字符串,赋值x=x+"4"只是将x重定向到新字符串,而原始str变量保持不变。对吧?谢谢 最佳答案 String#+::str+other_str→new_strConcatenation—ReturnsanewStringcontainingother_strconc

  9. ruby - 我可以在 Ruby 中动态调用数学运算符吗? - 2

    ruby中有这样的东西吗?send(+,1,2)我想让这段代码看起来不那么冗余ifop=="+"returnarg1+arg2elsifop=="-"returnarg1-arg2elsifop=="*"returnarg1*arg2elsifop=="/"returnarg1/arg2 最佳答案 是的,只需像这样使用send(或者更好的是public_send):arg1.public_send(op,arg2)这是可行的,因为Ruby中的大多数运算符(包括+、-、*、/、andmore)只需调用方法。所以1+2与1.+(2)相同

  10. ruby - 如何在不使用文本的情况下找到 Ruby 运算符的含义? - 2

    您如何找到有关代码中运算符用法的信息(最好是通过Google)?在这种情况下,我想找到这段代码在Ruby中的含义。x=[1,2,3]x.send:[]=,0,2x[0]+x.[](1)+x.send(:[],2)我要你教我如何钓鱼——不要告诉我运算符(operator)是做什么的。当我去Google并尝试搜索符号时,我得到的示例或教程没有涵盖特定的用法。https://stackoverflow.com/questions/1165786/how-to-search-for-punctuation-that-gets-ignored-by-google表示谷歌驳回了这种表示法;我寻找“

随机推荐