python——函数

这篇博客详细介绍了Python中的函数,包括函数定义、参数、返回值、函数嵌套、全局与局部变量、可变与不可变全局变量、内部函数、闭包、装饰器、匿名函数lambda、内置函数以及递归函数的应用,内容涵盖了从基础到高级的各种概念和实践案例。
摘要由CSDN通过智能技术生成

目录

1.函数定义、参数: 

2.函数返回值:

3.函数嵌套案例:

4.全局变量与局部变量

5.可变与不可变的全局变量 与 是否需要加global关键字的问题

6.内部函数

7. 闭包

闭包应用:

闭包同级访问:

 总结:

8. 装饰器(在闭包的基础上)(为了修饰函数的)

定义: 

案例:含参数装饰器、万能装饰器

多层装饰器:

带参数的装饰器:

装饰器应用:登录+付款

9. 匿名函数

10. 内置函数

11. 递归函数



 

1.函数定义、参数: 

# 函数可以增强代码的模块化和提高代码的重复利用率

'''
函数定义

1.格式:
def 函数名([参数,参数...])
    函数体

2.def不可以省略,函数名()绑定的
3.函数体部分注意缩进
4.函数名命名:字母,数字,下划线
'''

# 产生10个随机数
import random


# 无参
def generate_random():
    for i in range(10):
        ran=random.randint(1,20)
        print(ran)


# 调用函数
generate_random()

# 运行:
# 右键-run
# 右上角三角符号


# 有参
def generate_random(num):
    for i in range(num):
        ran=random.randint(1,20)
        print(ran)


generate_random(20)


# 判断是否登录成功
def login(uname,pwd):
    username='admin'
    passwd='123'
    for i in range(3):
        if uname==username and pwd==passwd:
            print('登录成功')
            break
        else:
            print('登录失败')
            uname = input('请输入用户名:')
            pwd = input('请输入密码:')


uname = input('请输入用户名:')
pwd = input('请输入密码:')
login(uname,pwd)



# 求最大值
def maxvalue(a):
    max=a[0]
    for i in range(len(a)-1):
        if max<a[i+1]:
            max=a[i+1]
    print(max)


maxvalue([1,3,5,6,2])


def maxvalue(a):
    max=a[0]
    for i in a:
        if max<i:
            max=i
    print(max)


maxvalue([1,3,5,6,2])
maxvalue((1,3,5,6,2))



# 排序
def sort(nums):
    # 判断类型
    if isinstance(nums,tuple):
        print('不能排序')
    else:

        for i in range(len(nums) - 1):
            for j in range(0, len(nums) - 1 - i):
                if nums[j] > nums[j + 1]:
                    nums[j], nums[j + 1] = nums[j + 1], nums[j]

        print(nums)


sort([3,1,5,7,2])


# 可变参数
def add(*args):
    print(args)


add()
add(2)
add(2, 3, 4, 5)
# 结果:
# ()
# (2,)
# (2, 3, 4, 5)


def add(*args):
    sum=0
    if len(args)>0:
        for i in args:
            sum+=i
        print(sum)
    else:
        print('无元素可计算')


add()
add(2)
add(2, 3, 4, 5)
# 无元素可计算
# 2
# 14


# 可变+不可变参数(固定参数1,固定参数2,可变参数)
def add(name,*args):
    sum=0
    if len(args)>0:
        for i in args:
            sum+=i
        print(name,sum)
    else:
        print('无元素可计算')


add('张一山',2, 3, 4, 5)
# 张一山 14

print('*'*50)


# 可变参数+关键字参数
# 关键字参数:参数形式为key=value

def add(a, b=10):
    res = a+b
    print(res)


add(3)
add(3, 5)
# 13
# 8


def add(a,b=10,c=5):
    res = a+b+c
    print(res)


add(3)
add(3, 5)
add(3, 5, 1)
# 18
# 13
# 9
add(3, c=5)
# 18

# kwargs:key word args
# 关键字参数:调用的时候赋值必须key=value的形式


def fun(**kwargs):   # 装包
    print(kwargs)


# 调用:直接传关键字
# 将关键字装包
fun(a=1,b=2,c=3)  # 转成字典形式保存
# {'a': 1, 'b': 2, 'c': 3}


# 调用:已知有一个字典的时候
# 先拆包,后装包
lans={'1':'python','2':'java','3':'go'}
fun(**lans)  # 此处拆包:'1'python,'2'='java','3'='go'
# 结果:{'1': 'python', '2': 'java', '3': 'go'}
# ps:
# 传递实参是时候用到**变量名时候,
# 会将字典进行拆成关键字参数的形式


# 固定+可变+关键字参数
def bb(a,b,*c,**d):
    print(a,b,c,d)


bb(1,2)  # 1 2 () {}
bb(1,2,3,4,5)  # 1 2 (3, 4, 5) {}
bb(1,2,x=111,y=222) # 1 2 () {'x': 111, 'y': 222}
bb(1,2,3,x=100) # 1 2 (3,) {'x': 100}


# 练习

# test1:
def test1(a,*args):
    print(a,args)


test1(1,[12,3,4])
test1(1,2,3,[33,22,11])
test1(1,3,(3,2))
test1(1,2,(3,2),6)
# 结果:
# 1 ([12, 3, 4],)
# 1 (2, 3, [33, 22, 11])
# 1 (3, (3, 2))
# 1 (2, (3, 2), 6)


# test2:
def test2(a,b=1,c=2,**kwargs):
    print(a,b,c,kwargs)


test2(1)
test2(1,b=2)
test2(1,2,3,x='python')
# 1 1 2 {}
# 1 2 2 {}
# 1 2 3 {'x': 'python'}


# test3
def test3(a,*b,**c):
    print(a,b,c)


list1=[1,2,3,4,5]
dict1={'1':'张一山','2':'杨紫','3':'尤浩然'}  # key必须加引号
test3(1,list1)  # 1 ([1, 2, 3, 4, 5],) {}
test3(1,*list1,**dict1)  # 1 (1, 2, 3, 4, 5) {'1': '张一山', '2': '杨紫', '3': '尤浩然'}


'''
有参数函数总结:
1.普通参数
def func(a,b)
    pass

2.可变参数
(1)
def func(*args)
    pass
    
func(a,b,c)
func(*[a,b,c])

(2)
def func(**kwargs)
    pass


func(a=x,b=y)
func(**{a=x,b=y})

(3)
func(*args,**kwargs)
func(a,b,*args,**kwargs)

3.默认值参数
def func(name,age=10)
    pass
    
'''

2.函数返回值:

# 函数的返回值
# return

# 一个返回值
def func(name,age):
    print(name,age)
    return 'hh'


# func('mico',12)  # mico 12
a=func('mico',12)
print(a)  # hh

print('------------')

# 多个返回值
def func(name,age):
    return name,age

a,b=func('mico',12)  # 要有变量去接收返回值
print(a,b)  # mico 12

3.函数嵌套案例:

案例一: 

# 案例:函数套用(登录+购物车模块为例)

isLogin = False # 默认是没有登录的


# 登录函数
def login():
    name = input('请输入用户名:')
    pwd = input('请输入密码:')
    if n
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于Python的计算思维训练主要涉及到函数的概念。函数Python中的基本编程结构,通过函数可以将一系列操作封装起来,提高代码的复用性和可维护性。 首先,函数的定义和调用是计算思维中重要的一部分。学习者需要理解如何使用def关键字定义函数,并且学会传入参数和返回数值。这能够帮助他们将复杂的问题拆分成更小的部分,然后再分别解决。 其次,函数的参数和返回值的运用是培养计算思维的有效途径。学习者需要理解函数的参数可以是任意类型的数据,也可以是默认值,还可以是可变数量的参数。同时,他们需要掌握函数可以返回单个数值、多个数值或者其他函数的能力。 此外,函数的嵌套和递归是培养计算思维的重要方法。学习者需要了解函数可以在其内部调用其他函数,从而实现更复杂的功能。而递归则可以帮助他们理解问题的分治和循环求解策略。 最后,函数的高阶用法和闭包也是培养计算思维的关键。学习者需要明白函数可以作为参数传递给其他函数,也可以作为返回值被另一个函数使用。此外,他们还需要掌握闭包的概念和运用,以便更好地理解函数的作用域和生命周期。 通过学习和实践以上内容,学习者不仅可以掌握Python函数的用法,还可以培养出较强的计算思维能力,从而更好地应对复杂的问题和挑战。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值