Python随记【一】

一些小知识


  • Python的数字可以随意大小

  • 字符串和元组为不可变序列,不能通过下标的方式修改其中的值

  • Python使用基于值的内存管理方式

  • Python具有自动内存管理功能

  • Python赋值语句的执行过程是:首先把等号右侧表达式的值计算出来,然后在内存中寻找一个位置把值存放进去,最后创建变量并指向这个内存地址。Python中的变量并不直接存储值,而是存储了值的内存地址或者引用,这也是变量类型随时可以改变的原因

数字


  • 整数类型可以分为十进制、16进制、8进制、2进制。
    • 十六进制必须以0x开头:0xfa、0x10,
      • x:hexadecimal
    • 8进制0o开头:0o35、0o11
      • o:octal
    • 2进制0b开头:0b101、0b100
      • b:binary
  • 浮点数
    • 如0.37、1.2e2、10.e-5
  • Python支持复数的加减乘除计算
    • c.real查看实部
    • c.imag查看虚部
    • c.conjugate()返回共轭负数
1
2
3
4
5
6
7
8
9
10
11
a=5+2j;
b=6-3j;
c=a+b;
d=a*b;
e=a/b;
print(c);
print(d);
print(e);
结果:(11-1j)
(36-3j)
(0.5333333333333333+0.6j)
  • 3.X版本支持使用单个下划线作为数字分隔符,帮助人们记忆识别。
    • 1_000_000_000

字符串


  • Python中单引号双引号三单引号三双引号可以嵌套来表示复杂字符串

    • 1
      2
      3
      x="""'Let's go'""";
      print(x);
      结果:'Let's go'
    • 注意不能产生歧义嵌套:如三个双引号套一个双引号成四个双引号会出错。

  • 字符串有多种方式合并

    • 1
      2
      3
      4
      5
      6
      7
      x='ly''xf';
      print(x);
      x=x+'lyxf';
      print(x);
      结果为:
      lyxf
      lyxlyxf
    • 建议使用join()函数,+很耗资源

  • 字符串格式化

    • 1
      2
      3
      4
      5
      6
      a='lyxf';
      b=19;
      x="""My %s My age %d"""%(a,b);
      print(x);
      结果:
      My lyxf My age 19
    • 注意百分号%(a,b);

  • 转义字符描述
    \\反斜杠符号
    '单引号
    "双引号
    \a响铃
    \b退格(Backspace)
    \e转义
    \000
    \n换行
    \v纵向制表符
    \t横向制表符
    \r回车
    \f换页
    \oyy八进制数,yy代表的字符,例如:\o12代表换行
    \xyy十六进制数,yy代表的字符,例如:\x0a代表换行
    \other其它的字符以普通格式输出
  • 操作符描述实例a=’Hello’
    +字符串连接>>>a + b ‘HelloPython’
    *重复输出字符串(还可以用于列表元组等>>>a * 2 ‘HelloHello’
    []通过索引获取字符串中字符>>>a[1] ‘e’
    [ : ]截取字符串中的一部分(实际输出为前闭后开的区间)>>> a[1:4] ‘ell’
    in成员运算符 - 如果字符串中包含给定的字符返回 True>>>”H” in a True
    not in成员运算符 - 如果字符串中不包含给定的字符返回 True>>>”M” not in a True
    r/R原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符。 原始字符串除在字符串的第一个引号前加上字母”r”(可以大小写)以外,与普通字符串有着几乎完全相同的语法。注意最后一个字符不能为\>>>print r’\n’ \n >>> print R’\n’ \n

运算符


  • **返回x 的y次幂

    • 1
      a**b 为10的21次方
  • //取整除 - 向下取接近除数的整数

1
2
3
4
>>> 9//2
4
>>> -9//2
-5
  • %求余,结果与右侧的运算数符号一致

    • 1
      -17%4=3;17%-4=-3;
  • Python中1<3<5是允许的

  • <还可以用于比较字符串、列表、集合测试是否为子集

  • 成员运算符in如果在指定的序列(字符串、列表、元组)中找到值返回 True,否则返回 False。

    • not in同理
  • 位运算符:按位运算符是把数字看作二进制来进行计算的。(假设a=60)位运算符还可以用来进行集合运算

    • &按位与、求交集
    • |按位或、求并集
    • ^按位异或、求对称差集差集用-来求
    • Python 3.5之后有@用来矩阵相乘
    • ~按位取反、
    • <<运算数的各二进位全部左移若干位,a << 2 输出结果 240 ,二进制解释: 1111 0000
    • >>把”>>”运算数的各二进位全部右移若干位a >> 2 输出结果 15 ,二进制解释: 0000 1111
  • 逻辑运算符(惰性求值、只计算必须计算的表达式):

    • and
    • or
    • not
  • python不支持++--运算!!!。哪怕有时候可以执行也是另有含义

常用内置函数


  • 查看变量类型—–print(type(x));

  • 整数转化位二进制—–bin()

    • 1
      bin(3)=0b11
  • 整数转化位八进制—–oct()

    • 1
      oct(9)=0o11
  • 整数转化位十六进制—–hex()

    • 1
      0x11
  • 实数转化为整数—–int()

    • 1
      int(3.5)=3
  • 把数字字符串按照指定进制转化位10进制—-int()

    • 1
      2
      int('101',16)=257
      int('x2',36)=1190
  • 比较函数max()、min(),可添加比较规则key

    • 1
      2
      3
      4
      X=['21','1234','9']
      max(x)='9';
      max(x,key=len)='1234';
      max(x,key=int)='1234';
  • 使用del()删除对象。

    • del无法删除元组或者字符串中的元素只能删除整个元组或者字符串,因为两者均为不可变序列。

      1
      2
      x=(1,2,3);
      del x;
  • 读取用户键盘输入:str=input()。返回结果为一个字符串。需要其他类型需要转换为相应类型使用。

  • 基本输入输出:print()

  • zip() zip() 函数用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象。https://www.cnblogs.com/wushuaishuai/p/7766470.html

模块的导入和使用


  • import 模块名 [as 别名]

    1
    2
    3
    4
    5
    import math
    print(math.sin(0.5))
    或者
    import math as sx
    print(sx.sin(0.5))
  • 直接引入某个模块中的函数使用。

    from 模块名 import 对象名 [as 别名]

    1
    2
    3
    4
    5
    from math import sin
    print(sin(0.5))
    或者
    from math import sin as zx
    print(zx(0.5))

    from 模块名 import*可以导入全部改模块全部函数直接使用,但是大量占用内存不推荐。

  • 每个import语句只导入一个模块,最好按照标准库、扩展库、自定义库的先后顺序导入。因为后面导入有可能会覆盖前面的导入。

Python代码规范


  1. 缩进

    • 类定义、函数定义、循环结构、with块,行尾的冒号表示缩进的开始。

    • python使用缩进来表示代码块

    • 同一个级别的代码块的缩进量必须相同

    • 一般而言以四个空格(一个Tab)为基本缩进单位

      1
      2
      3
      4
      5
      6
      if True:
      print ("Answer")
      print ("True")
      else:
      print ("Answer")
      print ("False") # 缩进不一致,会导致运行错误
    • 如果一行太长可以在行尾加上续行符\来换行分成多行,也可以使用大括号包含多行内容

      1
      2
      3
      4
      x=1+2+3\
      +4+5\
      +6
      print(x);
  1. 注释

    • 以#开始,表示本行#之后的内容为注释
    • 一对三单引号或者一对三双引号之间的且不属于任何语句的内容将被解释器认为是注释
  2. 必要的空格与空行更加美观

    • 运算符两侧、逗号后面建议增加一个空格。
    • 不同代码块之间、不同的函数定义之间增加一个空行。

序列


1.关于各类生成式,我的理解是左面是组成该类数据结构的元素,右面的for或者if等是对该元素的“生成方式2.简单理解可哈希=不可变3.列表、元组、字符串支持双向索引,第一个元素下标为0,第二个元素下标为1,以此类推;最后一个元素下标为-1,倒数第二个元素下标为-2,以此类推”

可变:列表、字典、集合,其他不可变

无序:字典、集合,其他有序

1.列表(list)

2.元组(tuple)

Python3序列赋值、序列解包详解(上)

Python3序列赋值、序列解包详解(下)

生成器、迭代器、推导式——思维导图

什么是Python中的生成器推导式?—列表推导式、字典推导式、集合推导式和生成器表达式,这四个表达式各自之间有着许多相似之处。如果将四者之间的类似点总结为“推导式”,将极大地简化相关概念。它们之间的相似点远大于不同之处,

生成器解释

3.字典(dict)

字典内置函数&方法

globals()返回包含当前作用域内所有全局变量和值的字典

locals()返回包含当前作用域内所有局部变量和值的字典

4.集合(set)

集合内置函数

创建空集合为set=set()创建空字典为dict={}

-----------------------本文结束 感谢阅读-----------------------
坚持原创技术分享,您的支持将鼓励我继续创作!恰饭^.^~