基本的语法
- 肯定严格区分大小写之类的
- 一行就是一条语句,每一条语句以换行结束,如果一行想写多条语句,每一条语句要以;隔开
- 一条语句需要多行编写的时候,在一行的末尾以\结束,下一行和这行就是同一条语句
- python是严格缩进的,缩进代表的是代码块
- 在python中#表示注释
- python中使用变量是不需要声明的,直接给变量赋值就行了,而且python是动态类型的语言,可以为变量赋任何类型的值,赋值后又可以修改成任意类型的值
- python的数值分为三种:整数,浮点数,复数
整数int
在python中所有的整数都是int类型的,而且它不像其他语言那样有大小限制的,python的int类型是没有限制的,可以是一个无限大的整数,如果数字的长度过于长,还可以用下划线进行分割,例如a=45_46_45,这里a的值就是454645,编译的时候将_忽略了
浮点数float
复数型:complex,复数是由实数部分和虚数部分构成的数,python中表示为x+yj,j为虚数的单位
python中使用复数类型的注意点:
虚数的单位必须使用j或J表示
虚部不能单独存在
实部和虚部都是浮点数 - python的不同进制的表示
二进制:以0b开头
八进制:以0o开头
十六进制:以0x开头 - print()函数的参数
print(1,2,3,sep="#") 显示1#2#3,sep的作用是设置每个参数之间的分割符,默认是空格
还有一个end参数,end的作用是在末尾输出的内容,默认是换行符\n
- 在IDLE环境就是按ALT+/进行提示补全,Ipython是使用TAB键进行补全
- pip工具的使用,在命令行里面输入
pip list
#可以查看已经安装的python软件包,
输入pip list --outdated
可以查看可以升级的python包
输入pip instal 软件包名
安装python软件包名
输入pip install --upgrade 软件包名
更新软件包
输入pip uninstall 软件包名
卸载软件包名
输入pip show 软件包名
查看软件包的详细信息 - Anaconda开发环境,Anaconda是个集成的开发环境,本身就配置了很多的python包,在Anaconda里面可以使用Anaconda Prompt窗口进行对python安装包进行管理,在Anaconda里面可以使用pip命令,也可以使用conda命令对安装包进行管理
输入conda list
显示当前环境的所有包
输入conda search 软件包名
搜索软件包
输入conda update 软件包名
更新软件包
输入conda remove 软件包
删除软件包名
Anaconda的环境管理
在Anaconda Prompt窗口可以管理虚拟环境,就是可以新建一个不同的环境,比如2.x和3.x的环境
可以使用conda create -n 环境名字 python=3.7 包的名字
创建一个新的环境
使用conda env list
查看python的虚拟环境
使用conda activate 环境名称
切换环境
使用conda deactivate
退出虚拟环境
使用conda remove -n 环境名 --all
或者conda env remove -n 环境名
进行删除环境
Ipython的_符号使用
- | 显示最近的一次输出结果 |
__ | 两个下划线显示最近的第二个输出结果 |
_数字 | 显示指定的数字的输出结果 |
_i数字 | 显示指定数字序号的表达式 |
还有查历史记录的功能
显示历史记录,直接输入history
显示指定序号的历史记录history -n 序号
历史记录里面搜索内容history -g 字符串
自省
IPython中使用?来查看已有的变量或者函数等相关信息
也可以使用函数help(a)或者dir(a)
Ipython的magic命令
IPython将%开头的命令称为magic命令,默认的%可以省略,例如
13. python软件包
qrcode | 用于生成二维码 |
字符串
使用时需要用单引号(’’)或者双引号("")引起来,两者不能混合着用,相同的引号不能嵌套着用
长字符串
使用三个引号来表示长字符串,’’‘或者""",长字符串可以换行,而且还会保留文本中的格式
10. 转义字符
python可以使用(反斜杠)作为转义字符,例如:
\‘表示’
\“表示”
\t表示四个空格,就是一个tab键
\n表示换行
\\表示反斜杠
\uxxxx表示利用Unicode进行编码的,比如在Unicode编码里面,第0048个是H,如果你写a=’\u0048’,a就表示字符H.为什么是四个数字?因为Unicode编码里面用四位`进行编码
10. 格式化字符串(四种方法)
①:两个字符串可以进行加法连接,但是不可以和其他数据类型进行加法运算
②:print(变量1,变量2),这里打印后变量1和变量2也是拼接起来的,而且这里是没有数据类型限制的,两个变量什么类型都行,不同类型也可以
③创建字符串的时候可以指定占位符,例如:
a=‘hello%s’%变量 #这里就是用变量替换了字符串a的%s的占位符
%s #这个表示任意的占位符,在%s的位置可以填充字符串,整数,浮点数等等,
而且这里的占位符还可以做限制,例如%2.3s #这个表示这个占位符最少有两位,如果不足两位就在前面填充空格补完整到两位,如果超过三位就不要后面的
%f #这个是浮点数的占位符,这里的%4.1f 和上面的就有点区别了,4还是不够四位补空格,但是1就是小数点后面保留一位小数
%d #这个是整数的占位符
④格式化字符串,就是可以通过在字符串前面添加一个f来创建一个格式化字符串,在格式化字符串中是可以直接加入变量的,比如a=f’啦啦啦{x1}{x2}’ #这里的x1和x2是一个变量,什么类型都可以
又或者可以这样:%和format
①%格式(py2.x的旧形式)
格式:%[flag] [ width ][.precision]type
flag是对齐方式
- | 左对齐 |
+ | 右对齐,在前面显示加号补齐 |
0 | 右对齐,显示的数字前面用0填充 |
width是字符串的占用长度
precision是指定数值类型保留的小数点位数
type是指定的格式符
%c | 格式化字符 |
%s | 格式化字符串 |
%d | 格式化整数 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数 |
%f | 小数,可指定小数点后面的精度 |
%e | 科学及算法格式表示 |
%g | 根据值的大小决定使用%f还是%e |
②format格式(推荐使用)
格式:"{替换的格式符}".format(参数)
参数:匹配的替换内容
替换格式符的语法:[[fill]align] [sign] [width ] [,] [.precision][type]
fill是设置要填充的字符,默认是空格
align是设置对齐方式,^,<,>分别是居中,左对齐,右对齐
sign设置数值型数据前的符号,+表示在正数前面加正号,-表示正数前不变,空格表示在正数前加空格
width表示字符串占的宽度
,表示为数字添加千位分隔符
precision表示保留的小数位数
type表示格式化类型,type和前面的%格式取值差不多,多了个%,%表示浮点数按照百分比的形式输出
# 第0个数用百分比,第1个数用科学计算法,均保留2位小数
In: '{0:.2%}和{1:.2e}'.format(0.1234, 123456)
Out: '12.34%和1.23e+05'
# 长度为10,保留2位小数,使用","千位分隔符,右对齐,长度不够用“#”填充
In: '{:#>10,.2f}'.format(1234.5678)
Out: '##1,234.57'
- 字符串复制,就是将字符串和一个数字进行乘法运算,这时就会将字符串复制到那个数字的次数
- 布尔值(Boolean,在python里面简写成bool)
一共有两个True和False,
其实bool的数据类型也是属于整形,True相当于1,False相当于0,1+True等于2的 - None(空值),就什么都没
- 类型检查的函数:type() #这个函数传入一个变量,返回这个变量的数据类型
- 对象(object)
python也是面向对象的语言,对象是内存中专门用来存储指定数据的一块区域,它实际就是一个容器,上面的数值,字符串,bool,None都是对象 - 对象的结构:对象里面都会存储这三种数据:id,type,value
id: 就是这个对象的标识,每一个对象都只有一个唯一的id,如果要查看,可以通过id()函数来查看对象的id,这个id是由解释器生成的,一旦创建就永远不可能改变,在cpython中,id就是对象的内存地址
type: python是强类型的语言,对象一旦创建,类型就不能修改
value: 对象中存储的具体数据,可变对象的值可以改变,不可变对象的值不能改变,int ,str,Boolean…的值都是不可以改变的
17. 变量和对象的关系
在变量中不是直接将python的对象直接存储进去,而是存储对象的id,在python中,变量就好像给对象起了一个别名.
如果你执行了a=10 a=b a=20 #这时候b里面存储的值是没有改变的还是10,就是b里面的id没有变,所以python里面的变量是相互独立的,其中一个改变了不会影响其他的
18. 类型转换
不是说python是强类型语言吗?类型怎么还可以转换呢?
其实是这样的,类型转换不是改变这个对象本身的类型,而是创建一个新的需要的类型的对象,然后将当前对象的值赋值给新的对象的值
对于类型转换有四个函数int(),float(),str(),bool()
int() #将其他的对象类型转化成整型
规则:
True—>1 False---->0
浮点数就直接删了小数点后面的东西,直接取整
字符串,将合法的整数字符串转化成对于数字,不合法报错ValueError
其他的和int()差不多,说下bool()
bool()
将其他对象转化成布尔值,任何对象都可以转换成bool值,
规则:所有的表示空的对象都转化成False,例如0,none,其他的都转换成True
eval(str)
这个函数是将str转换成表达式,然后计算表达式,将结果返回
例如eval(“1+2”) 的结果就是3
ord(x) #返回字符x对应的ASCII或者Unicode编码
chr(x) #返回整数对应的Unicode字符是什么
hex(x) #将整数x转换成十六进制字符串
oct(x) #将整数x转换成八进制字符串
19. 运算符
算术运算符
数学中的±/就不说了,还有
// 表示整除,保留计算后的整数,返回一个整数,
** 表示幂运算,比如2 ** 3等于8
赋值运算符
=,+=,-=,=,/=,**=,//=,%= #简单,不多说
注意一下:就是对于浮点数运算,返回的结果还是浮点数,比如10.0//4的结果是2.0
python中赋值的快捷用法
a,b,c=10,20,30
#得到a=10,b=20,c30
#交换变量的值
a,b=b,a
#这样就将a和b的值进行了交换
位运算
~ | 按位取反 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
>> | 按位右移 |
<< | 按位左移 |
关系运算符
/>,/>=,/<,/<=,==.!= #不多说
注意一下:
①就是如果是两个字符串进行大于(等于)或小于(等于)的运算时,比较的是字符串对应的Unicode编码,比如’a’>‘b’ #False,因为a的编码在b的前面
如果字符串是多位的字母,这时就是逐位进行比较的,而且是前面如果比较出来大小,后面的就不再进行比较了,比如’5’<‘1546’ ,这里是False的,因为’5’和’1’比较,发现’5’比’1’大,所以就直接返回False,后面的不再进行比较了.利用这个特性,可以对英文的字符串进行按照字母排序,但是如果里面有中文就不行了,而且这样对中文排序好像也没什么特殊的意义
②这里的比较==和!=比较的是两个对象的value(值),而不是id,只要是值是一样的就返回True,比如(1 ==True) #这里返回的是True,因为他们两个的值都是1
③如果要想比较两个对象的id是否一样,有is和is not
is是比较两个对象是否是同一个对象,比较的是id
is not相反
逻辑运算符
and:逻辑与
逻辑运算的与运算
python的与运算是短路的与运算,如果第一个就是False了,就不会理第二个值是什么
or:逻辑或
逻辑运算的或运算
python的或运算也是短路的或运算,如果第一个就是True,就不会理第二个值是什么
not:逻辑非
对于布尔值是取反操作,
对于非布尔值是将它转化成布尔值再取反
非布尔值的与或运算
python对非布尔值进行与或运算的时候,python会将它们当作布尔值进行运算,最终会返回其中一个原值
与运算规则:本来就是找False,如果第一个值是False,就不会看第二个值,直接返回第一个值,否则返回第二个值
或运算规则:本来就是找True ,如果第一个值是True,就不会看第二个值,直接返回第一个值,否则返回第二个值
再python中独特的逻辑运算符用法:连着写,比如:
print(10<20<30) #True
这里相当于10<20 and 20<30
条件运算符(也叫三元运算符
语法:语句1 if 条件表达式 else 语句2
执行流程:先对条件表达式进行求值,
如果条件表达式是True,就执行语句1,并且返回执行结果
如果条件表达式是False,就执行语句2,并且返回执行结果
比如:求较大值a=23 b=26
max=a if a>b else b
运算符优先级
查表吧,不常用.(例如and比or高)