python函数基础

这篇博客深入介绍了Python函数的基础,包括函数的定义、参数详解、return语句的使用以及lambda匿名函数的概念。通过练习与问题解答,帮助读者巩固理解。

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

python函数基础

1.函数的定义

函数就是对代码进行一个封装。把实现,某一功能的相同代码,进行封装到一起。下次需要使用时,就不需要再进行代码编写,直接调用即可。
好处:
增加代码的复用性,增加代码可读性,减少代码的编写量,降低维护成本 
函数可以看成,解决某类问题的 '工具'
定义方法:
def function_name(a)print(a)

2.python中函数的参数详解

1.必备参数:参数没有默认值
2.默认参数:参数有默认值,调用函数是可以传参也可以不传参,不传参时,参数是默认值
3.不定长参数: 可在定义时定义,也可在传入时传入
    定义方法: def function_name(*args,**kwargs):
    *args 将传入参数包装成元组
    **kwargs将传入参数包装成字典
3.return
return有两个作用:
1.用来返回函数的运行结果,或者调用另外一个函数。比如max()函数
2.函数结束的标志。只要运行了return,就强制结束了函数。return后面的程序都不会被执行。           
如果函数中没有写return,其实函数运行结束时,默认执行了 return None
return语句的位置是可选的,不是固定出现再函数的最后,可以自定义在函数中的任何地方。                 
4.lambda匿名函数
没有函数名的函数
g = lambda x:x+1
lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解 
lambda的应用场景:
1.有些函数如果只是临时一用,而且它的业务逻辑也很简单时,就没必要用def 来定义,这个时候就可以用lambda。
2.函数都支持函数作为参数,lambda 函数就可以应用
练习与总结:
###函数基础

def iterfun(a):
     for i in a:
          print(i)
iterfun([1,2,3,4])      
#函数的定义  命名:驼峰规则

##参数形式
#1不传参
def fun1():
     print('不能传参数')
fun1()
#2必备参数
def fun2(a):
     print('必须传参数:',a)
fun2(2)
#3默认参数
def fun3(b=2):
     print('默认参数:',b)  #可传可不传
fun3(b=3)
fun3()
#可选参数
def fun4(*arg):  
     print('可传0个到多个:',arg)#可传0个到多个 包装成元组
#fun4(*[1,2])    加个* ,就把里面的壳去掉(解包)
fun4(1,2)
fun4(*[1,2])
#关键字参数
def fun5(a,b):    #定义的时候是跟必备参数一样的
     print(a,b)   #必须放到最后
fun5(a=1,b=2)
fun5(1,2)
def fun6(**kwarg):
     print('关键字参数',kwarg)# 可传0个到多个 包装成字典
fun6(a=1,b=2)  #遵循变量命名规则
fun6(**{'a':1})   #必须是字符串
##参数混合的时候   关键字参数放最后 根据定义的顺序 确保必备参数只能拿到值,并且只能一个
#必备参数+默认参数
def fun7(a,b=1):   #默认参数必须在必备参数的后面
     print(a,b)

def fun8(b,m=1,*a):
     print(b)
     print(m)
     print(a)

def fun8(*a,b,m):
     print(a,b,m)
     print(b)

def fun9(*a,b,m=1):
     print(a,b,m)
     print(b)

###      return的作用  用来返回函数的运行结果

def fun13(a,b):
    if a>b:
        return a

a=fun13(2,1) #  a=2

def fun11(a,b):
    if a>b:
        print(a)
b=fun11(2,1)   #b=none
print(b)
def fun10(a,b):
     #return('我不下去了')  #函数结束的标志 可以放在任何地方
     if a>b:
          print(a)
          return('我不下去了')  #函数结束的标志
fun10(2,1)
def fun12(a,b):
     #return('我不下去了')  #函数结束的标志 可以放在任何地方
     if a>b:
          print(a)
          #return('我不下去了')  #函数结束的标志
##lambda  匿名函数

def fun0(x):
     return(x+1) 
fun0(5)
g = lambda x,y:x*y
#g 跟fun0 都是函数体  调用需加()
#  :后面的相当于return
print(g(1,2))

输出结果:

==========
1
2
3
4
不能传参数
必须传参数: 2
默认参数: 3
默认参数: 2
可传0个到多个: (1, 2)
可传0个到多个: (1, 2)
1 2
1 2
关键字参数 {'a': 1, 'b': 2}
关键字参数 {'a': 1}
2
None
2
2
>>> 
问题解答:
#1.找到1-100内的质数,用while和for来做,结束之后打印“搜索结束”.
#(质数:只能被1和自己整除,如2,只有除以1和2才能整除)
#解答:
from math import sqrt
def BuildPrime(n):
    cnt = 0
    print('1-100内的素数是:')
    for i in range(2,n+1):
        ok =True
        k = int(sqrt(i + 1))  
        for j in range(2,k+1):
            if (i%j == 0):
                ok = False
                break
        if ok:
            cnt += 1
            print('%2d'%i,end=' ')
    print('\n搜索结束!!!!\n')
def BuildPrime1(n):
    print('1-100内的素数是:')
    i=2
    while i<(n+1):
        for j in range(2,i):
            if (i%j == 0):
                break
        else:
            print('%2d'%i,end=' ')
        i+=1
    print('\n搜索结束!!!!\n')
#函数调用
BuildPrime(100)
BuildPrime1(100)
#判断一个数是不是质数
def IsPrime(n):
    k = int(sqrt(n + 1))  
    for j in range(2,k+1):
        if (n%j == 0):
            return False
    return True
def show():
    while True:
        a = input('请输入一个数整数:\n')
        if a.isdigit():
            a = int(a)
            if IsPrime(a):
                print('%d是质数!!!'%a)
            else:
                print('%d不是质数!!!'%a)

        else:
                print('不是整数请重新输入-----')
        if input('任意键继续|退出请按q:!!!!\n') =='q':
            print('判断完毕!!')
            break
##函数调用        
show()
#2.定义一个函数,能够输入字典和元组。将字典的值(value) 和 元组的值交换,交换结束后,打印并且返回 字典和元祖。
#解答:
def exchange(*args,**kwargs):
    tu = list(args)
    dic = kwargs
    print(tu,dic)
    j=0 #元组的索引值
    if len(dic) <= len(tu): # 字典len小于或者等于tu时
        for i in dic: # 遍历字典的key(键)–》i
            print(i,dic[i],tu[j])
            dic[i],tu[j] = tu[j],dic[i]
            j+=1
        for k in range(j,len(tu)):
            dic.setdefault(tu[k],'')
    else: #当字典元素多于元组时
        k=0
        while k < len(tu):
            for i in dic:
                dic[i],tu[k] = tu[k],dic[i]
            k+=1
    tu = tuple(tu)
    print(tu,dic)
exchange(1,2,3,4,5,6,a=111,b=222,c=333,d=444)
exchange(1,2,3,a=111,b=222,c=333,d=444)
#3.定义一个函数,必须包含4种参数形式,然后打印这4个参数,最后返回'OK'。
#解答:
def fun(a,*b,c=1,**d):
    print(a)
    print(b)
    print(c)
    print(d)
    return 'OK'
show = fun(1,*[1,2,3],c=2,**{'key':123})
print(show)
def fun1(*args,b,m=2,**kwargs):
    print('必备参数',b)
    print('默认参数',m)
    print('arg:',args)
    print('kwargs:',kwargs)
    return 'OK'
fun1(1,2,3,4,5,m=6,b=7,c=1)

输出结果:

1-100内的素数是:
 2  3  5  7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97 
搜索结束!!!!

请输入一个数整数:
3
3是质数!!!
任意键继续|退出请按q:!!!!

请输入一个数整数:
6
6不是质数!!!
任意键继续|退出请按q:!!!!

请输入一个数整数:
97
97是质数!!!
任意键继续|退出请按q:!!!!

请输入一个数整数:
73
73是质数!!!
任意键继续|退出请按q:!!!!

请输入一个数整数:
8
8不是质数!!!
任意键继续|退出请按q:!!!!
q
判断完毕!!
[1, 2, 3, 4, 5, 6] {'a': 111, 'b': 222, 'c': 333, 'd': 444}
a 111 1
b 222 2
c 333 3
d 444 4
(111, 222, 333, 444, 5, 6) {'a': 1, 'b': 2, 'c': 3, 'd': 4, 5: '', 6: ''}
[1, 2, 3] {'a': 111, 'b': 222, 'c': 333, 'd': 444}
a 111 1
b 222 111
c 333 222
d 444 333
a 1 2
b 111 1
c 222 111
d 333 222
a 2 3
b 1 2
c 111 1
d 222 111
(444, 333, 222) {'a': 3, 'b': 2, 'c': 1, 'd': 111}
1
(1, 2, 3)
2
{'key': 123}
OK
必备参数 7
默认参数 6
arg: (1, 2, 3, 4, 5)
kwargs: {'c': 1}
>>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

泸州月

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

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

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

打赏作者

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

抵扣说明:

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

余额充值