python函数(下)

目录

一、局部变量与全局变量

​二、函数的返回值

三、递归函数和匿名函数

四、test


一、局部变量与全局变量

•局部变量

  局部变量,就是在函数内部定义的变量

  不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响

  作用 : 临时保存数据需要在函数中定义变量来进行存储,

•全局变量

  一个变量,既能在一个函数中使用,也能在其他的函数中使用

 

 二、函数的返回值

 在python中我们怎样返回多个值?

python中可以返回多个值:

格式:def 函数名(参数名1,参数名2.....) :

  函数执行代码

  函数执行代码

  .........

  return 返回值1,返回值2,......

调用:

依次存返回值变量1,变量2,.... = 函数名(参数值1,........)

缺省参数
}调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
}格式:def 函数名(参数名1,参数2=默认值,....参数n=默认值): 
}调用时:函数名(值1)

  注意:带有默认值的参数一定要位于参数列表的最后面。

    def usrinfo(name,age=25):

      print("Name = %s"%name)

print("age = %d"%age)

  usrinfo('zhangsan')

  Name = zhangsan

  age = 25

不定长参数

格式:def 函数名(参数名1,*args,**kwarg): 

调用时:函数名(值1)

注意:加*表示args可以存放所有未命名的变量参数,args为元组

          加**表示kwarg可以存放命名参数,即形如key=value的参数, kwargs为字典。

例子:

 

引用传参

Python中函数参数是引用传递(注意不是值传递)。对于不可变类型,因变量不能修改,所以运算不会影响到变量自身;而对于可变类型来说,函数体中的运算有可能会更改传入的参数变量。

例子:若将a +=a  修改成 a = a + a ,再次观察效果,讨论原因

 

"""
如何返回多个值
函数内部看到return 会跳出函数


def num(a,b):
    c = a + b
    d = a - b

    return c
    print("-------")
    return d


c = num(20,10)
d = num(20,10)

print(c,d)

"""

def num(a,b):
    c = a + b
    d = a - b

    return c , d

num1, num2 = num(20,10)

print(num1,num2)
def num(a,b,*args, **kwargs):
    print(a)
    print(b)
    print(args)
    print(kwargs)


num(1,2,3,4,5,6,name = "小红",age = 18)

 

"""
参数拥有默认值, 缺省参数会放在最后面
"""

def user_info(name, age = 16):
    print("学生的名字是%s" % name)
    print("学生的年龄是 %s" % age)

user_info("小张",20)

def user(*args)

 

"""
参数拥有默认值, 缺省参数会放在最后面
"""

def user_info(name, age = 16):
    print("学生的名字是%s" % name)
    print("学生的年龄是 %s" % age)

user_info("小张",20)

 

 

三、递归函数和匿名函数

递归函数

如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。

例子:我们来计算阶乘 n! = 1 * 2 * 3 * ... * n

"""

计算阶乘
n! 3x2x1
"""

#通过循环实现

# def cal_num(n):
#
#     i = 1
#
#     rest = 1
#
#     while  i <= n:
#
#         rest *= i
#
#         i+= 1
#
#     return rest
# 
# ret = cal_num(10)
# print(ret)

# 通过递归方式来实现

def cal_num(n):
    if n >= 1:
        rest = n * cal_num(n-1)
    else:
        rest = 1

    return  rest
ret = cal_num(3)
print(ret)





 

 

匿名函数

用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。

lambda函数的语法只包含一个语句,如下:

      lambda [arg1 [,arg2,.....argn]]:expression

例子:求两个数据的和 

>>> sum = lambda a,b:a+b

>>> sum(45,23)

68

 

 

# def sum(a,b):
#     c = a+b
#     return  c
#
# c =sum(10,20)
# print(c)

c = lambda a,b : a+b
print(c(10,20))

四、test

  • 1、 写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
    2、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
    3、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者
    4、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
    5、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。PS:字典中的value只能是字符串或列表

# 1、 写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。
def size(obj):
    if len(obj) > 5:
        return True
    else:
        return False
if size("abcd") == True:
    print("大于5")
else:
    print("不大于5")
# 2、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。
def kong(aaa):
    for i in aaa:
        if i == ' ':
            return True
    return False
print(kong("qqw qwq"))
print(kong([1,2,3,4,5]))
# 3、写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,
# 并将新内容返回给调用者
def second(li):
    return li[0:2]
print(second([1,2,3]))
print(second([1,2]))
print(second([1]))
# 4、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,
# 并将其作为新列表返回给调用者。
def www(lisu):
    return lisu[0::2]
print(www([1,2,3,4,5,6,7]))
print(www(("123",1,2,3,4,5)))
# 5、写函数,检查传入字典的每一个value的长度,如果大于2,
# 那么仅保留前两个长度的内容,并将新内容返回给调用者。
# PS:字典中的value只能是字符串或列表
def ccc(dic):
    asa = {}
    for key,value in dic.items():

        if(len(dic) > 2):
            asa[key] = value
            if(len(asa) == 2):
                return asa
        else:
            return dic

print(ccc({"k1":"V1","111":"222",'3':'4'}))

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

宇努力学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值