Python 基础学习2

一、python 函数

1.1 函数定义及调用

#函数的定义及调用
def get_sum(num):
    s=0;
    for i in range(1,num+1):
        s=s+i;
    print(f'1到{num}累计和:{s}')

get_sum(10)
get_sum(100)
get_sum(1000)

1.2 函数参数传递

1.2.1 位置传参

#函数的参数传递-位置,关键字传参
def getstr (name,age):
    print(f'祝{name}生日快乐,天天开心');
    print(f'{age} 生日快乐')

#位置传参
getstr('康康',18)

1.2.2 关键字传参

位置,关键字混合传参时,位置传参必须在前。

#函数的参数传递-位置,关键字传参
def getstr (name,age):
    print(f'祝{name}生日快乐,天天开心');
    print(f'{age} 生日快乐')

#关键字传参
getstr(name='康康',age=18)

#位置,关键字混合传参,位置传参必须在前
getstr('康康',age=18)

1.2.3 默认值传参

定义函数时,位置参数必须在前,默认值参数在后。

#函数的参数传递-默认值传参
def getstr (name='哇哈哈',age=18):
    print(f'祝{name}生日快乐,天天开心');
    print(f'{age} 生日快乐')

#默认值传参
getstr()

#位置,默认值传参
getstr('康康')

#关键字,默认值传参
getstr(name='康康')

#默认值参数
def fun1 (a=1,b=2):
    pass;

#位置参数必须在前,默认值参数在后
def fun2(a,b=2):
    pass;

#报语法错误
#def fun3(a=1,b):
#    pass;

1.2.4 可变参数传参

  • 个数可变的位置传参:定义函数参数时,参数前加一颗星*,调用时列表前加*可进行解包
  • 个数可变的关键字传参:定义函数参数时,参数前加两颗星**,调用时字典前加**可进行解包
#1、个数可变的位置传参
def fun1 (*para):
    print('参数类型:',type(para));
    for item in para:
        print(item)

fun1(1)
fun1(2,'康康')
fun1(1,2,3)
fun1(1,2,3,4)

#调用时,在参数前加一颗星,将列表进行解包
d=[1,2,3,4,5]
fun1(d)
fun1(*d)

#2、个数可变的关键字传参
def fun2 (**para):
    print('参数类型:',type(para));
    for key,value in para.items():
        print(key,'----',value)

fun2(name='whh')
fun2(name='whh',age=18,heigh=165)

#调用时,在参数前加两颗星,将字典进行解包
d={'name':'康康','age':181}
#fun2(d)
fun2(**d)

运行结果如下: 

1.3 函数返回值

函数返回值可以有0,1,多个,当有多个返回值时,结果是元组类型,想让返回值解包可多个变量接收即可。

#函数返回值
print('函数无返回值')
def fun1 (a,b):
    r=a+b;

fun1(1,2)
print(fun1(1,2))

print('函数一个返回值')
def fun2 (a,b):
    r=a+b;
    return r;

fun2(1,2)
print(fun2(1,2))
res=fun2(fun2(1,2),2)
print(res)

print('函数多个返回值')
def fun3 (num):
    odd=0;
    even=0;
    sum=0;
    for i in range(1,num+1):
        if i%2!=0:
            odd=odd+i;
        else:
            even=even+i;
        sum+=i;
    return odd,even,sum;

fun3(10)
print(fun3(10))
res=fun3(10)
print(type(res),res)
a,b,c=fun3(10)
print('返回值解包:',a,b,c)

运行结果如下: 

1.4 匿名函数

python 使用 lambda 来创建匿名函数。

  • lambda只是一个表达式,函数体比def简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法:

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

lambda [arg1 [,arg2,.....argn]]:expression
#匿名函数
s=lambda a,b:a+b;
print(type(s))
print(s(2,3))

lis=[
    {'name':'康康1','score':85},
    {'name':'康康2','score':80},
    {'name':'康康3','score':90},
    {'name':'康康4','score':100},
]
lis.sort(key=lambda x:x.get('score'),reverse=True)
print(lis)

######### 运行结果:
<class 'function'>
5
[{'name': '康康4', 'score': 100}, {'name': '康康3', 'score': 90}, {'name': '康康1', 'score': 85}, {'name': '康康2', 'score': 80}]

Process finished with exit code 0


未完待续~~~    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值