python学习笔记2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习笔记2相关的知识,希望对你有一定的参考价值。
学习廖雪峰的官方网站https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
6 函数
函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”。
函数名其实就是指向函数的变量,也可把函数作为参数传入,这样的函数称为高阶函数。
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。
Python的函数返回多值其实就是返回一个tuple, 而多个变量可以同时接收一个tuple,按位置赋给对应的值。
def mine(x,y):
if not isinstance(x, (int, float)): #数据类型检查
print(‘ERROR‘)
else:
n=str(x)
m=y*2
return m,n
7 函数的参数
(1) 位置参数:传入的值按照位置顺序传入
(2) 默认参数:默认参数必须指向不变对象
(3) 可变参数:传入的参数个数是可变的 def calc(*numbers):
numbers可以把多个参数,作为tuple传入;如有a=(1,2,3), calc(*a)
(4) 关键字参数:而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
def person(name, age, **kw):
person(‘Bob‘, 35, city=‘Beijing‘)
也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去: extra = {‘city‘: ‘B‘, ‘job‘: ‘E‘}
person(‘Jack‘, 24, **extra)
(5) 命名关键字参数:如果要限制关键字参数的名字,就可以用命名关键字参数,例如,只接收city和job作为关键字参数。
def person(name, age, *, city, job):
和关键字参数**kw不同,命名关键字参数需要一个特殊分隔符*
,*
后面的参数被视为命名关键字参数。
命名关键字参数可以有缺省值,从而简化调用。 如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*了。
参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
8 高级特性
(1) 切片,L[a:b:c],包含a但不包含b, c是间隔。
(2) 列表生成式,把要生成的元素x * x放到前面,后面跟for循环, 可以加上if判断, 还可以使用两层循环 [x*x for x in range(1,10) if x%2==0]
(3) generator,循环的过程中不断推算出后续的元素 g = (x * x for x in range(10))
通过next()函数获得generator的下一个返回值generator也是可迭代对象,可以用for循环。
如果一个函数定义中包含yield关键字,那么这个函数就不再是一个普通函数,而是一个generator。
函数是顺序执行,遇到return语句或者最后一行函数语句就返回。
而变成generator的函数,在每次调用next()的时候执行,遇到yield语句返回,再次执行时从上次返回的yield语句处继续执行。
直到最后抛出StopIteration
错误表示无法继续返回下一个值了。
(4) Iterator, 可以被next()函数调用并不断返回下一个值的对象称为迭代器 可以使用isinstance()判断一个对象是否是Iterator
from collections import Iterator
isinstance((x for x in range(10)), Iterator)
凡是可作用于for循环的对象都是Iterable类型; 凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
以上是关于python学习笔记2的主要内容,如果未能解决你的问题,请参考以下文章
[原创]java WEB学习笔记61:Struts2学习之路--通用标签 property,uri,param,set,push,if-else,itertor,sort,date,a标签等(代码片段