python之函数,,  函数是一个组织好


  函数是一个组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。

你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

一、定义一个函数

你可以定义一个有自己想要的功能的函数,以下是简单的规则:

函数代码块以def关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。函数内容以冒号起始,并且缩进。return [表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def ChangeInt(a):    a = 10b = 2ChangeInt(b)print(b) 
def changeme(mylist):    "修改传入的列表"    mylist.append([1, 2, 3, 4])    print("函数内取值: ", mylist)    return# 调用changeme函数mylist = [10, 20, 30]changeme(mylist)print("函数外取值: ", mylist)
def printme(str):    "打印任何传入的字符串"    print(str)    return# 调用printme函数printme(str="My string")
# 可写函数说明def printinfo(name, age):    "打印任何传入的字符串"    print("Name: ", name)    print("Age ", age)    return# 调用printinfo函数printinfo(age=50, name="miki");
def printinfo(args,*vartuple):    "打印任何传入的参数"    print(args)    for var in vartuple:        print(var)    return# 调用printinfo 函数printinfo(10)printinfo(70, 60, 50)

二、实参和形参

技术图片
#定义函数括号里的一般叫形参#调用时括号里传递的参数一般叫实参#比如:def students(age):    print(‘my age is %s‘ % age)students(18)age就是形参,18就是实参
View Code

三、参数的具体应用

技术图片
‘‘‘1、位置参数:按照从左到右的顺序定义的参数        位置形参:必选参数        位置实参:按照位置给形参传值‘‘‘def foo(x,y):    print(x,y)foo(1,2)#结果:1,2        ‘‘‘2、关键字参数:按照key=value的形式定义的实参        无需按照位置为形参传值        注意的问题:                1. 关键字实参必须在位置实参右面                2. 对同一个形参不能重复传值‘‘‘def foo(x,y):    print(x,y)foo(y=2,x=1)结果:1,2‘‘‘3、默认参数:形参在定义时就已经为其赋值        可以传值也可以不传值,经常需要变得参数定义成位置形参,变化较小的参数定义成默认参数(形参)        注意的问题:                1. 只在定义时赋值一次                2. 默认参数的定义应该在位置形参右面                3. 默认参数通常应该定义成不可变类型‘‘‘def foo(x,y=2):    print(x,y)foo(1)#结果:1,2foo(1,3)#结果:1,3‘‘‘4、可变长参数:        可变长指的是实参值的个数不固定        而实参有按位置和按关键字两种形式定义,针对这两种形式的可变长,形参对应有两种解决方案来完整地存放它们,分别是*argsh和**kwargs‘‘‘#*args:传递的参数会变成元组def foo(x,y,*args):    print(x,y,args)foo(1,2,3)#结果:1 2 (3,)#**kwargs:传递的参数会变成字典def foo(x,y,**kwargs):    print(x,y,kwargs)foo(1,2,a=3,b=4)#结果:1 2 {‘a‘: 3, ‘b‘: 4}函数参数的传递
View Code

四、return语句

return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。之前的例子都没有示范如何返回数值,下列变告诉你怎么做:

# 可写函数说明def add_sum(arg1, arg2):    # 返回2个参数的和."    total = arg1 + arg2    print("函数内 : ", total)    return total# 调用sum函数total = add_sum(10, 20)
return它是函数的执行结果的返回值,return往下的代码将不会执行(只能用在函数体内)return就是函数调用本身的结果return可以返回任意的数据类型Def func(a):    print(‘this is test func‘)    return0    print(‘123‘)func(1)Def func(a):    print(‘this is test func‘)    If a==0:        print(‘aaa‘)        return0    Elif a==1:        print(‘bbb‘)        return1    Elif a==2:        print(‘cccc‘)        return2    else:        print(‘sb‘)        return3func(0)func(1)func(2)func(3)

五、函数的特性

#函数可以被引用def f1():    print(‘this is f1‘)    return ‘ok‘res = f1()print(res)#函数可以当参数传递def foo(a):    print(a)def bar(b):    print(b)bar(foo(‘你好‘))#嵌套函数def f1():    def f2():        def f3():            print(‘this is f3‘)        f3()    f2()f1()函数的特性

六、匿名函数

info = {    ‘li‘:2000,    ‘zhao‘:35000,    ‘wu‘: 25000,    ‘du‘: 30000}#maxprint(max(info,key=lambda k: info[k]))#sortedprint(sorted(info,key=lambda k: info[k],reverse=True))#mapname = [‘zhao‘, ‘du‘, ‘wu‘]res = map(lambda name: ‘%s_NB‘ % name,name)print(list(res))#filtername = [‘zhao_NB‘, ‘du_NB‘, ‘wu‘]res = filter(lambda name: name.endswith(‘NB‘),name)print(list(res))max,sorted,map,filter

python之函数

评论关闭