Python全栈开发实战学习4

函数

定义

函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。

特性

  1. 减少重复代码
  2. 使程序变得可拓展
  3. 使程序变得易维护

语法定义

def 函数名():
	函数体
	(return 返回值) # 当有返回值时必须添加return
函数名() # 调用函数

可以带参数

def Calc(x,y):
    result = x**y
    return result

a = 2
b = 3
res = Calc(a,b)
print(res)

# 结果
8

参数

参数有形式参数(简称形参)、实参、默认参数、关键参数、位置参数、非固定参数。

形参和实参

具体的不多做解释,读者不明白请去百度,一张图认清形参和实参。

在这里插入图片描述

默认参数

传值时某个参数可以默认指定,比如个人信息中的国籍可以默认指定为中国,此时在定义函数时要对形参格式稍加改动。

def stu_info(name, age, country, course):
修改为
def stu_info(name, age, course, country='CN'):

在调用时如果不指定country值时,就会默认为CN,此时的country='CN’就是关键参数

def stu_info(name, age, course, country='CN'):
    info = '''
    ——————————info of %s——————————
    Name:%s
    Age:%s 
    Country:%s 
    Course:%s 
    —————————— end ——————————————
    ''' % (name, name, age, country, course)
    print(info)

stu_info('Martin', '22', 'Python')

#结果
 ————————info of Martin——————————
    Name:Martin
    Age:22 
    Country:CN 
    Course:Python 
 —————————— end ——————————————

关键参数和位置参数

正常情况下,给函数传递参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可(指定了参数名的就加关键参数),但记住一个要求就是,关键参数必须放在位置参数(以位置顺序确定对应关系的参数)后面。

调用

调用可以这样

stu_info("王三炮",course="PY", age=22, country="JP")

但绝不可以这样

stu_info("王三炮",course="PY", 22, country="JP")

当然这样也不行

stu_info("王三炮", 22, age=22, country="JP") # 相当于给age赋值两次,会报错

非固定函数

若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数

*args 元组
def stu_info(name, age, *args):  # args会把多出入的参数变成一个元组形式
    print(name, age, args)

stu_info('Martin',22)
stu_info('Martin', 22, 'CN', 'Python', 1)
#结果
Martin 22 () # stu_info('Martin',22) *args没有传入值,所以元组是空的
Martin 22 ('CN', 'Python', 1)
**kwargs 字典
def stu_info(name, age, *args, **kwargs):  # **kwargs会把多输入的参数变成一个字典形式
    print(name, age, args, kwargs)

stu_info('Martin',22)
stu_info('Martin', 22, 'CN', 'Python', 1, country='CN',course='Python')#注意后两个与前面的区别
# 结果
Martin 22 () {} # **kwargs没有传值,所以是空字典
Martin 22 ('CN', 'Python', 1) {'country': 'CN', 'course': 'Python'}

嵌套函数

通俗来说就是函数体里面包含函数

name = 'Martin'

def change_name1():
    name = 'Martin2'

    def change_name2():
        name = 'Martin3'
        print('第三层打印', name)

    change_name2()
    print('第二层打印', name)

change_name1()
print('第一层打印', name)

# 结果
第三层打印 Martin3
第二层打印 Martin2
第一层打印 Martin

匿名函数

匿名函数就是不需要显示定义的函数

def Calc(x,y):
    result = x**y
    return result

print(Calc(2,3))


换成匿名函数:
calc = lambda x,y:x**y
print(calc(2, 3))

当匿名函数与其他函数配合使用时会很方便高效

res = map(lambda x:x**2, [2, 3, 4, 5])
for i in res:
    print(i)

结果
4
9
16
25

高阶函数

变量能指向函数,函数的参数能接收变量,那么一个函数就可以接收另一函数作为参数,这种函数就称之为高阶函数。

def add(x, y, f):
    return f(x)+f(y)
res = add(3, -6, abs) # abs传递给f,则f()就相当于abs()
print(res)

结果
9

只需满足一下任意一个条件,就是高阶函数

  • 接收一个或多个函数作为输入
  • return 返回另外一个函数

递归

在函数内部调用自身的函数叫做递归函数

def calc(n):
    print(n)
    if int(n / 2) == 0:
        return n
    else:
        return calc(int(n/2))

calc(10)

结果
10
5
2
1

内置函数

在这里插入图片描述详见:http://www.runoob.com/python/python-built-in-functions.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值