PYthon 中函数编写时需要注意的地方

函数:
1.代码复用的第一步就是使用函数。
2.一个函数可以接受任何数量(包括0)的任何类型的值最为输入变量,并且返回任何数(包括0)的任何类型的结果。
3.Python中的一切都是对象,包括字符串、数字、元祖、列表、字典和函数。
4.调用Python函数help()可以打印输出一个函数函数的参数列表和规范文档。如果仅仅是想要得到文档的字符串可以用doc
5.可以把函数作为函数的参数,函数也可以作为列表、元组、集合、和字典的元素。函数名是不可变得,因此可以把函数用作字典的键。Python的函数式一级对象,也就是说,我们可以直接引用函数把函数当成参数传给其他函数,并通过表达式及if语句对其进行比较和判断。
6.闭包是一个可以由另一个函数动态生成的函数,并且可以改变和存储函数外创建的变量的值。(也可以说闭包是一个定义在某个作用域中的函数,这种函数引用了那个作用域里的变量。)
7.Python使用特殊的规则来比较两个元组。它首先比较各元组中下标为0的对应元素。如果相等,再比较下标为1的对应元素,如果还是相等,那就继续比较下标为2的元素,一次类推。
8.在表达式中引用变量时,Python解释器将会按照如下顺序遍历各作用域:
(1)当前函数的作用域
(2)任何外围作用域(例如:包含当前函数的其他函数)。
(3)包含当前代码的那个模块的作用域(也叫全局作用域)
(4)内置作用域(也就是包含len及str等函数的那个作用域)
9.给变量赋值时,规则有所不同。如果当前作用域内已经定义了这个变量,那么该变量就会具备新值。若是当前作用域内没有这个变量,Python则会把这次赋值视为对该变量的定义,而新定义的这个变量,其作用域就是包含赋值操作的这个函数。
10.nonlocal语句。nonlocal清楚地表明如果在闭包中给该变量赋值,那么修改的其实是闭包外那个作用域的变量。但是,nonlocal的唯一限制是它不能延伸到模块级别,这个是为了防止它污染全局作用域。这个与global语句互补。global用来表示对该变量的赋值操作,将会直接修改作用域里的那个变量。
(1)于定义某个作用域内的闭包来说,它可以引用这些作用域中的变量
(2)使用默认的方式对闭包内的变量赋值,不会影响外围作用域中的同名变量
(3)在Python3中,程序可以闭包内调用nonlaocal语句来修饰某个名称,使得该闭包能够修改外围作用域中的同名变量。
(4)在Python2中,程序可以使用可变值(例如,包含单个元素的列表)来实现与nonlocal语句相仿的机制。
(5)除了那种比较简单的函数,尽量不要用nonlocal语句。
12.考虑用生成器改写直接返回列表的函数
(1)。生成器是使用yield表达式的函数。生成器是用来创建Python序列中的一个对象。使用它尅迭代庞大的序列,且不需要再内存中创建和存储整个序列。
(2)调用生成器函数时,它不会真得运行,而是返回迭代器。每次在迭代器上调用内置的next函数时,迭代器会把生成器推进到下一个yield表达式那里。生成器传给yield的每一个值,都会由迭代器返回给调用者
(3)用生成器改写后,则可以对应任意长度的输入数据
(4)定义生成器函数时,需要注意的就是函数返回的那个迭代器,是有状态的,调用者不应该反复使用它。
(5)使用生成器比把收集到的结果放入列表里返回给调用者更加清晰
(6)由生成器函数所返回的那个迭代器,可以把生成器函数体中,传给yield表达式的那些值,逐次产生出来
(7)无论输入量有多大,生成器都能产生一系列输出,因为这些输入量和输出量都不会影响它在执行时所耗费的内存。
13.在参数迭代时,要多加小心
今天有点困了,先总结这些

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值