Python3简单的入门笔记
目录
Python3简单的入门笔记
入门级基础知识:
输入和输出:
输出
print("Hello World!");
- print所带有的几条特性:
- print()默认结尾自带换行。
- 不想要自动换行的话要加上
end = ""
print("Hello","World!");
这样逗号隔开的输出方式也是允许的,中间会自动加上空格。
输入
- 输入采用的是
input()
input()
所具有的几个特性:- 括号内可以加一串字符串用来充当输入的提醒语,就和C语言中,我们每次输入之前都要打印一串提醒的语句的效果相同。
各种格式控制
print的格式控制:
- 用法:
print("格式控制符"%变量)
- 你会发现这种格式控制的方法没办法输出二进制数!
- 如果不在原处指定位数的话,可以采取用*号代替的方式,然后具体的字段宽度放在后面的二元组的左端。
- 允许在一条字符串中有多个变量的存在,这个就和C语言中的scanf的效果是差不多的。不过要强调的一点是,顺序一定要正确,顺序一定要正确,顺序一定要正确!
print("I like %(book_name)s which costs %(price)8.2f$"%{"book_name":"《Universe》","price":1.2343})
* 这个例子表示的是我们还可以用字典的键值的映射结合格式控制符来进行格式控制,这种方法可读性强。
类型转换:
- 转整数用
int()
- 转浮点数用
float()
- 转字符串用
str()
ord()
查看一个字符的ascll码值。chr()
将ascll码值转换成对应的字符。list()
将其他数据类型(主要是元组)转化成列表。set()
将其他数据类型(主要是元组)转化成集合。- 另外元组也可以转化成字典,使用的是
dict()
,不过要求元组是二元组,能左右对应键值。 eval()
可以执行一句符合语法规范的代码的字符串。比如eval("2*3")
变量
- 在python中,每一种变量在使用之前,都必须要先赋初值。
- 可以用
type()
来查看某一个变量的具体的类型是什么。
标志符
- 标志符的规定同C只允许用字母,数字,下划线来命名且不允许数字开头。另外不允许使用保留字。
- 但是对于Python3有一个不同的地方是,它允许使用中文来定义变量!
基本数据类型
number(数字的数据类型)
- 关于进制数的表示方法:
- python有一个非常好的功能是它支持非常大的整数,不需要像C语言那样考虑很多关于数据类型的容量范围的问题。
- 关于浮点数:
- 其中e是一种科学计数法的表示方法,后面跟的数字表示10的指数。
- 复数:
- bool类型的值:
- Python注释的使用方法:
其中,可以使用Crtl+/
实现多行注释、取消。
字符串:
- 字符串可以用单引号也可以用双引号,也就是说不进行特别区分字符与字符串。
- Python3直接支持中文符号,变量名可以直接用中文来起。
- 转义字符依然可以在字符串中使用。要记得用的是反斜杠
\
。 - 如果不想让转义字符发生转义,那就要在字符串前加上
r
表示原始字符串。 - 如果一个多行的段落想要用一个字符串变量来存储的话,那就要用三个单引号
'''
或者三个双引号"""
在头尾引用起来。 - 字符串相加的效果本质上就是字符串直接连接在一起的做法。
- 字符串可以和数字做乘法,相当于执行了多次字符串的加法,本身和本身相加。
- 不能让字符串和数字相加。
列表:
- 列表是写在方括号
[]
之间,元素之间用逗号分隔开的数据类型。 - 列表中的元素可以是多样化的,它可以支持数字,可以支持字符串,甚至可以支持列表(也就是嵌套)。
- 列表对元素的访问有两种方式,一种是像数组那样,用下标索引法来访问。
- 另一种方法是截取其中的一个片段,称为切片访问。比如这样
[0:2]
不过要注意的一点是,在做列表切片的时候,得到的新列表是不包含右界的那个下表所对应的元素的。上面的例子会得到的只有list[0],list[1]
这两个元素。 -1
表示倒数第一个数,-2
依次类推。- 切片步长可以隔着对应步长来取元素。
[起始下标:终止下标:步长]
,如果没有起始下标和终止下标的话,会默认从头到尾遍历。图中list=[1,2,3,4,5,6]
- 对于嵌套的列表的访问,要先在第一层列表中访问到所需要访问的第二层列表所在的位置,然后再用列表的访问方式访问第二层列表中的元素。
- 字符串是一种特殊的列表,所以对列表的操作都可以同样被运用到字符串上。
元组Tuple:
- 元组和列表相似,不同之处在于元组的元素不能修改。
- 元组写在
()
中,元素之间用逗号隔开。 - 元组中元素的类型可以不相同,这点和列表相似,同时它也支持嵌套。
集合Set:
- 集合符合数学上对集合的定义,即确定性,无序性,互异性。所以集合是一个无序的不包含重复元素的序列。
- 集合主要用来进行成员关系的测试和删除重复元素。(集合会自动删除重复的元素)
- 集合的初始化可以用大括号
{}
或者set()
函数。 - 可以用
in
来判断一个元素是否在一个集合中,返回的结果是bool型的值。比如对于set1 = {1,2,3,4,5}
,3 in set1
返回的结果就是True。
集合的运算:
- 集合的并,并集运算。本质上用的是逻辑运算中的逻辑或
|
。 - 集合的交,交集运算。本质上用的是逻辑运算中的逻辑与
&
。 - 集合的差,差集运算。本质上用的是
-
减法运算。比如set1 - set2
得到的集合是从set1中取出set1与set2共有的那一部分元素后得到的集合。 - 集合的补,补集运算。
set1 ^ set2
,补集运算得到的集合是除去两个集合中同时存在的元素后剩下的元素所组成的集合便是这两个集合的补集。另,两个集合的补集等于这两个集合的并集与他们的交集的差。set1 ^ set2 = (set1 | set2) - (set1 & set2)
。
字典dictionary:
- 字典是一种映射类型,用
{}
标识,它是一个无序的键(key):值(value)对
集合。 - 键必须使用不可变的类型,在同一个字典中,键是唯一的。
- 字典中的元素是通过键来存取的。
- 字典很想C++中的map容器的使用方法,它的载入一个数据的方法和修改某一个键的值的方法,都与map一样。
- 字典在使用之前一般要初始化,最常用的初始化是新建一个空的字典:
dic = {}
。
- 可以用
dict()
方法:- 利用元组(二元组)来构造字典,二元组的左值为键,右值为对应的值。
- 也可以直接用赋值的方式直接让
dict(键1= 值1,键2= 值2)
这样的方式来构造字典。
- 字典常用内置函数:
- .values()查看字典中所有的值。
- .keys()查看字典中所有的键。
- .clear()清空字典。
基本运算:
算术运算:
- 其中比较特殊的是:
**
可以作为指数的运算符比如10**3指的就是1000.//
代表商的整数部分,向下取整也就相当于直接省略小数部分,相当于C语言中的/
而python中的/
的效果却是等同于数学意义上的除法。- 求余运算的一些特点,就是结果的符号同符号右边的数:
比较运算:
- 算术运算的优先级高于比较运算,也就是说允许比较运算符的两边存在算术表达式。
赋值运算:
- 赋值运算符左边是变量右边可以是变量也可是常量也可是表达式。
逻辑运算:
- 在逻辑运算中会把0视作False而其他非零值视为True。
- 反过来,在逻辑运算中,Fasle确实等于0,但True只能等于1,其他非零值(除了1)只是可以视为True但并不等于True。
- or运算:
- 左为x值,右为y值,如果左为True就返回x,否则,若右为True则返回y。
程序结构和控制语句:
Python的行:
- python的每一条语句并不存在像C语言的
;
一样的结束符号,因此客观上来讲,python会把一行看成一条语句,也就是说我们不能直接把条比较长的语句直接写在多行,如果需要这样操作的话,必须在行末加上\
才行。
- 另外什么情况下可以不需要斜杠也能支持多行处理呢?
流程控制:
- 顺序,分支,循环。
- 代码块由缩进开始,由逆缩进结束。
- 分支语句:
if-else
结构同C。if-elif-else
结构同C的if-else if-else
结构。
- 循环语句:
-
while 条件: 循环体
-
for 循环变量 in 序列: 语句块
- for与range的配合可以直接控制循环的次数:
- 有以下两种方式,一种是指定次数,另一种是指定切片。没有指定开头开始的位置的的话都是默认从0开始。
-
列表推导式:
- 效果有点和给定一个表达式后跟它的两个变量的取值集合的效果类似。
- 如果C语言要达到这样的效果是需要有逻辑与的介入才能够实现好这样的操作的,但是python可以支持直接操作,这样更符合数学直观。
break语句
用于直接终止break所在层的循环。continue语句
用于跳过循环体后续的还没执行的语句,直接进入到下一层循环中。pass语句
本质上就是一个占位语句,没有任何的实际作用,主要用于提升代码的可读性,和维持框架的整体性,比如在一些分支中有一些分支是需要考虑到的,但是考虑到后本身又不需要执行对应的语句,这时候就可以用pass语句
来占位,表示我们从逻辑上也考虑到了对应的情况,先占个位置,从程序的维护来说,也方便后续程序要维护的情况下,便于后来者读懂程序的分支逻辑。
函数:
- 函数定义:
def 函数名称(参数1,参数2,.....):
"作为函数说明的一个文档字符串" #相当于一条简明的使用说明。(可选)
函数体
return(返回值)
- 函数调用:
用函数名称加上参数的形式来调用。 - 一些不同于C的特点:
- 关于多个值返回的问题,在Python中,可以直接返回一个元组,后续再对元组进行拆分就可以得到多个值了。
- 以及在参数的设置上,又必选参数和可选参数的区别。可选参数必须被赋予一个默认的值,并且可选参数必须放在必选参数的后面。
- 可以使用
函数名.__doc__
来打印相关函数的帮助文档信息。比如:
所以当我们对一些要用的函数不太清楚的时候,可以通过打印它的__doc__
信息来了解它。 - 对所返回的元组进行拆包的方式就是,返回的元组的个数是多少个,那我们就在赋值语句的左侧按对应的顺序设定对应数量的变量即可。假设当前
函数fun
将返回一个三元组,于是我们便可以这样接收返回值。v1,v2,v3 = fun()
全局变量与局部变量
- 在Python中要求如果在某一个函数中要改变某一个全局变量的值的话,那必须在这个函数内部用
global语句
来声明这个变量以表示这个变量是一个全局变量, 这个就有点类似在C++/C语言中进行多文件编程的时候,在头文件中定义的全局变量,需要加上extern
的外部声明,并且在对应的需要使用的对应文件中依然要对相关的全局变量在当前文件中也再一次进行声明(但是不加extern
),这样才允许使用这个全局变量。
类
- 有点像C语言中的结构体,但是功能上应该高于结构体。其中的类体就相当于结构体,只不过范围更广,它不仅包含了对象还包含了方法。
- 用
class
语句来声明。 - 一个关于类的具体例子:
- 一个关键的点是,在类中所定义的所有的方法都必须带上
self
这个参数,尽管在具体赋值的时候并不需要赋值该参数,但是类中的每一个方法(本质是函数),都需要带上这个参数。 - 在实例化类的过程中会默认调用类中的
__init__
函数,所以仅需要用类名并传入初始化所需要的参数即可。而对于其他的编程语言的话,往往需要new
这个关键字。
文件:
- 以上为python中对文件的读写方法。
异常:
- 以上是Python中对异常的情况进行处理的相关的执行框架。
try:
语句下的语句块是待执行的语句部分。except (异常) :
语句下的语句块是执行当try:
中的语句出现了异常,并且被捕捉到后,程序会执行的内容。特别地,当不知道具体的异常时什么的情况下,可以直接使用except:
,此时程序依然会捕捉发生的异常,只不过不方便进行具体异常的提示而已。else:
部分是try:
中的语句没有出现异常的情况下程序所执行的语句块。finally:
语句下的语句块是无论异常是否发生都会执行的语句块。
导入外部库:
import
语句可以后跟库名直接导入某一个库。from (库)import (具体方法)
可以从某一个库中具体导入某一个具体的方法。import (库)as (别名)
导入库后可以用库的别名来使用它,更简洁方便。
获取帮助信息:
- 使用
dir(object)
来获取object的所有的方法。 - 使用
help(object)
来获取object是如何工作的,相当于dir()的详细版。