python语言语法与环境
在anaconda中用 pip list可以查看所有安装过的工具包,用python可以进入编辑且运行python代码的状态,用exit()可退出此状态。
下载时换源:
删除:
终止下载或卸载:
ctrl+c
anaconda是一个关于python的发行版本。
pycharm是一个只为python而生的IDE(integrated development environment)。
dictionary字典有一个赋值陷阱:如果将元组A赋值给元组B,若B被更改,A也将被更改(B相当于是A的另一个名字),应使用deepcopy
tuple元组不可赋值
list,tuple都是有序的,可以用索引表示的 dictionary和set都是无序的,没有索引
python中的:逻辑与 and 逻辑或 or 逻辑非 not
如何对anaconda进行换源:
在cmd 命令行中,输入添加以下命令:
恢复默认源:
查看源:
如果出现了问题,就先恢复默认,再换国内源。
如何在anaconda中创建新环境:(在cmd中打开)
解决jupyter不能自动打开浏览器问题:
点击Jupyter Notebook没有反应,不会自动打开浏览器_哔哩哔哩_bilibili
安装anaconda:
Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
先在官网下载看看版本是什么,然后在这个链接找到对应的正确链接。
安装过程怎么选择:点击Jupyter Notebook没有反应,不会自动打开浏览器_哔哩哔哩_bilibili
python常见语法错误:
syntaxerror语法错误,syntax指语法
之后list1和list2指向的是同一块区域,一者变则另一者也变,要想消除这种危险,只要list2=listq.copy()
indentationerror缩进错误,indentation指缩进
程序执行原理:
CPU负责计算(一块集成电路),内存负责临时储存(4G/8G/16G/32G),硬盘负责永久储存(磁头在磁盘上转转转)
程序保存在硬盘中,运行时放在内存中供CPU调用
python程序要执行,就先将解释器放入内存,再将硬盘中的python程序翻译成机器语言,再执行(解释器在内存中就3MB左右)
python常见语法补充:
即可格式化输出sadd
命名:first_name FirstName
这样输出123不换行,end后的内容是对换行的替代
for循环:只有当for没有在break中退出,for循环全部执行了一遍时才会执行else
pycharm使用技巧:
选中多行以后tab可以多行缩进,tab+shift可以取消缩进
调试时步入step into进入一个函数,一行行执行
步过step over不会让你看到函数执行的具体过程,直接跳到下一行代码
在函数定义的函数名上左键单击一下,稍等片刻,会出现一个小灯泡,在小灯泡中选择“插入docstring存根”,即可为你的函数加上非常专业的注释;
当你在调用函数时单击函数名,然后ctrl+q,即可看到此注释,可以用来装X
PYTHON之模块
其实就是一个个工具包啦,.py文件也可以作为模块,其中的全局变量和函数都可以被别的文件调用,调用时还可以用ctrl+q查看你写的docsrting存根,是不是非常神奇呢?
模块名也是标识符,不能以数字开头,否则就没法调用
python是一种解释性语言,import一个包以后一行一行解释未免太慢,所以系统会在import以后自动把这个包编译成一个二进制文件,也就是pyc文件,c表示complied已编译。这样可以大大提高运行程序的速度。
python高级变量(字典,元组,列表,字符串)之公共方法:
内置函数:(对字典,max和min只对key比较)
切片:
运算符:
列表追加:
python之变量
变量名和变量数据是分开储存在内存中的。用一个变量名把数据记录下来的行为叫做引用。变量数据储存在一个小盒子,变量名就是一张便签;用id()函数可以查看地址
一个很奇怪的地方,运行以下代码,明明函数传参传递的是地址,但在函数中做的修改却并不作数:
原因:在test函数中num改名为1时,实际上是新开了一个小盒子,小盒子里装着1,只不过装着1和装着2的小盒子同名而已(验证如下),效果看起来和C语言,C++一样,离开函数后局部变量就被回收
如何在函数中修改全局变量呢?用global声明一下即可(用global声明时就不要再用num做函数的参数了)(全局变量前面可以加上g_来将之与其他变量区分)
总而言之,通过赋值对参数进行修改,原参数不变(除非声明过了是全局变量);但如果参数是字典,列表这样的可变数据,且在函数内用append,extend等方法进行修改的话,那么原参数是会改变的(注:列表+=的本质是append,也可以修改参数)
小技巧:如何一次性修改一个变量名在多处的使用-->选中后鼠标右键单击,然后重构,然后重命名
可变类型与不可变类型:(用id函数可以验证)
不可变:数字,字符串,元组-->一旦数据内存确定了,数据就无法再改变;对变量名赋值的本质是新开一个小盒子
可变:列表,字典-->数据内存确定了,数据还可以改变;
字典的key只能是不可变类型:
本质原因:key是通过hash()函数将一个数据映射到另一个数据的,hash()接受的值只能是不可变的string,int,bool,long,float,double,tuple,不能是可变的list,dictionary
python之函数:
返回值可以不止一个
这么返回的实际上是一个元组
接收方式有两种:
巧妙交换两个数字:
缺省参数(对应西佳佳中的默认参数):
默认参数要在多个参数的最末尾
如果要调用多个默认参数,记得加上参数名
多指参数:参数个数不确定时
args表示arguments,记录一个元组;kw表示keyword,记录一个字典
python之面向对象--封装:
将方法封装起来,将含有方法的对象也封装起来便于开发。
类是对象的抽象,对象是类的具体;类是图纸,对象是飞机。
如何查看一个对象的属性:dir函数
来从一只小猫的身上具体了解了解吧
python之面向对象--继承:
想让子类dog拥有父类animal的方法和属性,只需要在创建类时:
父类等于基类,子类等于派生类,子从父继承等于派生类从基类派生
如果父类的方法f()不满足子类对f()方法的需求,1.那就在子类中将该方法重写;2.在重写def f(self)中先写上子类的特有方法,再用super().f()调用父类的方法,这样子类就既有新的方法,又有老的方法
super是python的一个类,super()就是将其实例化
这也是一种处理方法,但不建议使用(语法特殊,知道就行,省得看不懂别人写什么)
子类不能访问到父类的私有内容,但可以通过访问父类的公有方法去访问父类的私有方法(具体做法:直接在父类中开一个访问私有内容的共有方法,用子类调用之)
python之多继承:
一个子类可以有多个父类
有时多个父类的属性或者方法会有重复,此时应当尽量避免使用这个重复内容,如果实在不能避免,可以通过__mro__来查看子类对父类的调用顺序
object是python3为所有类内置的一个基类,其中的属性可以通过dir函数进行查看。以object为基类的类是新式类,反之则是经典类,python3中的类自动以object为基类,也即全是新式类。是否新式类会影响到多继承时搜索方法的顺序,建议全部使用新式类。
python之类的扩展:
python之中一切皆对象,类也是一种对象
对象的调用方法:
类的调用方法:
类的属性:
示例:
实际上,根据python的向上查找机制,通过对象也可以访问类的属性。但此处有一个陷阱:以赋值的方式从对象修改类的属性,会在对象中新开一个属性,并不对类的属性操作,并不向上搜索,类的属性并不发生改变。
综上,访问类的属性最好通过类而不是通过对象。通过对象也可以访问,但在通过对象修改时会有陷阱。
类的方法:
如果一个方法不需要调用类/对象的属性/方法,那就叫它静态方法
总结:如果一个方法要访问类属性,那就定义为类方法;如果要访问实例属性,那就定义成示实例方法;如果不访问属性,那就定义成静态方法;如果既要访问类属性,又要访问实例属性,那就定义为实例方法(经过以下测试,使用类方法也可以。但在逻辑上,使用实例方法给人的感觉更加丝滑,因为类属性只有一个,示例可以有很多)
python之单例设计模式:
设计模式:代码复用,使用前人代码
单例:确保类()返回的对象只有一个,内存中永远只有一个对象。比如音乐播放器的音乐,回收站操作的文件等等。
在示例化一个类时,系统会做好两件事:1.通过__new__分配空间2.通过__init__初始化。
掌握了__new__方法,我们就可以确保每次实例化的对象都在同一个地址。

单例设计模式代码实现:

想办法让__init__只进行一次:

python之异常:

完整语法

异常具有传递性,一个函数或者方法出了错,就会把错误抛给函数或者方法的调用者。
项目开发中会遇到许多异常,不必在函数中处处费心思处理异常,只要在主函数中处理即可一劳永逸。
主动抛出异常:

python之模块:
导入模块可以起别名(起了别名之后原名就用不了了)
可以部分导入模块
有这样一种情况:从两个模块导入的函数同名。这是后一个会覆盖前一个。处理方法:给其中一个起别名,这样就可以避免这种情况。
方便的导入方式(为什么不用import?因那样用函数还要先敲模块名,这样不用)(不推荐使用,因为模块的函数重名的话没法排查错误):
模块的搜索顺序:现在当前目录下搜索,搜不到的话再去系统目录搜索(不要让自定义的模块名和系统的模块名重名了)
模块的路径可以用__file__查看:
一个问题:在导入一个包时,被导入的包中所有没有缩进的代码都会执行一遍。但有时这些代码并不需要被执行。
解决方法:
__name__是python内置的一个包,其中储存着一个字符串,在执行自身时,__name__的内容是__main__;在被调用时,其内容是模块名
python之包:
一个目录,其中是封装好的库,此外还有一个__init__文件,这个文件储存对外提供的库的列表。
这就叫包。
pycharm建包:右键-新建-python软件包。
numpy库:
n-dimension-array多维数组
__EOF__

本文链接:https://www.cnblogs.com/-ark/p/16555830.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!