NO13函数

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2017/10/24 22:15
# @author : hezefan
# @file : 7.1.py
#函数的定义
def sum(x,y):
print ( 'x={0}' .format(x))
print ( 'y={0}' .format(y))
print ( 'x+y={0}' .format(x+y))
return x+y
m=sum( x = 1 , y = 2 )
print m

#函数的参数
#1、给Y变量设置一个默认值,如果不赋值,则y为默认值,
def fanA(x,y= 0 ): ##y不赋值的时候默认为0
print (x)
print (y)
fanA( 1 )
fanA( 1 , 10 ) ##给默认y赋值一个实参,则y的值为实参

#2、参数为tuple 元组,##输出c的值为(3, 4, 5, 6),为一个元组.一个星号为元组
def fanB(a,b,*c):
print a
print b
print "length of c is:%d" % len (c)
print c
fanB( 1 , 2 , 3 , 4 , 5 , 6 )

#3、参数为字典dict,两个星号为字典
def fanC(a,**b):
print a
for m in b:
print m + ":" + str (b[m])
fanC( 100 , x = "hello" , y = '你好。' ) ##第一种赋值方式
args={ 'x' : 1 , 'y' : 2 } ##第二种赋值方式
fanC( 100 ,**args)


#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2017/10/25 19:47
# @author : hezefan
# @file : 7.2.py

'''高阶函数'''
#高阶函数:把函数当做参数传递的一种函数,如下举例:
def add(x,y,f):
print (f(x)+f(y))
add(- 10 , 8 , abs )

#map()函数
#内置高阶函数接收一个函数和一个可叠代的对象
def f2(x):
return x*x #元素乘以元素
l=[ 1 , 2 , 3 , 4 , 5 ]
print ( map (f2,l))

#reduce函数,
#输入一个方法,一个函数,(和一个数字,可以不加上)
def f3(x,y):
return x+y
print ( reduce (f3,l, 10 )) #输出列表的和加上10,相当于1+2+3+4+5+10

#filter函数
#输入一个函数和可迭代对象,删选出符合函数的元素
def f4(x):
return x% 2 == 1
print ( filter (f4,l))

#sorted函数
#对字典进行排序

mm= dict ( b = 1 , a = 2 , c = 10 , d = 5 )
test= sorted (mm.iteritems(), key = lambda d:d[ 1 ]) ##次数的函数名字是随意命名的
print (test)

#匿名函数,快速定义一个函数
#lambda来定义函数
m= lambda x,y:x+y
print (m( 1 , 2 ))


#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2017/10/25 21:31
# @author : hezefan
# @file : 7.3.py
'''生成式,和生成器'''
#列表生成式
li = [x*x for x in xrange ( 1 , 101 ) if x% 2 == 0 ]
print (li)

#列表生成器
#最简单的办法,把原来的生成式的[]换成()就OK了,生成一个列表对象(列表生成器)
li = (x*x for x in xrange ( 1 , 101 ) if x% 2 == 0 )
print (li)
print (li. next ()) ##输出光标的下一项
print (li. next ())
print (li. next ())
for i in li:
print (i)
#函数中生成列表生成器
#yidle方法 相当于return,但是返回值的时候会挂起这个元素,下次执行的时候会记录这个点
def f(n):
sum = 0
i = 0
while (i<n):
sum =sum +i
i+= 1
yield (sum) ##返回一个对象生成器
print ( type (f( 10 ))) ##返回一个生成器
for x in f( 10 ):
print x

##生成器:返回一个可迭代的对象,以及generator对象,必须通过循环才能一一取出结果
##生成式:一次性生成所有的数据,然后保存在内存中,适合小量的数据
##可迭代对象:可以通过循环调用出来就是可迭代的对象,生成器也是一个可迭代的对象
##迭代器:就是生成器呗next不断调用返回下一个元素,就是迭代器

#乘法口诀:
for i in xrange(1,10):
    for j in xrange(1,i+1):
        print('{0}*{1}={2}'.format(j,i,j*i)),   ##,可以取消换行
    print



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值