一、函数的定义。
def fun(x):
return x
def passtest(y):
pass #
pass保证此处不写代码也能正确运行文件,if后面同样可以使用,此时这个是空函数
def go():
return 10,20
#返回两个值,其实就是返回一个元组。还是一个值
print(fun(10))
print(passtest(10)) #结果为None
print(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类型。