写点什么

这篇 python 文章,是过去你错过的 python 细节知识点,滚雪球第 4 季第 15 篇

发布于: 6 小时前

本文继续查漏补缺,python 语言涉及运算符以及其优先级

python 运算表达式清单

以下运算表达式按照从上到下,优先级依次降低。


  • {}[]():其中大括号 {} 用在字典与集合相关知识中,中括号 [] 用在列表以及列表生成器,小括号 () 用在元组以及生成器表达式中;

  • 类.属性:点号 . 运算符;

  • 函数(参数)方法(参数)类(参数):三者优先级基本一致;

  • 列表[i:j:k]:切片运算;

  • 列表[i]:索引运算;

  • num**x:幂运算符;

  • ~num:位反运算符;

  • -num+num:一元运算符;

  • num1/num2num1//num2:除与整除运算符;

  • num1*num2num1%num2:乘法/重复运算符,求余数/格式化运算符;

  • num1+num2num1-num2:加法/连接运算符,减法/差集运算符;

  • num<<1num>>2:左移,右移运算符;

  • num1&num2:按位与运算符,交集运算符;

  • num1^num2:按位异或运算符,对称差集运算符;

  • num1|num2:按位或运算符,集合并集运算符;

  • num1==num2num1!=num2:相等与不相等;

  • <><=>=:比较运算符;

  • obj is objectobj is not object:同一性运算符;

  • a in my_lista not in my_list:成员测试运算符;

  • notorand:逻辑非,逻辑或,逻辑与;

  • num1 if num2 else num3:条件表达式;

  • lambda:匿名函数表达式;

  • yield:生成器表达式。

python 内置数据类型

在 python 中,已经内置好一些常用的数据类型,这些在滚雪球第一季已经系统学习,此处在进行一些遗漏知识点的补充,重点在数值类型与字符串类型。数值类型数值就是数字,这里仅补充一点作为学习,为了让数字在 python 代码中阅读方便,整数和浮点数都可以添加多个 0 或者下划线,例如下述代码。


num = 100_000f_num = 000.005
print(num)print(f_num)
复制代码


一般每隔 3 位添加一个下划线。


整型和浮点型对象有一些专属的类型方法和属性


as_integer_ratio:返回一个整型比率


a = (10.0).as_integer_ratio()b = (0.0).as_integer_ratio()c = (-.25).as_integer_ratio()print(a)print(b)print(c)
复制代码


is_integer:如果浮点为整数,则返回 True


a = (10.0).is_integer()  # True
c = (-.25).is_integer() # Falseprint(a)print(c)
复制代码


整型也存在一些属性或者方法


a = (2).numerator  # 分子b = (2).denominator  # 分母print(a, b)
c = (127).bit_length() # bit 位数print(c)
复制代码


整型或者浮点型存在属性与方法,也间接证明了它们就是对象。


小数和分数在 python 中有专属模块


from decimal import Decimal# 通过对象计算df1 = Decimal('0.5')df2 = Decimal(5)df3 = Decimal(0.3)
print(df1)print(df2)print(df3)
复制代码


可以给 Decimal 对象整型或者字符串类型的参数,但不能是浮点数据,因为浮点数据在计算机中不准确。如果希望转换浮点数,使用下述代码:


df4 = Decimal.from_float(10.4)
复制代码


使用 getcontext() 函数也可以固定精度


from decimal import Decimal, getcontext
getcontext().prec = 3# 通过对象计算df1 = Decimal('1') / Decimal('3')print(df1)
复制代码


可以对浮点数四舍五入:


from decimal import *
df1 = Decimal('20.2333').quantize(Decimal('0.00'))df2 = Decimal('20.2383').quantize(Decimal('0.00'))print(df1) # 20.23print(df2) # 20.24
复制代码


分数模块 fractions,演示代码如下:


from fractions import Fractiona = Fraction(1,2)print(a)
复制代码


字符串类型


邻接的字符串常量,自动连接


my_str = "hello" "world" "橡皮擦"print(my_str)
复制代码


如果邻接的字符串在一个括号中,可以用于实现 python 限制每行代码不超过 79 个字符的约定。


print(("hello"       "world"       "橡皮擦"))
复制代码


在 python 中存在字节(bytes)和字节组(bytearray),你可以使用计算集合差集的代码,查看字节与字节组之间方法和属性的差异。


str_set = set(dir(str))bytes_set = set(dir(bytes))# str 与 bytes 之间的差异print(str_set - bytes_set)# 差异如下:{'isdecimal', 'format', 'isnumeric', 'encode', 'isidentifier', 'casefold', 'isprintable', 'format_map'}
复制代码


使用同样的办法,也可以计算其它类型之间的差异。

python 中的语法细节

python 序列赋值


a, b, c = [1, 2, 3]print(a, b, c)
复制代码


序列赋值要求左侧的变量数量与右侧序列长度一致。


扩展序列赋值


a, *b, c = [1, 2, 3, 4, 5, 6, 7]print(a, b, c)
复制代码


使用 * 可以收集序列中未被匹配的元素。


python 中的语法


  • 控制流:默认 python 代码自上至下运行,当出现分支代码时改变运行顺序;

  • :相同的代码块具有相同的缩进;

  • 语句:python 中的一行代码就是一条语句,有的一条语句存在折行;


语句和表达式是 python 编码中,经常提及的两个概念,比较难区分。一般任何一个表达式都能以语句形式出现,但是语句不能出现在任何表达式中,由此可以知道语句的范围要大。


一般会把语句看成是由表达式组成一行代码,而表达式只由运算符和操作对象组成。


发布于: 6 小时前阅读数: 10
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
这篇 python 文章,是过去你错过的 python 细节知识点,滚雪球第4季第15篇