python基础

Posted abby-cheng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python基础相关的知识,希望对你有一定的参考价值。

一、函数

1、用def定义函数

2、引入某个方法,如引入文件test.py文件中的method1方法:from test import method1

3、定义空函数,函数体就写pass就行,pass可以当作占位符

4、函数执行完毕也没有return语句时,自动return None

5、函数可以同时返回多个值,但其实就是一个tuple

6、 定义默认参数要牢记一点:默认参数必须指向不变对象!

7、定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号,可变参数在函数调用时自动组装为一个tuple。

8、Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去

9、关键字参数,参数格式:**参数名,关键字参数在函数内部自动组装为一个dict,注意关键字参数获得的是传入参数的一份拷贝,对关键字参数的改动不会影响到函数外的传入参数

10、命名关键字参数

(1)命名关键字参数需要一个特殊分隔符**后面的参数被视为命名关键字参数

(2)函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*

(3)定义函数时,若命名关键字参数没有缺省值,调用函数时必须传入参数名

(4)对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的

11、递归函数

(1)如果一个函数在内部调用自身本身,这个函数就是递归函数

(2)使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。

(3)解决递归调用栈溢出的方法是通过尾递归优化,尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少次,都只占用一个栈帧,不会出现栈溢出的情况。

 

二、高级特性

1、切片

(1)list和tuple都可以用切片操作

(2)L[0:3]表示,截取list的部分元素,从索引0开始,到索引3终止,即取L[0]、L[1]、L[2]。如果从所以0开始,也可以写成L[:3]

(3)L[-1]表示,取最后一个元素

(4)L[-10:]表示,取最后10个元素

(5)L[:10:2]表示,取前10个元素,每两个取一个

(6)L[::3]表示,所有元素每三个取一个

(7)L[:]表示复制一个list

2、迭代

(1)可以用for循环来遍历一个list或tuple,这种遍历称为迭代

(2)判断一个对象是否可迭代对象

技术分享图片

(3)可以用enumeration()把一个list变成索引-元素对

技术分享图片

 3、列表生成式

(1)生产一个list

技术分享图片

(2)用列表生成式,生成[1×1,2×2,...,10×10]

技术分享图片

(3)列表生成式,还可以加上if判断

技术分享图片

(4)使用两层循环,可以生成全排列

技术分享图片

3、生成器

(1)第一种方法:把一个列表生成式的[]改成(),就创建一个generator:g = (x * x for x in range(10))

  • 可以通过next()函数,计算出g的下一个元素,直到计算出最后一个元素,没有更多元素时,抛出StopIteration错误

技术分享图片

  • 可以用for循环迭代生成器,并且不需要关心StopIteration错误

技术分享图片

(2)第二种方法:如果一个函数定义中,包含关键字yield,那么这个函数就不是一个普通的函数,而是一个generator。

  • 变成generator的函数,遇到yield语句返回,再次执行时,从上次返回的yield语句处继续执行
  • 函数执行过程中,遇到yield就中断,下次又继续执行。需要给循环设置一个条件退出循环,否则会产生一个无限数列
  • 调用变成generator的函数,需要先生成一个generator对象,然后用next()函数不断获得下一个返回值
  • 使用for循环调用generator时,发现拿不到返回值。若要获取返回值,必须要捕获StopIteration错误,返回值包含在StopIteration的value中

以上是关于python基础的主要内容,如果未能解决你的问题,请参考以下文章

常用python日期日志获取内容循环的代码片段

python 有用的Python代码片段

Python 向 Postman 请求代码片段

python [代码片段]一些有趣的代码#sort

使用 Python 代码片段编写 LaTeX 文档

python 机器学习有用的代码片段