python基础总结(4)

一、函数的定义。

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类型。
原文地址:https://www.cnblogs.com/luohuayu/p/8846002.html