常量与变量

  • 变量不需要声明类型
  • python用$=$给变量赋值,用$==$比较两个值是否相等,相等返回True,不等返回False。
  • 变量使用前必须赋值(不同于C),变量只有赋值后才会被创建。
    • 变量未定义异常
      >>> age
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      NameError: name 'age' is not defined

      常量——不变的变量
      python没有任何机制保证变量不会改变对象,被改变时没有报错,没有C的const,所以使用时需要万分小心

赋值方式

赋值运算符$=$为==右结合性==

  • 单个赋值

    • age = 18
  • 批量赋值

    • a = b = c = 1
      • 这在C/C++中想都不敢想:(
  • 先计算再赋值

    • age = 17+1
  • 分别赋值

    • a,b,c=1,2,3
      • a == 1,b == 2,c == 3

    当我们写:a = "Jack" 时,Python解释器干了两件事情:
    在内存中创建了一个'Jack'的字符串对象(常量);
    在内存中创建了一个名为a的变量,并把它指向 'Jack'。
    而当你把一个变量a赋值给另一个变量b,这个操作实际上是==将变量b指向变量a所指向的数据==,例如下面的代码:

    >>> a = "Jack"
    >>> a
    'Jack'
    >>> b = a
    >>> b
    'Jack'
    >>> id(a)
    4332916664
    >>> id(b)
    4332916664

    id()函数用于查看变量内存地址
    [[基础函数#id()]]

  • 若把另一个变量赋给a,则id(a)改变而id(b)不变

    >>>a = "Ross"
    >>>a
    'Ross'
    >>>id(a)
    另一个数(不同于4332916664)

    变量与对象

    Python中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是对象。而变量是对象的一个引用(也可以称为标签或者名字),对象的操作都是通过引用来完成的。

例如

>>>a = 1
  • 其中,数字1是对象,a是变量(变量名)
  • 赋值操作$=$是将一个名字绑定到一个对象上(给对象1加上标签a)。
  • 显然,对象可以绑定多个标签(变量)。但是一个变量只能绑定一个对象。
  • 变量本身没有类型,类型储存于对象中由对象类型决定
    • 所以python不需要提前声明变量类型,会自动判断对象数据类型,这点与C/C++区别极大

字符串

  1. python中不对单字符和字符串做区分
  2. 可以用单引号$''$或双引号$""$来创建字符串(不能一单一双!)
  3. 三个单引号或三个双引号可以创建多行字符串
    >>>name_1='Jack'
    >>>name_2="Rose"
    >>>sentence_1='''Rose,
    Jack,
    You jump,
    I jump!'''
    >>>sentence_2="""Life is short,
    you need Python."""
    #完美运行!
  • 想要使用引号可以加上转义符"\"
    [[基础函数#字符串函数]]

字符串格式化

%方法

$$print('My\ wife\ is\ \%c,she\ is\ \%d.\ '\%(name,age))$$

  • $\%$后面是一个tuple|dict,用来传递需要格式化的值

  • 占位符种类:
    ![[Pasted image 20230628233506.png]]

    >>>name='布洛妮娅'
    >>>age=18
    >>>print('My wife`s name is %s,she is %d years old.'%(name,age))#按顺序%对应于字符串后面%()中的内容
    My wife`s name is 布洛妮娅,she is 18 years old.
  • 进阶

    • $$\%[数据名称][对齐标志][宽度].[精度][类型]$$
    • 数据名称用于dict赋值,若为数组则不需填写
    • 对齐标志
      • +:显示正负符号
      • -:左对齐
      • space:正整数前加上一个space以和负数对齐
      • 0:正整数前加一个0以和负数对齐
    • 宽度:格式化后字符串长度,不足补0或空格
    • 精度:小数点后位数
    • 数据类型:占位符种类

format

  • 在字符串中,使用$\{ \}$进行占位,然后在字符串后跟上 $.format()$函数,这个函数的参数就是我们要往字符串中填充的变量。
    
    >>>name='琪亚娜'
    >>>age=18
    >>>print('My wife is {},she is {}.'.format(name,age))#按顺序依次填充
    >>>print('My wife is {1},she is {0}.'.format(age,name))
    '''
    可以在{}内使用索引
    其中{}内数字为.format()元组/字典下标
    '''
    >>>print('My wife is {name},she is {age}.'.format(name=name,age=age))#也可以直接用变量名替代(按对象属性映射)
    >>>print('My wife is {name},she is {age}.'.format(name='琪亚娜',age=18))#按关键字映射

list1=['琪亚娜',18]
print("My wife is {0[0]},she is {0[1]}.".format(list1))#通过dict下标映射


- **进阶**
- $$\{:[填充字符][对齐方式][符号标志][\#][宽度][,][.精度][类型]\}$$
- 填充字符:不写默认用space填充
- 对齐方式
- **^**:居中对齐
- $`<$:左对齐
- $`>$:右对齐
- 符号标志
- +:显示正负号
- space:正整数前加上一个space以和负数对齐
- $\#$:表示是否在二进制、八进制、十六进制前显示0b、0o、0x
- 宽度:输出字符串总宽度
- $,$:开启使用千位分隔符
- 精度:小数点后位数
- 类型:占位符类型

f-string

Formatted String Literals(字面量格式化字符串),简称f-string,仅Python3.6支持
在字符串前加上$f$,开启$f-string$,就可以直接在$\{\}$内使用变量

>>>print(f'My wife is {name},she is {age}.')
  • f-string同样支持format格式控制参数
    $$\{变量名:[填充字符][对齐方式][符号标志][\#][宽度][,][.精度][类型]\}$$

⭐切片

  • 可切片对象:字符串,元组,列表
    $$name[a:b:c]$$
  1. 选取区间为$[a,b)$包括a不包括b。不写a默认从0开始,不写b默认到末尾结束。
  2. c为步长,切片间隔,省略不写时默认为1。
    ==当c为负数时,从后往前切片==
    >>>name="polaris"
    >>>print(name[1:3])
    'ol'
    >>>print(name(::-3))
    'sap'
    '''
    'ris'取s,'ola'取a,'p'取p
    '''
    >>>print(name[::-1])
    'siralop'
    #字符串反转
  3. 切片操作不改变原对象,可通过切片赋值创建副本
    >>>x=[2,3,6,2,5]
    >>>y=x[:]
    >>>y.sort()
    >>>print x
    [2,3,6,2,5]
    >>>print y
    [2,2,3,5,6]

整数,浮点数,复数

  1. 整数(Int)

    1. 0x十六进制
    2. 0o八进制
  2. 浮点数(Float)

    1. 小数形式
    2. 科学计数法,10用e代替
      • eg.1.23e-6
  3. 复数(Complex)

    1. 实部+虚部,a+bj
    2. complex(a,b)
    3. a&b均为浮点型
  4. [[基础函数#type()]]

  5. 取模(相除取整数部分)
    $$a//b$$

  6. 取余
    $$a\%b$$

  7. 绝对值

    >>>a=10
    >>>b=3
    >>>a//b
    3
    >>>a%b
    1

布尔值与空值

  • True:真(非0数值,默认1)
  • False:假(=0数值,默认0)
  • None:空值,不是0(整型),不为布尔类型而是NoneType
  1. 注意事项
    • 首字母大写
    • 所有的计算结果,判断表达式调用返回值是True或者False的过程都可以称为布尔运算,例如比较运算。
  2. 以下会转换为假值
    • 0、0.0、-0.0
    • None
    • 空字符串、空列表、空元组、空字典
  3. 以下会转换为真值
    • -1、1或者其他非0数值
    • 所有非空字符串,包括 "False"
    • 所有非空字典、非空列表、非空集合,非空元组
  4. 布尔值可进行四则运算,True == 1,False == 0

布尔运算

  1. 与 $and$
    • 只有所有都为True,and运算的结果才是True
  2. 或 $or$
    • 只要其中有一个为True,or运算结果就是True
  3. 非 $not$
    • 单目运算符,把True变成False,False变成True
      [[基础函数#数值处理函数]]

运算符

Python语言支持以下类型的运算符:

  • 算术运算符
  • 比较(关系)运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 成员运算符
  • 身份运算符
  • 运算符优先级

算术运算符

  • $**$:幂,$x**y$返回x的y次幂
    ==从右往左结合==(右结合性)
    >>>2**2**3
    256
    >>>(2**2)**3
    64
    >>>2**(2**3)
    256
  • $//$:取模,返回商的整数部分
  • 整数与浮点数混合运算时,整数转化为浮点数运算

比较运算符

  • $==$:比较两对象是否相等
    ==python比较运算符可以连用==
    $$a>b==c等价于a>b\ and\ b==c$$

赋值运算符

  • $**=$:幂赋值运算符,$$c**=a等价于c=c**a$$
  • $//=$:取整除赋值运算符,$$c//=a等价于c=c//a$$
  • <<=:左移赋值
    $$a<<=2等价于a=a<<2$$
  • =:右移赋值

  • &=:按位与赋值
    $$a\&=b等价于a=a\&b$$
  • |=:按位或赋值
  • ^=:按位异或赋值

位运算符

  • $\&$:按位与==右结合性==
  • $|$:按位或
  • ^:按位异或
  • ~:按位取反==右结合性==
  • $<<$:左移
  • $>>$:右移

逻辑运算符

  • $and$:布尔与
    • x and y,若x为False,则返回False,否则返回y的计算值
  • $or$:布尔或
    • x or y,x非0返回x的值,否则返回y计算值
  • $not$:布尔非
    • not x,x为True返回False,x为False返回True
    • ==右结合性==
      
      >>>True and True
      True
      >>>True and False
      False
      >>>False and True
      False
      >>>True and 0+3
      3

True or False
True
0 or True
True
0 or 0
0
False or 31
31

not 3
False

成员运算符

  • $in$:x in Y(x为对象或变量名,Y为字符串、字典或元组),在指定序列中找到x则返回True,否则返回False
  • $not\ in$:x not in Y,没找到返回True

身份运算符

  • $is$:判断两个标识符是否引用自同一对象,即本质是否相同
    • x is y,if id(x)\== id(y),return True
  • $is\ not$:if id(x) != id(y),return True

⭐运算符优先级

  1. ():小括号
  2. $[\ ]$:索引运算符
  3. x.attribute:属性访问
  4. $**$:指数运算
  5. ~:按位取反
  6. +@、-@:==一元==加减号(正负号)
    • +@,-@为==右结合性==一元运算符
  7. $*$、/、%、$//$:乘除,取余,取模
  8. +、-:二元加减
  9. <<、>>:位运算左移右移
  10. &:按位与
  11. ^:按位异或
  12. |:按位或
  13. $<,<=,>,>=,==,!=$:比较运算符
  14. =,+=,-=……:赋值运算符
  15. is,is not:身份运算符
  16. in,not in:成员运算符
  17. not:非
  18. and:与
  19. or:或
  20. $,$:逗号运算符
Last modification:November 17, 2023
我很可爱,请给我钱。