Python基础(六)

Python进阶技巧
本文介绍了Python编程中的进阶技巧,包括函数的全局变量与局部变量的区别、缺省参数与不定长参数的应用、lambda函数的使用场景及优势、map函数的工作原理、递归函数的定义与应用、列表推导式的高效使用方法、以及数据类型如set、list和tuple之间的转换。

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中的元素去重复的功能

 

转载于:https://www.cnblogs.com/zxh1297/p/9445105.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值