课堂笔记(函数)

一,函数
1.无参函数
(1)定义函数

def 函数名():
	代码
'''函数的调用'''
def printinfo():
    print('-'*10)
    print('人生苦短,我用python')
    print('-'*13)
printinfo()

在这里插入图片描述

2.有参函数

def add2num(a,b):
    c = a + b
    print(c)
add2num(13,6)

在这里插入图片描述
3.传参顺序

def add2num(a,b,d):
    c=a+b-d
    print(c)
add2num(11,22,10)#位置传参
add2num(a=11,b=22,d=10)#关键字传参
#关键字参数不能写在位置传参的前面

def add2num(a,b,d=5):
    c=a+b-d
    print(c)
add2num(11,22,10)#定义与下方不符时,默认用下方替代上方,d最终取10

函数的返回值
return

def test(a,b):
    return a+b,a-b#return还是结束函数,运行到return会结束
c,d =test(1,2)
print(c,d)

函数的嵌套

def testB():
    print('B,start')
    print('略')
    print('B,end')
def testA():
    print('A,start')
    testB()
    print('A,end')


局部变量和全局变量



c=5#全局变量,作用域整个文件
def two_sum(a,b):
    global c
    c=3#局部变量,作用域函数内部
    print(a+b-c)
two_sum(4,9)


四、函数的返回值(一)
1.函数间的数据共享
全局变量在局部使用并且更改数据保存,在另一个函数里面直接使用。

g_num=0
def test1():
    global g_num
    g_num=100
def test2():

    print(g_num)
test1()
test2()

在这里插入图片描述
2.函数的嵌套使用
在这里插入图片描述
3.默认返回类型为元组,也可以返回为其他类型

def li():
    return [1,2]
a = li()
print(a)
print(type(a))

在这里插入图片描述
函数的返回值(二)
1.return除了能将数据返回之外,还有一个隐藏功能:结束函数
在这里插入图片描述
2.一个函数返回多个值

def fun(a,b):
    shang = a//b
    yushu = a%b
    return shang,yushu#默认是元组
result = fun(5,2)
print(result)#输出(2,1)

在这里插入图片描述
五、函数的参数
1.不定长参数
有时可能需要一个函数能处理比当初声明更多的参数,这些参数叫做不定长参数,声明时不会命名
➢*args 存放所有未命名的变量参数,args为元组
➢ **kwargs 存放命名参数,即形如key=value的参数,kwargs为字典

def fun(a,b,*args,**kwargs):

    print('a= %d'%a)
    print('b=%d'%b)
    print('*arge:')
    print(args)
    print('kwargs:%s'% kwargs)
fun(1,2,3,4,5,m=6,n=7,p=8)

c=(3,4,5)
d={'m':6,'n':7,'p':8}
fun(1,2,*c,**d)#注意元祖与字典的传参方式
fun(1,2,c,d)

student={'name':'ggg','age':19}
a,b=student
print(student[a])
print(b)

在这里插入图片描述
在这里插入图片描述
2.顺序
缺省参数、*args、关键字参数、**kwargs

'''➢ 定义一个函数接收多个参数,默认值b=1,函数的参数未知个数,把接收的所有参数加起来
def info(*args,b=1,**kwargs):
    s=0
    for i in args:
        s+=i
    s+=b
    for j in kwargs.values():
        s+=j
    print(s)
info(1,2,3,4)

tu=('小张','小刘')
a,b=tu
print(a)
print(b)#元组的拆包


a=1
b=2
a,b=b,a
print(a)
print(b)#a,b值相互转换

在这里插入图片描述
七、匿名函数
➢ 用lambda关键词能创建小型匿名函数

sum = lambda arg1,arg2:arg1+arg2
print('value of total:%d'%sum(10,20))
print('value of total:%d'%sum(22,3))

在这里插入图片描述
应用场景
1、函数作为参数传递

def fun(a,b,opt):
    print('a=%s'%a)
    print('b=%s'%b)
    print('result=%s'%opt(a,b))
fun(1,2,lambda x,y:x+y)

stus=[{'name':'zhangsan','age':18},{'name':'lisi','age':19},{'name':'wangwu','age':17}]
func=lambda x:x['name']
stus.sort(key=func)
print(stus)
stus.sort(key=lambda x:x['age'])
print(stus)

li=['姓名','性别','age']
li2=['sam','man',18]
dic={}
for i,j in zip(li,li2):
    dic[i]=j
print(dic)
print(len(dic))

在这里插入图片描述
2、作为内置函数的参数(排序的内置函数sort)

3、按name排序

4、按age排序

八、三元表达式
1、定义
➢ 三元表达式实现的效果就是,条件成立的情况下返回一个值,不成立的情况下返回另外一个值

def max2(x,y):
    # if x > y:
    #     return x
    # else:
    #     return y
    return x if x > y else y

➢res = 条件成立的情况下返回的值 if 条件 else 条件不成立的情况下返回的值三 元表达式

name=input('your name:').strip()
res='nb' if name == 'youyong' else 'sb'
print(res)

九、列表和字典生成式
1、列表生成式

names=['lxx','zxx','wxx']
l=[]
for name in names:
    res=name + '_DSB'
    l.append(res)
print(l)
l=[name + '_DSB' for name in names]
print(1)

在这里插入图片描述
2、字典生成式

dic = {}
li =['姓名','年龄','性别','QQ']
li2 = ['kai',18,'woman',1251737072]
for i,k in zip(li,li2):
    dic[i] = k
print(dic)
print(len(dic))#len是内置函数,查看元素个数
items = [('name','egon'),('age',18)]
dic = dict(items)
print(dic)

在这里插入图片描述

keys=['name','age','sex']
vals=['jane',18,'female']
dic={}
for i,k in enumerate(keys):#enumerate里的i是索引
    dic[k]=vals[i]
print(dic)
dic={k:vals[i] for i,k in enumerate(keys)}#enumerate里的i是索引
print(dic)

for i,k in zip(keys,vals):
    dic[i]=k
print(dic)
dic={i:k for i,k in zip(keys,vals)}
print(dic)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值