Python程序设计基础笔记
目录
第二章:运算符、表达式与内置对象
2.1 Python常用内置对象
见 P10 表2-1 。
为变量赋值的形式为 变量 = 对象类型( ) ,例如 x = str( ) ,这样就为 x 赋类型为字符串的空值。
x = .‘hello’ 或者 x = str(‘hello’) 就为 x 赋值为类型为字符串的值 ‘hello’ 。
这种方法适用于任何内置对象。
2.1.1 常量与变量
变量赋值与类型
常量指不需要改变也不能改变的值,与常量相反,变量的值是可以变化的。
在python中,不需要事先声明变量名及其类型,直接赋值即可创建任意类型的对象变量。
不仅变量的值是可以变化的,变量的类型也是可以随时变化的。
变量与实际值存储位置的关系
python采用基于值的内存管理模式。Python中的变量并不直接存储值,而是存储值的引用,这也是变量类型随时可以改变的原因。(可以将变量看作箭头,实值在未刻意改变存储位置之前,它的引用是不变的,变量只是暂时指向这个位置,当改变变量的值时,指向的位置发生改变,而原来的值和它的引用不变)
变量的定义规则
- 变量名必须以字母或者下划线开头
- 变量名不能含有空格或标点符号
- 不能使用关键字做变量名
- 不建议使用内置模块名、类型名或者函数名以及导入的以上类型做变量名。可用 dir(–builtins–)查看所有内置对象名
- 变量名对大小写敏感,lst 与 Lst 是不同变量
2.1.2 数字
内置数字类型:整数、实数、复数
避免在实数之间进行相等性测试,而是以误差足够小作为相等的依据。
在数字的算数表达式求值时会进行隐式的类型转换,如果存在复数,则都变成复数,如果没有复数但是又实数,则都变成实数,如果都是整数则不会进行转换。
即:复数 > 实数 > 整数
0.4-0.1 ==> 0.30000000000000004
0.4-0.1 == 0.3 ==>False
abs(0.4-0.3) < 1+1e-6 ==>True
#0.4-0.3 的绝对值小于 1 加 10 的 -6 次方
3+4j + 4.2 ==>(7.2+4j)
#类型转换
复数表示形式
x = 3+4j
y = 4+5j
x*y ==>(-8+31j)
abs(x) ==>5.0
x.imag ==>4.0
x.real ==>3.0
x.conjugate() ==>(3-4j) #共轭复数
分数
标准库 fractions 中的 Fraction 对象支持分数运算。
from fractions import Fraction
x = Fraction(3,5)
y = Fraction(6,3)
x.numerator ==>3 #分子
y.denominator ==>1 #分母,创建 y 时自动通分
x/y ==>Fraction(3, 10)
Fraction(3.2) ==>Fraction(3602879701896397, 1125899906842624) #进行实数运算会有误差
Fraction(5.5) ==> Fraction(11, 2)
高精度实数
标准库 decimal 中的 Decimal 类实现了高精度运算。
from decimal import Decimal
Decimal(1/9) ==>Decimal('0.111111111111111104943205418749130330979824066162109375')
type(_) ==>decimal.Decimal
1/9 ==>0.1111111111111111
字符串与字节串
使用单引号、双引号、三单引号、三双引号作为定界符(delimiter)来表示字符串,不同的定界符之间可以嵌套。Python3.x 支持中文,中文和英文一样看作一个字符。`
x = "'hello',Sam said."
print(x)
'hello',Sam said.
x ==>"'hello',Sam said."
x[0] ==>"'"
x = 'good'+'morning'
x ==>'goodmorning'
x = 'good''morning'
x ==>'goodmorning'
x = 'good'
x = x'moring'
File "<ipython-input-35-2da94c40c4b0>", line 1
x = x'moring'
^
SyntaxError: invalid syntax
x = x+'morning'
x ==>'goodmorning'
对字符串使用 encode( ) 方法得到 bytes 字节串,对 bytes 字节串使用 encode( ) 方法并指定编码格式得到 str 字符串。
'hello world'.encode('utf-8') ==> b'hello world'
_.decode('gbk') ==>'hello world'
'你好'.encode('utf-8') ==>b'\xe4\xbd\xa0\xe