若想技术精进,当然得把基础知识打得牢牢的。
廖雪峰的官方网站 python3教程,该网站提供的教程浅显易懂,还附带了讲学视频,非常适合初学者正规入门。
以下是通过廖雪峰python官方网站学习的个人查漏补缺。
一、精进一下对python编程语言的认知
Life is short, You need Python --python programming
在windows中 cmd进入命令行窗口 键入python 然后再输入import antigravity 就能够跳出该画面。能带你飞的python。
使用python是加强版的《乌鸦喝水》:
python的优点:简单、易学、面向对象、可扩展、跨平台、第三方库支持很多
python的缺点:
python解释器类别:CPython、IPython、PyPy、Jython、IronPython
CPython:这个解释器是用C语言开发的,所以叫CPython。CPython是使用最广的Python解释器。
IPython:IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
***区别提示***CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。所以在命令行中>>>提示符是用的CPython解释器,在PyCharm或者Jupiter Notebook中 [序号] 提示符是用的IPython解释器。
Jypthon:Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
IronPython:IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
****小结****Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。
python交互模式和命令行模式的区别:
python交互式模式的代码是输入一行,执行一行;python命令行模型是直接运行.py文件,一次性执行该文件的所有代码。
二、精进一下python编程中的基础知识点
1. 关于python的输入、输出(input/print)
print()函数可以解释多个字符串,用逗号“,”隔开。print()会依次打印每个字符串,遇到逗号“,”会输出一个空格,因此,输出的字符串会有空格拼接起来。
关于python编程好习惯的养成:python程序大小写敏感,如果写错,程序会报错。 少用“复制--粘贴”功能,缩进会失效。 坚持使用4个空格的缩进,在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。
2. 数据类型
整型:和数学上的写法一样
浮点型:即小数,对于很大或很小的浮点数,就必须用科学计数法表示,把10用e替代,1.23x109就是1.23e9,或者12.3e8,0.000012可以写成1.2e-5,等等。 (注意::整数和浮点数在计算机内部存储的方式是不同的,整数运算永远是精确的(除法难道也是精确的?是的!),而浮点数运算则可能会有四舍五入的误差。)
字符串:字符串是以单引号'或双引号"括起来的任意文本。如果字符串内部既包含'又包含"怎么办?可以用转义字符\来标识。
转义字符\可以转义很多字符,比如\n表示换行,\t表示制表符,字符\本身也要转义,所以\\表示的字符就是\。
注意:如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Python还允许用r''表示''内部的字符串默认不转义。
Python允许用'''...'''的格式表示多行内容。
...是提示符,不是代码的一部分
布尔类型: True、False 。 布尔值用and、or、not运算。
空类型:None
list列表类型:list是一种有序的集合,可以随时添加和删除其中的元素。 1)list是一个可变的有序表,所以,可以往list中追加元素到末尾:append()方法 。 2)把元素插入到指定的位置,比如索引号为1的位置:insert(位置,内容)方法。 3)删除list末尾的元素:pop()方法 ;要删除指定位置的元素,用pop(i)方法,其中i是索引位置。 4)要把某个元素替换成别的元素,可以直接赋值给对应的索引位置。 注:python中的列表是“打了激素的列表”,意思是里面什么数据类型都能装。
tuple元组类型:tuple和list非常类似,但是tuple一旦初始化就不能修改。list用name_list=[’Michael‘,’Bob‘,’Tracy‘] ; tuple用name_tuple=(’Michael‘,‘Bob’,‘Tracy’) ,tuple元组类型没有append(),insert()这样的方法,也不能给元素赋值更换。不可变的tuple有什么意义?因为tuple不可变,所以代码更安全。注:t=(1)定义的不是tuple,是1这个数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义,因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。所以,只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:t=(1, )。
***********list和tuple是Python内置的有序集合,一个可变,一个不可变。根据需要来选择使用它们。************
dict字典类型:Python内置了字典,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度,但是需要占用大量的内存,内存浪费多。使用key-value存储结构的dict在Python中非常有用,选择不可变对象作为key很重要,最常用的key是字符串。 ####避免key不存在导致错误的两种办法:一是通过in判断key是否存在;二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value。要删除一个key,用pop(key)方法,对应的value也会从dict中删除。
set集合类型:set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key,重复元素在set中自动被过滤。1)通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果。 2)通过remove(key)方法可以删除元素。 3)set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集 &、并集 |等操作。
***************可变对象和不可变对象**************
小结:print()输出 input()输入 数据类型:整形、浮点型、字符型、布尔型、空类型、list列表类型、tuple元组类型、dict字典类型、set集合类型。
三、精进一下python编程中的函数知识点
1. 内置函数
Python内置了很多有用的函数,我们可以直接调用。
>>> dir(__builtins__)//查看内置函数(BIF)列表
>>> help(input)//查看内置函数(BIF)功能描述
2. 自定义函数
有简单实用的内置函数,当然也可以灵活定义自己想要的函数,注:函数定义中为了安全起见,有一个参数检查步骤,自定义函数中可写,可不写。但是一个规范的、合格的编程者是应该写的。
函数可以同时返回多个值,表面上是多个值,但实际返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
3. 函数的参数
1)位置参数:power(x, n)函数有两个参数:x和n,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数x和n。
2)默认参数:把第二个参数n的默认值设定为2,power(x, n=2)。设置默认参数时,有几点要*******注意:一是必选参数在前,默认参数在后,否则Python的解释器会报错。二是如何设置默认参数。
当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。使用默认参数有什么好处?最大的好处是能降低调用函数的难度。默认参数有个最大的坑:定义默认参数要牢记一点:默认参数必须指向不变对象!
3)可变参数:可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数。
4)关键字参数:可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
5)命名关键字参数:和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*,*后面的参数被视为命名关键字参数。
6)参数组合:在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。但是请注意,参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的。 *args可变参数,相当于传入一个tuple **kw关键字参数 ,相当于传入一个dict * 命名关键字参数
关于函数参数的有用小结:
4. 递归函数
1)使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致栈溢出。2)针对尾递归优化的语言可以通过尾递归防止栈溢出。尾递归事实上和循环是等价的,没有循环语句的编程语言只能通过尾递归实现循环。3)Python标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。
学习进度条:
参考文章:
【2】Life is short, You need Python