一、函数的定义。
def fun(x):
return xdef passtest(y): pass # pass保证此处不写代码也能正确运行文件,if后面同样可以使用,此时这个是空函数def go(): return 10,20 #返回两个值,其实就是返回一个元组。还是一个值print(fun(10)) print(passtest(10)) #结果为Noneprint(go())二、函数的参数。
def calc(*number): #参数数目可变 print(number) def calc1(one,two,**three) : #参数可变数目,两个星号既是dict print('one :', one , 'two :' , two ,"three :", three ) #加号不适用 calc1('1 ','2',city='beijing',name='xiaoming') #调用关键字参数 def test1(one, two, *, three, four,**key) :#命名关键字,后面两个没有默认,必须要写。这样就是规定必须要写的键值对 print("成功调用"); test1(1,2,three='aa',four='bb')#调用的时候,key的对应可以不写。 #递归函数的调用 def fact(n): if n == 1 : return 1; else: return n+fact(n-1) print(fact(5))
三、 python的高级特性。
1,切片。
对于一个list,我们要寻找他之中的几个数,需要用循环来实现,但是这样写十分繁琐,于是我们有更好的办法,如下,
L = ['a','b','c','d','e','f','g'] print(L[1:4]) #切出1到4输出。 print(L[:3]) #前3个 print(L[-3:]) #后3个 print(L[::3]) #所有的每3个输出一个 print(L[:6:2]) #前6个每2个输出一个
2,列表的生成,平时创建部分列表比较繁琐,可以简化该代码。
L = ['a','b','c','d','e','f','g'] print(L[1:4]) #切出1到4输出。 print(L[:3]) #前3个 print(L[-3:]) #后3个 print(L[::3]) #所有的每3个输出一个 print(L[:6:2]) #前6个每2个输出一个 l = range(10) #生成10以内的列表 l = [x*y for x in range(10) for y in range(10) if x % 2 ==0 ] #通过循环生成列表 l = L[::2] #通过切片生成列表
3,生成器。
列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
g = (x for x in range(20) if x % 2 == 0) #改成括号就变成了生成器 for i in range(4): #迭代4个值 print(next(g)) def fib(max): n,a,b=0,0,1 #赋值 while n < max: yield b #每次生成器返回的结果 a,b = b,a+b n = n + 1 a = fib(20) # 这里得到一个生成器 for i in range(4): print(next(a)) #读取生成器之中的值
4,最后再记住一句话吧!
凡是可作用于for循环的对象都是Iterable类型;凡是可作用于next()函数的对象都是Iterator类型。