Python学习第四天
推荐学习网站:廖雪峰免费教程
Python函数
def定义函数
#def 函数名 (参数):
def my_abs(x):
if x >= 0:
return x
else:
return -x
空函数什么都不做,用pass语句,否则会出错。
if age >= 18:
pass
调用函数需要知道函数名和参数。
位置参数就是定义函数中的正常顺序,按顺序传递参数。
默认参数就是下列的n=2。调用时可修改n的值,不修改就默认是2
def power(x, n=2):
s = 1
while n > 0:
n = n - 1
s = s * x
return s
一般把变化大的参数放前面,默认参数放后面。有多个默认参数时,按顺序提供默认参数。
可变参数需要在参数前面加*号。
递归函数
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
迭代
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for key in d:
... print(key)
...
a
c
b
带下标:
>>> for i, value in enumerate(['A', 'B', 'C']):
... print(i, value)
...
0 A
1 B
2 C
两个元素
>>> for x, y in [(1, 1), (2, 4), (3, 9)]:
... print(x, y)
...
1 1
2 4
3 9
列表生成式
>>> list(range(1, 11))
#生成1~10的数字
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
生成器 (generator)
>>> L = [x * x for x in range(10)]
>>> L
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> g = (x * x for x in range(10))
>>> g
<generator object <genexpr> at 0x1022ef630>
#L是一个list,g是一个生成器
generator的值需要一个一个打出来,可以用next
>>> next(g)
0
>>> next(g)
1
>>> next(g)
4
>>> next(g)
9
>>> next(g)
16
.......
也可以用for循环
>>> for n in g:
... print(n)
函数用法,其中要输出的值存在b中。
def fib(max):
n, a, b = 0, 0, 1
while n < max:
yield b #print(b)
a, b = b, a + b
n = n + 1
return 'done'
迭代器可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
列表、字典、字符串不是迭代器,但是可以使用iter()函数变成interator。Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的。