Python基础(六)
1.函数
全局变量:定义在函数外部的变量,能够在所有的函数中被使用
局部变量:只在函数的内部定义的变量,只作用于函数的内部,因此允许存在相同变量名的局部变量
全局变量和局部变量同名时,就认为是定义了一个局部变量
在函数内部修改全局变量:使用关键字global声明局部变量,然后在函数内部进行修改后即是对全局变量进行修改
2.函数返回值
如果函数的return后面跟的是多个数据,则默认是元组
3.缺省参数、不定长参数
在函数中,如果缺省参数的值没有传入,则调用默认值;在形参中有默认值的参数,称为缺省参数,带有默认值的参数一定要在最后面
在函数中,有时需要传入大量的数据,需要处理比声明时更多的参数,这些参数称为不定长参数,声明时也不会命名
在形参中,加入*args、**kwargs来接收实参传递的不定长参数,*args会存放未命名的参数,*args是元组
**kwargs接收存放实参传递的命名的参数,**kwargs是字典
在形参中,缺省参数的位置在*args的后面
4.拆包
对返回对个值时,需要作出拆包操作,那么拆包的时候,需要拆的数据的个数要与变量的个数相同,否则程序会异常
除了对元组拆包之外,还可以对列表、字典等拆包
5.引用
在函数中,变量是可以被调用的,值是靠引用来传递的。可以使用id()来判断两个变量是否是同一个值的引用,id()的返回值是一个类似内存的地址标识
6.可变不可变类型
所谓可变类型与不可变类型是指:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变
可变类型有: 列表、字典、集合
不可变类型有: 数字、字符串、元组
7.lambda函数
lanbda函数,又被称为匿名函数,虽然在语言形式上看起来简便。但是对于刚接触的初学者来说阅读起来并不容易。
例子:lambda a: a**2 , 2
按照通俗的函数写法可以如下:
def square(a):
return a**2
a=square(2)
好处:
1. 不需要定义函数名称(临时函数)
2. 只做简单运算,并返回值,没有复杂的函数体
8.map()
map()函数并不多见,但是还是有必要了解一下。map(a,b) 中的a一般是作为一个函数,而b则是作为一个变量类型容器,比如列表,整型等。
例子:map(lambda a: a**2 , [1, 3, 4, 6])
结果:[1, 9, 16, 36]
作用即对函数中的可迭代的变量类型进行全覆盖的操作
9.递归函数
递归函数就是在函数内部调用自己本身,称为递归函数;最典型的递归操作就是斐波那契数列
10.列表推导式
列表推导式,就是指的轻量级循环创建列表
基本方式:a=[x for x in range(0,5) ] --> a = [0,1,2,3,4]
在循环中使用if: a = [x for x in range(0,5) if x%2==0] --> a=[0,2,4]
在两个循环中使用:a = [(x,y) for x in range(1,3) for y in range(3) ] --> a = [(1,0),(2,0),(1,1),(2,1),(1,2),(2,2)]
同理,也可以三个for循环
例子:请写出一段 Python 代码实现分组一个 list 里面的元素,比如 [1,2,3,...100]变成 [[1,2,3],[4,5,6]....]
a = [x for x in range(1,101)] b = [a[x:x+3] for x in range(0,len(a),3)]
11.set、list、tuple
set是集合类型
set、list、tuple之间可以相互转换
使用set,可以快速的完成对list中的元素去重复的功能