python之函数

Posted amrice

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python之函数相关的知识,希望对你有一定的参考价值。

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

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

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

一、定义一个函数

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

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def ChangeInt(a):
    a = 10
b = 2
ChangeInt(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,2
foo(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)
        return3
func(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


#max
print(max(info,key=lambda k: info[k]))

#sorted
print(sorted(info,key=lambda k: info[k],reverse=True))

#map
name = [zhao, du, wu]
res = map(lambda name: %s_NB % name,name)
print(list(res))

#filter
name = [zhao_NB, du_NB, wu]
res = filter(lambda name: name.endswith(NB),name)
print(list(res))

max,sorted,map,filter

 

以上是关于python之函数的主要内容,如果未能解决你的问题,请参考以下文章

Python入门基础之函数切片

python函数 之 提升Python效率之使用循环机制代替递归函数

Python内置函数之enumerate() 函数

python基础之函数v1

Python之调用函数

Python之调用函数