声明
- 笔记中所用操作系统:Ubuntu(Linux)
- 文章是本人学习笔记,供自己复习用,知识点并不全面,不适合初学者做为学习资料使用。
- 新手学习,难免有疏漏或错误,感谢指正。
先插入几个琐碎知识点
当导入一个模块时,Python 解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,搜索在 shell 变量 PYTHONPATH 下的每个目录。
3、如果以上路径都找不到,察看默认路径。UNIX下的默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
Python语句中一般以新行作为语句的结束符,在一些程序中,对于较长的语句,用 \ 将其分为多行显示,例如:
total = item_one + \
item_two + \
item_three
但Python的编码规范中其实不建议这样,而是建议用()把多行内容括起来。
遇到了能看懂就行。
语句中包含 [], {} 或 () 括号就不需要使用多行连接符。
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号(,)
#不换行输出
print x,
print y,
#不换行输出
print x,y
这两行代码可以查看Python的保留字
Python 3.7.6 (default, Jan 8 2020, 19:59:22)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import keyword
>>> keyword.kwlist
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
>>>
- 保留字就是在Python中有特殊含义和固定用法的词,用户自己编程的时候给变量、函数啥的起名时,不可以用这些保留字。
- 非要用的话,会有“invalid syntax”的报错
- 保留字区分大小写。比如True是保留字,true就不是。
Python中标识符
- 由字母,数字,下划线组成,第一个字符不能是数字。
- 不能使用Python的保留字
- 严格区分大小写
- 单下划线开头的标识符(如_width)表示不能直接访问的类属性,也不能通过“from xxx import *”导入
- 双下划线开头的标识符(如__add)表示类的私有成员
- 双下划线开头和结尾的是Python里专用的标识,比如__init__()表示构造函数
变量
Python 中的变量赋值不需要类型声明。
每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
等号 = 用来给变量赋值。
Python允许同时为多个变量赋值
也可以为多个对象指定多个变量
a = b = c = 1
a, b, c = 1, 2, "john"
Python中允许多个变量指向同一个值。
>>> no = number = 2048
>>> id(no)
140224977754512
>>> id(number)
140224977754512
>>>
注:
- Python的内置函数 id() 可以返回变量所指的内存地址。
在 Python3.X 版本中 long(长整型) 类型被移除,使用 int 替代。
八进制整数用 0o 或 0O 开头(Python 2.x 中可以用 0 开头)
十六进制整数用 0x 或 0X 开头
- 所以除 0 外的其他整数,不能以 0 开头
复数用 j 或 J 表示虚部
比如 1.23+4.5j
字符串用单引号’ '、双引号" “,或者三引号”"" “”"括起来。
- 使用单引号或双引号,字符串内容必须在同一行
- 使用三引号,字符串内容可以分开多行
- 引号可以嵌套使用
列表用 [ ] 标识,是 python 最通用的复合数据类型
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个元素
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表
元组用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
print tuple # 输出完整元组
print tuple[0] # 输出元组的第一个元素
print tuple[1:3] # 输出第二个至第四个(不包含)的元素
print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
print tinytuple * 2 # 输出元组两次
print tuple + tinytuple # 打印组合的元组
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'}
print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值
算数运算符
- ** 意为求幂 ,例如 10**20 为10的20次方
- // 意为取整除,返回商的整数部分(向下取整)
比如 9//2 返回4,-9//2 返回-5 - % 意为取模,返回除法的余数
PS:Python2.x 中,如果被除数和除数都是整数,相除结果只能得到整数。如果想得到小数结果,需要将其中一个数改成浮点数
位运算符(把数字化为二进制后再进行计算)
- & 按位与
- | 按位或
- ^ 按位异或
- ~ 按位取反
<<
左移(使符号左边的运算数的各二进位全部左移若干位,符号右边的数字指定了移动的位数,高位丢弃,低位补0)>>
右移(使符号左边的运算数的各二进位全部右移若干位,符号右边的数字指定了移动的位数,高位丢弃,低位补0)
逻辑运算符
- and:与,在 x and y 中,如果 x 为 False,返回 False,否则返回 y 的值。
- or:或,在 x or y 中,如果 x 非 0,返回 x 的值,否则返回 y 的值
- no:非,在 not x 中,如果 x 为 True,返回 False ;如果 x 为 False,返回 True
成员运算符
- in:如果在指定的序列中找到值,返回 True,否则返回 False。
- not in:如果在指定的序列中没有找到值,返回 True,否则返回 False。
if ( a in list ):
print "变量 a 在 list 中"
身份运算符
用于比较两个对象的存储单元
- is:判断两个标识符是否引用自同一个对象,如果引用的是同一个对象,返回 True,否则返回 False。例如
x is y
, 类似id(x) == id(y)
, - is not:判断两个标识符是不是引用自不同对象,如果引用的不是同一个对象,返回 True,否则返回 False。例如
x is not y
, 类似id(a) != id(b)
PS:
- id() 函数用于获取对象内存地址
- is 与 == 的区别在于, is 用于判断两个变量引用对象是否为同一个(同一块内存空间), == 用于判断引用变量的值是否相等。
运算符优先级: