首页 > temp > python入门教程 >
-
Python 极速入门指南
语法(Syntax)
文件执行方式:python myfile.py
强制缩进,缩进不能省略。缩进可以使用任意数量的空格。
注释(Comment)
注释语法:
变量(Variables)
当变量被赋值时,其被创建。 没有显式声明变量的语法。
可以转换类型。
可以获得类型。
还可以这样赋值:
没有在函数中声明的变量一律视作全局变量。
局部变量优先。
也可以显式声明全局变量。
由于不能区分赋值和声明,因此如果在函数中修改全局变量,需要指明全局。
数值(Number)
三种数值类型:int
float
complex
其中复数的虚部用 j
来表示。
真值(Boolean)
使用 True
和 False
,大小写敏感。
可以强制转换:
空值一般转换为假,例如零、空文本、空集合等。
条件与循环(If...Else/While/For)
大于小于等于不等于跟 C 语言一致。
如果:
适当压行也是可以的:
三目运算符,需要注意的是执行语句在前面。
与或:
如果不能为空,可以传递个 pass
占位。
while
循环很常规:
还有个 else
的语法:
这个有什么用呢?其实是可以判断自然结束还是被打断。
Python 中的 for
循环,更像是其他语言中的 foreach
.
为了循环,可以用 range
生成一个数组。依然是左闭右开。可以缺省左边界 0.
可以指定步长,默认为 1.
也支持 else
也可以拿 pass
占位。
字符串(String)
有两种写法:
好像没什么区别。
多行字符串:
字符串可以直接当数组用。
获得长度。
直接搜索。
几个常用函数:
-
upper
,大写。 -
lower
,小写。 -
strip
,去除两端空格。 -
replace
,替换。 -
split
,以特定分隔符分割。
连接两个字符串,直接用加号。
格式化:
可以指定参数填入的顺序:
转义符:\
操作符(Operators)
-
算术运算符
-
+
-
-
-
*
-
/
-
%
,取模。 -
**
,次幂,例如2**10
返回 . -
//
,向下取整,严格向下取整,例如-11//10
将会得到 .
-
-
比较运算符
-
==
-
!=
-
>
-
<
-
>=
-
<=
-
-
逻辑运算符,使用英文单词而非符号。
-
and
-
or
-
not
-
-
身份运算符?(Identity Operators)
-
is
-
is not
- 用于判断是否为同一个对象,即在内存中处于相同的位置。
-
-
成员运算符?(Membership Operators)
-
in
-
not in
- 用在集合中。
-
-
位运算符
-
&
-
|
-
^
-
~
-
<<
-
>>
-
集合(Collections)
数组(List)
没有 Array
,只有 List
.
下标从零开始。
还可以是负的,-1
表示倒数第一个,依此类推。
获取子数组,左闭右开。例如 [2:5]
代表 [2,5)
还可以去头去尾。
获得元素个数:
元素类型都可以不同:
构造:
赋值:
甚至一次改变一个子数组:
元素数量可以不对等,可以视作将原数组中的 [l,r)
扔掉,然后从切口塞进去新的子数组。
支持插入,应该是 复杂度的。insert(x,"something")
即让 something
成为下标为 x 的元素,也就是插入到当前下标为 x 的元素前。
尾部追加,应该是 的。
直接连接两个数组:
啥都能连接?
删除,一次只删一个。
按下标删除。可以省略参数,默认删除最后一个。
还可以用 del
关键字。
清空,数组对象依然保留。
可以直接用 for
来遍历。
也可以用下标遍历。
为了性能,也可以用 while
来遍历,避免 range
生成过大的数组。
缩写的 for
遍历,两边中括号是必须的。
赋值的时候,也有一些神奇的语法糖:
更抽象地:
还是比较灵活的:
支持直接排序。
排序也有一些参数。
可以自定义估值函数,返回一个对象用于比较?
还有这样的:
所以其实排序内部可能是这样的:
翻转数组:
直接拷贝只能拷贝到引用,所以有拷贝数组:
也可以直接构造:
合并:
总结一下内置函数:
-
append
,尾部追加。 -
clear
,清空。 -
copy
,生成副本。 -
count
,数数用的。 -
extend
,连接两个数组。 -
index
,查找第一个满足条件的元素的下标。 -
insert
,插入。 -
pop
,按下标删除。 -
remove
,按值删除。 -
reverse
,翻转。 -
sort
,排序。
元组(Tuple)
元组可以看作是不可修改的 List
.
用圆括号包裹。
与 List
不同的是,单元素的元组声明时,必须加一个句号,否则不会识别为元组。
构造:
元组是不可变的(immutable),想要修改只能变成 List
,改完再生成元组。当然这样做效率很低。
当我们创建元组时,我们将变量填入,这被称为「打包(packing)」.
而我们也可以将元组重新解析为变量,这被称为「解包(unpacking)」.
有趣的是,元组不能修改,却能连接,这大概是因为运算过程产生了新的元组而作为返回值。
集合(Sets)
这个集合是数学意义上的集合,即具有无序性、不重复性、确定性的特性的集合。
用大括号:
集合不支持下标访问,只能遍历:
不能修改元素,但可以添加元素。也可以删除再添加来达到修改的效果。
简单的删除 remove
,如果删除的元素不存在会报错。
如果不想要报错,可以用 discard
:
甚至可以用 pop
,由于无序性,可能会随机删除一个元素?
取并集,也就是合并两个集合,需要使用 update
,合并后会去重。
当然合并不仅限于集合之间。
如果不想影响原集合,只需要返回值,可以用 union
:
取交集:
还有更有趣的,删去交集,即
清空和彻底删除:
字典(Dictionary)
类似于 C++ 中的 map
,键值对。
3.7 以上的 Python 版本中,字典是有序的。有序性、可变性、不重复性。
有趣的是,值可以是任意数据类型。
获取所有 key
:
值得注意的是,这里传出的是一个引用,也就是说是可以动态更新的。但似乎是只读的。
values
也是一样的:
还可以直接获取所有键值对 items
:
可以查看键是否存在:
可以用 update
来更新,支持塞入一个键值对集合:
移除特定键:
移除最后一个键值对:
可以用 del
关键字:
清空:
遍历所有键名:
遍历所有值:
直接获取集合来遍历:
遍历键值对:
深拷贝:
嵌套:
函数(Functions)
函数定义:
参数:
形参(Parameter)和实参(Argument).
不定长参数:
可以用更优雅的方式传参:
实质上是键值对的传递,因此:
默认参数:
弱类型,啥都能传:
返回值:
占位符:
Lambda 表达式
只能有一行表达式,但可以有任意个数参数。
例如一个自增 的函数:
多参数:
有趣的是,可以利用 Lambda 表达式构造匿名函数:
类和对象(Classes/Objects)
Python 是一个面向对象(Object Oriented)的语言。
初始化:
声明方法:
函数的第一个参数将会是指向自己的引用,并不强制命名为 self
.
可以删除某个属性:
可以删除对象:
占位符:
继承(Inheritance)
迭代器(Iterators)
一个迭代器需要有 __iter__
和 __next__
两个方法。
所有的集合都能提供迭代器,都是可遍历的(Iterable Containers).
创建一个迭代器:
定义域(Scope)
函数中声明的变量只在函数中有效。
事实上,它在该函数的域内有效。
全局变量:
更多有关全局变量的前文已经说过,这里复习一下。
模块(Modules)
调库大法好。
举个例子,在 mymodule.py
中保存以下内容:
然后在 main.py
中运行:
可以起别名(Alias):
有一些内置的模块:
可以指定引用模块的某些部分,此时不需要再写模块名:
也可以起别名:
PIP
包管理器。
安装包:pip install <package-name>
例如:pip install camelcase
然后就能直接使用了:
异常捕获(Try...Except)
比较常规。
举个例子:
抛出异常:
可以指定类型:
输入(Input)
很简单的输入。
格式化字符串(Formatting)
前文已经简单提及了。
可以指定输出格式:
可以重复利用:
可以传键值对:
结语
差不多把 Python 中的基础语法过了一遍,相信各位读者读完后都能入门吧。
大部分编程概念都是相似的,学习起来并不困难。这也是一个写起来没什么心智负担的工具语言。有什么需要直接面向谷歌编程即可。
文章出处:https://www.cnblogs.com/Clouder-Blog/p/python-tutorial.html