Python基础-函数

本文介绍了Python函数的基础,包括函数的定义、调用、参数使用,特别是动态参数的处理方式,如`*args`和`**kwargs`。还提到了一些常用的内置函数,如进制转换函数和枚举函数等。最后,给出了一个示例,演示如何定义一个根据参数进行正向或反向排序的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


函数:函数的作用就是解决代码的重复使用

函数基础

1、函数的定义

def my_add(num1, num2):   # 函数头:def 关键字 my_add函数名
    """                   #      num1, num2 参数
    计算两个数的和          # 函数接口:用来说明函数的作用
    :param num1: 第一个数  #     就和注释一样注意缩进
    :param num2: 第二个数  #   param 就是参数的意思
    :return: 和
    """
    res = num1 + num2    # 函数体:通过语句实现功能的
    return res           # 返回值:return 关键字    res 待返回的值
                         #         默认返回None

2、函数的调用

def my_sum(num1, num2):
   res = num1 + num2
   return res
y = my_sum(5, 6)
print(y)            # 11

def my_sum(a):
    for i in a:
        print(True if i > 5 else False)
L = [1, 3, 5, 7, 9]
my_sum(L)                # 只要定义了函数 后面都可以用
                        #  只用改变值

3、参数

def my_sum(a, b, c):       #也可以c = 666
    res = a + b + c
    print(res)

my_sum(11, 22, 33)
#概念
1.a, b, c:形式参数,形参,必须传入值,必须参数
2.11,22,33:实际参数,实参,按照位置关系一一对应位置参数
3.c=666: 默认参数  只要传入参数就覆盖掉默认参数
         默认参数必须写在必须参数后面
4.my_sum(c=11, a=22, b=33):关键字参数,函数参数会按照关键字去找对应的值,并不要求一一对应

4、动态参数

函数接收参数的个数不确定,动态

一般写法:def f(*args, **kwargs)

  • *args: 所有的位置参数都会被args接收生成以个元祖,如果里面有形参会优先满足形参,吧多余的参数才会被args接收。动态参数必须放在形参后面
def my_sum(*args):
    print(args)    #(11,)
    for i in args:    #可以拿到所有参数
my_sum(11)
my_sum(11, 22)
my_sum(11, 22, 33)

#如果指定参数
def my_sum(a, *args):
    print(a)           #11
    print(args)        #(22, 33)
my_sum(11, 22, 33)
  • **kwargs:所有的关键字参数都会被kwargs接收生成一个字典如果有形参和afgs一样
def my_sum(**kwargs):
    print(kwargs)  #{'a': 11, 'b': 22, 'c': 33}

my_sum(a=11, b=22, c=33)

5、常见的内置函数

  • 常用的方法
L = [2, 8, 5]
print(len(L))     #长度
print(min(L))     #最小值
print(max(L))     #最大值
print(sorted(L))  #排序 
print(sorted(L, reverse=True)) # 倒序
print(sum(L))     #求和
  • 进制转换函数
print(bin(12))    #二进制 0b1100
print(oct(12))    #八进制  0o14
print(hex(12))    #十六进制 0xc
print(ord('D'))   #字符转ASCII码 68
print(chr(97))    #ASCII码转字符 a
  • enumerate 枚举 返回一个可以枚举(遍历)的对象(for,iter)
L = ['a', 'b', 'c']
enumerate(L)
for i in enumerate(L): 
    print(i)           #(0, 'a')(1, 'b')(2, 'c')
print(dict(enumerate(L))) # 可以转换成字典
    
  • eval(): 1.取出字符串中的内容2.将取出的内容当成有效的表达式来执行,并且有返回值(识别的是表达式,并有返回值)
a = '1 + 2 +3'
print(eval(a))      #6
  • exec(): 执行字符串,没有返回值
b = """
x + y +z
"""
x = 1
y = 5
z = 8
print(eval(b))    #14
print(exec(b))    #None

c = """
su = x + y + z
print(su)
"""
exec(c)            #14
  • filter(): 过滤器 取出每一个可迭代对象去执行函数,符合条件的留下,不符合的删除。 i = filter(函数, 可迭代对象
def f(x):
    return x > 10
L =[2, 10, 20, 5, 13]
res = filter(f, L)
print(list(res))           #[20, 13]
  • map:取出每一个可迭代对象去执行函数,对数据的处理
def f(x):
    return x // 2

L = [2, 10, 20, 5, 13]
print(list(map(f, L)))     #[1, 5, 10, 2, 6]
  • zip:
L1 = ['k1', 'k2', 'k3']
L = [2, 10, 20]
print(dict(zip(L1, L)))  
#{'k1': 2, 'k2': 10, 'k3': 20} 自动转换成一个字典

例:
定义个函数,可以对输入的数据进行排序,通过参数来决定正向排序还是反向排序

def my_sorted(*args, flag=1):
    if flag == 1:
        a = sorted(*args, reverse=False)
        print(a)
    elif flag == 2:
        b = sorted(*args, reverse=True)
        print(b)
    else:
        print("您的输入有误")
L = [1, 4, 2, 5, 9, 7]
my_sorted(L, flag=1)       #[1, 2, 4, 5, 7, 9]
my_sorted(L, flag=2)       #[9, 7, 5, 4, 2, 1]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值