Python学习笔记 第1章 基础知识
1.1 使用pip工具管理扩展库
- 列出已安装模块和版本号,使用重定向符>把信息保存到xxx.txt 文件
# pip freeze [> 保存文件名.txt]
pip freeze [> xxx.txt]
# 列出已安装的所有包
pip list
- 在线安装xxx模块,使用,可指定版本号
# pip install 模块名[==版本号]
pip install xxx[==version]
- whl文件离线安装扩展库,python扩展库的后缀是.whl
# pip install 模块名.whl //事先要把模块放到对应的scripts文件夹中
pip install D:xxx.whl
- 读取某文件中的扩展库信息,并依次安装他们
#pip install -r 包含扩展库信息的文本.txt
pip install -r xxx.txt
- 升级xxx模块
#pip install --upgrade 模块名
pip install xxx
# 批量升级库,先安装pip-review,在升级
pip install pip-review
pip-review --local --interactive
- 升级pip工具
python -m pip install --upgrade pip
- 查询所有过期库
pip list --outdated
- 更换国内安装源的在线安装方法
# 零时安装 pip install 模块名 -i 源地址 --trusted-host 主机地址
# --trusted-host 主机地址是为了防止出现不信任源
pip install jieba -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com
# 长期更换源地址
# 直接在user目录中创建一个pip目录,如:C:\Users\xx\pip
# 新建文件 pip.ini
# 内容为
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com
disable-pip-version-check = true
timeout = 120
# http://mirrors.aliyun.com/pypi/simple/ //阿里
# https://pypi.tuna.tsinghua.edu.cn/simple/ //清华
# http://pypi.douban.com/ //豆瓣
# http://pypi.hustunique.com/ //华中理工大学
# http://pypi.sdutlinux.org/ //山东理工大学
# http://pypi.mirrors.ustc.edu.cn/ //中国科学技术大学
- 如果遇到安装时无法访问,可在pip命令后边加上 --user
pip install jieba --user
- 查看python版本
python -V
1.2 python环境搭建
- 可以参考这篇文章利用VsCode搭建Python运行环境
1.3.1 Python的基本常识
- python内置对象查看
dir(__builtins__)
- 对象类型
对象类型 | 类型名称 | 示例 | 简要说明 |
---|---|---|---|
数字 | int, float, complex | 1234, 3.14, 1.3e5, 3+4j | 数字大小没有限制,内置支持复数及其运算 |
字符串 | str | ‘swfu’, “I’m student”, ‘’‘Python ‘’’, r’abc’, R’bcd’ | 不可变,使用单引号、双引号、三引号作为定界符,以字母r或R引导的表示原始字符串 |
字节串 | bytes | b’hello world’ | 以字母b引导,可以使用单引号、双引号、三引号作为定界符 |
列表 | list | [1, 2, 3],[‘a’, ‘b’, [‘c’, 2]] | 所有元素放在一对方括号中,元素之间使用逗号分隔,其中的元素可以是任意类型 |
字典 | dict | {1:‘food’ ,2:‘taste’, 3:‘import’} | 所有元素放在一对大括号中,元素之间使用逗号分隔,元素形式为“键:值” |
元组 | tuple | (2, -5, 6), (3,) | 不可变,所有元素放在一对圆括号中,元素之间使用逗号分隔,如果元组中只有一个元素的话,后面的逗号不能省略 |
集合 | set, frozenset | {‘a’, ‘b’, ‘c’} | 所有元素放在一对大括号中,元素之间使用逗号分隔,元素不允许重复;另外,set是可变的,而frozenset是不可变的 |
布尔型 | bool | True、False | 逻辑值,关系运算符、成员测试运算符、同一性测试运算符组成的表达式的值一般为True或False |
空类型 | NoneType | None | 空值 |
异常 | Exception、ValueError、TypeError | Python内置大量异常类,分别对应不同类型的异常 | |
文件 | f = open(‘data.dat’, ‘rb’) | open是Python内置函数,使用指定的模式打开文件,返回文件对象 | |
其他可迭代对象 | 生成器对象、range对象、zip对象、enumerate对象、map对象、filter对象等等 | 具有惰性求值的特点,除range对象之外,其他对象中的元素只能看一次 | |
编程单元 | 函数(使用def定义、类(使用class定义)、模块(类型为module) | 类和函数都属于可调用对象,模块用来集中存放函数、类、常量或其他对象 |
1.3.2 Python变量
- Python属于强类型编程语言,Python解释器会根据赋值或运算来自动推断变量类型。Python还是一种动态类型语言,变量的类型也是可以随时变化的。
- 如果变量出现在赋值运算符或复合赋值运算符(例如+=、*=等等)的左边则表示创建变量或修改变量的值,否则表示引用该变量的值。
>>> x = 3 #创建整型变量
>>> print(x**2)
9
>>> x += 6 #修改变量值
>>> print(x) #读取变量值并输出显示
9
>>> x = [1,2,3] #创建列表对象
>>> x[1] = 5 #修改列表元素值
>>> print(x) #输出显示整个列表
[1, 5, 3]
>>> print(x[2]) #输出显示列表指定元素
3
- 字符串、元组属于不可变序列,(不能通过下标的方式来修改其中的元素值,试图修改元组中元素的值时会抛出异常)
- 有序序列有:列表、元组、字符串
- 无序序列有:字典、集合
- 可变序列有:列表、字典、集合
- 不可变序列有:字符串、元组
- Python采用基于值的内存管理方式,如果为不同变量赋值为相同值,这个值在内存中只保存一份,多个变量指向同一个值的内存空间首地址,这样可以减少内存空间的占用,提高内存利用率。
>>> x = 3
>>> id(x) # 获取x的地址
1786684560
>>> y = x # x的值赋给y
>>> id(y) # 获取x的地址
1786684560
# x和y指向同一个内存地址
- Python启动时,会对**[-5, 256]区间的整数**进行缓存。也就是说,如果多个变量的值相等且介于[-5, 256]区间内,那么这些变量共用同一个值的内存空间。对于区间[-5, 256]区间之外的整数,同一个程序中或交互模式下同一个语句中的同值不同名变量会共用同一个内存空间,不同程序或交互模式下不同语句不遵守这个约定。
>>> x = -6
>>> y = -6
>>> id(x)==id(y)
False # 范围超过【-5,256】且没有在同一语句
>>> x = -5
>>> y = -5
>>> id(x) == id(y)
True # 在【-5,256】之间,虽然没在同一语句,依旧共用
>>> x = 255
>>> y = 255
>>> id(x) == id(y)
True # 在【-5,256】之间,虽然没在同一语句,依旧共用
>>> x = 256
>>> y = 256
>>> id(x) == id(y)
True # 在【-5,256】之间,虽然没在同一语句,依旧共用
>>> x = 257
>>> y = 257
>>> id(x) == id(y)
False # 范围超过【-5,256】且没有在同一语句
>>> x = 3.0
>>> y = 3.0
>>> id(x) == id(y) # 在【-5,256】之间,但是浮点数,不是整数
False
>>> x, y = 300000, 300000
>>> id(x) == id(y)
True # 范围超过【-5,256】但是在同一语句
>>> x = [666666, 666666]
>>> y = (666666, 666666)
>>> id(x[0]) == id(x[1])
True # 范围超过【-5,256】但是在同一语句
>>> id(y[0]) == id(y[1])
True # 范围超过【-5,256】但是在同一语句
>>> id(x[0]) == id(y[0])
False # 范围超过【-5,256】且没有在同一语句
- Python不会对实数进行缓存,交互模式(不在同一语句)下同值不同名的变量不共用同一个内存空间,同一个程序中的同值不同名变量会共用同一个内存空间。
x = 30000000000
y = 30000000000
print(id(x)==id(y)) # True 同一文件内,相同的数都会共用内存地址
x = 3.4
y = 3.4
print(id(x)==id(y)) # True 同一文件内,相同的数都会共用内存地址
- 赋值语句的执行过程是:首先把等号右侧表达式的值计算出来,然后在内存中寻找一个位置把值存放进去,最后创建变量并指向这个内存地址。Python中的变量并不直接存储值,而是存储了值的内存地址或者引用,这也是变量类型随时可以改变的原因。
- Python具有自动管理内存的功能,会跟踪所有的值,并自动删除不再使用或者引用次数为0的值。如果确定某个变量不再使用,可以使用del(对象名)命令显式删除该变量,值的引用次数减1,当某个值的引用次数变为0时,将会被Python的垃圾回收机制自动删除并释放内存空间。
>>> import sys # 引入sys模块
>>> sys.getrefcount(2) # sys.getrefcount(对象) 查看引用次数
77
>>> x = 2 # x指向2
>>> sys.getrefcount(2) # 再查看2的引用次数加一
78
>>> del(x) # x不再指向2
>>> sys.getrefcount(2) # 查看2的引用次数减一
77
>>> x # 再通过x已经无法访问到2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
-
python 变量名命名规则
-
变量名必须以字母、汉字或下划线开头,但以下划线开头的变量在Python中有特殊含义;说明如下:
- 单前导下划线_
-